{"id":11363,"date":"2021-07-29T14:57:42","date_gmt":"2021-07-29T07:57:42","guid":{"rendered":"https:\/\/blog.tinohost.com\/?p=9482"},"modified":"2021-07-29T14:57:45","modified_gmt":"2021-07-29T07:57:45","slug":"rpc-la-gi","status":"publish","type":"post","link":"https:\/\/tino.vn\/blog\/rpc-la-gi\/","title":{"rendered":"RPC l\u00e0 g\u00ec? C\u00e1c th\u1ee9c ho\u1ea1t \u0111\u1ed9ng c\u1ee7a RPC"},"content":{"rendered":"\n<p><strong>Trong l\u0129nh v\u1ef1c l\u1eadp tr\u00ecnh, \u1ee9ng d\u1ee5ng c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng tr\u00ean nhi\u1ec1u ti\u1ebfn tr\u00ecnh. C\u00e1c ti\u1ebfn tr\u00ecnh n\u00e0y \u0111\u00f4i khi \u0111\u01b0\u1ee3c ho\u1ea1t \u0111\u1ed9ng tr\u00ean m\u1ed9t ho\u1eb7c nhi\u1ec1u h\u1ec7 th\u1ed1ng kh\u00e1c nhau. \u0110\u1ec3 gi\u1ea3i quy\u1ebft v\u1ea5n \u0111\u1ec1 truy\u1ec1n tin gi\u1eefa c\u00e1c ti\u1ebfn tr\u00ecnh ri\u00eang bi\u1ec7t, ng\u01b0\u1eddi ta th\u01b0\u1eddng s\u1eed d\u1ee5ng ph\u01b0\u01a1ng ph\u00e1p RPC. V\u1eady RPC l\u00e0 g\u00ec? C\u00e1ch th\u1ee9c ho\u1ea1t \u0111\u1ed9ng c\u1ee7a RPC nh\u01b0 th\u1ebf n\u00e0o? TinoHost s\u1ebd gi\u00fap b\u1ea1n gi\u1ea3i \u0111\u00e1p qua b\u00e0i vi\u1ebft d\u01b0\u1edbi \u0111\u00e2y.<\/strong><\/p>\n\n\n\n<h2 id=\"RPC_l\u00e0_g\u00ec?\"><strong>RPC l\u00e0 g\u00ec?<\/strong><\/h2>\n\n\n\n<p>RPC &#8211; vi\u1ebft t\u1eaft c\u1ee7a<strong> Remote Procedure Call<\/strong>, l\u00e0 m\u1ed9t m\u00f4 h\u00ecnh k\u1ef9 thu\u1eadt m\u1ea1ng hay c\u00f2n \u0111\u01b0\u1ee3c bi\u1ebft \u0111\u1ebfn l\u00e0 c\u01a1 ch\u1ebf giao ti\u1ebfp gi\u1eefa hai ti\u1ebfn tr\u00ecnh.<\/p>\n\n\n\n<p>Thu\u1eadt ng\u1eef RPC ra \u0111\u1eddi v\u00e0o n\u0103m 1981 \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n b\u1edfi Andrew Birrel v\u00e0 Bruce Nelson. RPC \u0111\u01b0\u1ee3c tri\u1ec3n khai v\u00e0 ph\u1ed5 bi\u1ebfn l\u1ea7n \u0111\u1ea7u tr\u00ean Unix d\u01b0\u1edbi d\u1ea1ng Sun&#8217;s RPC (ng\u00e0y nay g\u1ecdi l\u00e0 ONC RPC). T\u1eeb \u0111\u00f3, RPC \u0111\u01b0\u1ee3c d\u00f9ng l\u00e0m c\u01a1 s\u1edf chu\u1ea9n h\u00f3a h\u1ec7 t\u1eadp tin m\u1ea1ng. Trong h\u1ec7 th\u1ed1ng m\u1ea1ng m\u00e1y t\u00ednh hi\u1ec7n nay c\u00f3 r\u1ea5t nhi\u1ec1u d\u1ecbch v\u1ee5 v\u00e0 \u1ee9ng d\u1ee5ng s\u1eed d\u1ee5ng c\u01a1 ch\u1ebf k\u1ebft n\u1ed1i RPC.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/tino.vn\/blog\/wp-content\/uploads\/2021\/05\/word-image-242.png\" alt=\"RPC-la-gi\" class=\"wp-image-9484\" title=\"\"><\/figure><\/div>\n\n\n\n<p>\u0110\u00e2y l\u00e0 m\u1ed9t lo\u1ea1i giao th\u1ee9c y\u00eau c\u1ea7u-ph\u1ea3n h\u1ed3i, c\u00f3 th\u1ec3 d\u1ec5 d\u00e0ng \u0111\u01b0\u1ee3c gi\u1ea3i th\u00edch s\u1eed d\u1ee5ng m\u00f4 h\u00ecnh truy\u1ec1n th\u00f4ng m\u00e1y kh\u00e1ch\/m\u00e1y ch\u1ee7. Qu\u00e1 tr\u00ecnh g\u1ecdi m\u1ed9t y\u00eau c\u1ea7u \u0111\u01b0\u1ee3c g\u1ecdi l\u00e0 &#8220;m\u00e1y kh\u00e1ch&#8221; v\u00e0 qu\u00e1 tr\u00ecnh tr\u1ea3 l\u1eddi l\u1ea1i y\u00eau c\u1ea7u n\u00e0y g\u1ecdi l\u00e0 &#8220;m\u00e1y ch\u1ee7&#8221;. L\u01b0u \u00fd, m\u00e1y kh\u00e1ch ho\u1eb7c <a href=\"https:\/\/tino.vn\/blog\/tim-hieu-ve-client-server-network\/\" target=\"_blank\" class=\"rank-math-link\" rel=\"noopener\">m\u00e1y ch\u1ee7<\/a> c\u00f3 th\u1ec3 l\u00e0 c\u00e1c thi\u1ebft b\u1ecb kh\u00e1c nhau trong m\u1ed9t h\u1ec7 th\u1ed1ng m\u1ea1ng ho\u1eb7c c\u00f3 th\u1ec3 l\u00e0 c\u00e1c ti\u1ebfn tr\u00ecnh kh\u00e1c nhau n\u1eb1m trong c\u00f9ng h\u1ec7 th\u1ed1ng. C\u00f3 hay lo\u1ea1i th\u1ee7 t\u1ee5c xu\u1ea5t hi\u1ec7n trong ch\u01b0\u01a1ng tr\u00ecnh g\u1ed3m:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Th\u1ee7 t\u1ee5c c\u1ee5c b\u1ed9 l\u00e0 th\u1ee7 t\u1ee5c \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t v\u00e0 th\u1ef1c thi t\u1ea1i m\u00e1y c\u1ee7a c\u1ee7a ch\u01b0\u01a1ng tr\u00ecnh<\/li><li>Th\u1ee7 t\u1ee5c \u1edf xa l\u00e0 th\u1ee7 t\u1ee5c \u0111\u01b0\u1ee3c \u0111\u1ecbnh ngh\u0129a, c\u00e0i \u0111\u1eb7t v\u00e0 th\u1ef1c thi tr\u00ean m\u1ed9t m\u00e1y t\u00ednh kh\u00e1c.<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/tino.vn\/blog\/wp-content\/uploads\/2021\/05\/word-image-243.png\" alt=\"RPC-la-gi\" class=\"wp-image-9485\" title=\"\"><\/figure><\/div>\n\n\n\n<h2 id=\"\u01afu_\u0111i\u1ec3m_v\u00e0_nh\u01b0\u1ee3c_\u0111i\u1ec3m_c\u1ee7a_RPC\"><strong>\u01afu \u0111i\u1ec3m v\u00e0 nh\u01b0\u1ee3c \u0111i\u1ec3m c\u1ee7a RPC<\/strong><\/h2>\n\n\n\n<h3 id=\"\u01afu_\u0111i\u1ec3m\"><strong>\u01afu \u0111i\u1ec3m<\/strong><\/h3>\n\n\n\n<p>RPC c\u00f3 kh\u1ea3 n\u0103ng cho ph\u00e9p chuy\u1ec3n s\u1ef1 ph\u00e2n t\u00e1n c\u1ee7a h\u1ec7 th\u1ed1ng cu\u1ed1i c\u00f9ng v\u00e0o m\u1ed9t quy\u1ebft \u0111\u1ecbnh \u1edf th\u1eddi \u0111i\u1ec3m tri\u1ec3n khai. Vi\u1ec7c lo\u1ea1i b\u1ecf kh\u00eda c\u1ea1nh ph\u00e2n t\u00e1n t\u1eeb code c\u00f3 th\u1ec3 mang l\u1ea1i r\u1ea5t nhi\u1ec1u l\u1ee3i \u00edch cho c\u00e1c d\u1ef1 \u00e1n, v\u00ec \u1edf giai \u0111o\u1ea1n \u0111\u1ea7u tri\u1ec3n khai c\u00e1c chi ti\u1ebft cu\u1ed1i th\u01b0\u1eddng kh\u00f4ng \u0111\u01b0\u1ee3c bi\u1ebft c\u1ee5 th\u1ec3. L\u1eadp tr\u00ecnh vi\u00ean c\u00f3 th\u1ec3 t\u00f9y bi\u1ebfn chuy\u1ec3n t\u1eeb l\u1eddi g\u1ecdi c\u1ee5c b\u1ed9 sang l\u1eddi g\u1ecdi t\u1eeb xa RPC m\u00e0 kh\u00f4ng thay \u0111\u1ed5i qu\u00e1 l\u1edbn c\u1ea5u tr\u00fac ban \u0111\u1ea7u c\u1ee7a ch\u01b0\u01a1ng tr\u00ecnh.<\/p>\n\n\n\n<h3 id=\"Nh\u01b0\u1ee3c_\u0111i\u1ec3m\"><strong>Nh\u01b0\u1ee3c \u0111i\u1ec3m<\/strong><\/h3>\n\n\n\n<p>V\u1edbi RPC, c\u00e1ch chia nhi\u1ec1u h\u00e0m \u0111\u1ec3 g\u1ecdi t\u1ed3n t\u1ea1i m\u1ed9t s\u1ed1 h\u1ea1n ch\u1ebf khi th\u1eddi gian tr\u1ec5 m\u1ed7i l\u1ea7n g\u1ecdi RPC l\u00e0 kh\u00f3 c\u00f3 th\u1ec3 b\u1ecf qu\u1ea3, c\u00e0ng nhi\u1ec1u l\u1ea7n g\u1ecdi, t\u1ed5ng th\u1eddi gian tr\u1ec5 s\u1ebd t\u0103ng, kh\u1ea3 n\u0103ng ngh\u1ebdn c\u1ed5 chai do ki\u1ec3u h\u1ecfi \u0111\u00e1p li\u00ean t\u1ee5c s\u1ebd t\u0103ng.<\/p>\n\n\n\n<p>\u0110\u1ed1i v\u1edbi l\u1eddi g\u1ecdi c\u1ee5c b\u1ed9, \u0111\u1ed1i t\u01b0\u1ee3ng g\u1ecdi (caller) v\u00e0 \u0111\u1ed1i t\u01b0\u1ee3ng b\u1ecb g\u1ecdi (receiver) n\u1eb1m trong c\u00f9ng m\u1ed9t process. Ki\u1ec3u tham s\u1ed1 truy\u1ec1n \u0111\u01b0\u1ee3c ki\u1ec3m tra nghi\u00eam ng\u1eb7t khi bi\u00ean d\u1ecbch. C\u00f2n v\u1edbi RPC, vi\u1ec7c ki\u1ec3m tra nh\u01b0 th\u1ebf s\u1ebd d\u1eabn \u0111\u1ebfn nhi\u1ec1u r\u1ee7i ro h\u01a1n, d\u1eef li\u1ec7u c\u00f3 th\u1ec3 b\u1ecb nghe l\u00e9n ho\u1eb7c b\u1ecb thay \u0111\u1ed5i tr\u00ean \u0111\u01b0\u1eddng truy\u1ec1n. Vi\u1ec7c b\u1ea3o m\u1eadt l\u1eddi g\u1ecdi RPC d\u1eabn \u0111\u1ebfn c\u1ea7n ph\u1ea3i m\u00e3 h\u00f3a, g\u1eafn k\u00e8m ch\u1eef k\u00fd ki\u1ec3m tra&#8230;\u0111i\u1ec1u n\u00e0y s\u1ebd khi\u1ebfn th\u01b0 vi\u1ec7n b\u00ean d\u01b0\u1edbi c\u1ee7a caller v\u00e0 receiver s\u1ebd ph\u1ea3i l\u00e0m vi\u1ec7c nhi\u1ec1u h\u01a1n, \u0111\u1ed9 tr\u1ec5 l\u1ea1i cao h\u01a1n. <\/p>\n\n\n\n<p>Ch\u01b0a k\u1ec3 \u0111\u1ed3ng h\u1ed3 th\u1eddi gian \u1edf m\u00e1y t\u00ednh ch\u1ee9a caller v\u00e0 receiver c\u00f3 th\u1ec3 sai kh\u00e1c nhau, h\u1ec7 \u0111i\u1ec1u h\u00e0nh c\u0169ng nh\u01b0 ph\u1ea7n m\u1ec1m, ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh c\u0169ng kh\u00e1c nhau, ki\u1ec3u d\u1eef li\u1ec7u c\u00f3 s\u1ef1 sai kh\u00e1c\u2026<\/p>\n\n\n\n<h2 id=\"C\u1ea5u_tr\u00fac_v\u00e0_c\u00e1ch_th\u1ee9c_ho\u1ea1t_\u0111\u1ed9ng_c\u1ee7a_RPC\"><strong>C\u1ea5u tr\u00fac v\u00e0 c\u00e1ch th\u1ee9c ho\u1ea1t \u0111\u1ed9ng c\u1ee7a RPC<\/strong><\/h2>\n\n\n\n<p>Trong RPC, m\u1ed9t cu\u1ed9c g\u1ecdi th\u1ee7 t\u1ee5c \u0111\u01b0\u1ee3c kh\u1edfi t\u1ea1o b\u1edfi m\u1ed9t h\u1ec7 th\u1ed1ng m\u00e1y kh\u00e1ch, m\u00e3 h\u00f3a v\u00e0 sau \u0111\u00f3 \u0111\u01b0\u1ee3c g\u1eedi \u0111\u1ebfn m\u00e1y ch\u1ee7. Sau \u0111\u00f3, m\u00e1y ch\u1ee7 gi\u1ea3i m\u00e3 cu\u1ed9c g\u1ecdi v\u00e0 g\u1eedi m\u1ed9t ph\u1ea3n h\u1ed3i cho m\u00e1y kh\u00e1ch.<\/p>\n\n\n\n<p>M\u1ed9t \u1ee9ng d\u1ee5ng Client- Server theo c\u01a1 ch\u1ebf RPC \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng g\u1ed3m c\u00e1c ph\u1ea7n nh\u01b0 h\u00ecnh d\u01b0\u1edbi \u0111\u00e2y:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/tino.vn\/blog\/wp-content\/uploads\/2021\/05\/word-image-244.png\" alt=\"RPC-la-gi\" class=\"wp-image-9486\" title=\"\"><\/figure><\/div>\n\n\n\n<p><strong>Ph\u1ea7n Client<\/strong>&nbsp;l\u00e0 m\u1ed9t qu\u00e1 tr\u00ecnh ng\u01b0\u1eddi d\u00f9ng, n\u01a1i kh\u1edfi t\u1ea1o m\u1ed9t l\u1eddi g\u1ecdi th\u1ee7 t\u1ee5c t\u1eeb xa. M\u1ed7i l\u1eddi g\u1ecdi th\u1ee7 t\u1ee5c \u1edf xa tr\u00ean ph\u1ea7n Client s\u1ebd k\u00edch ho\u1ea1t m\u1ed9t th\u1ee7 t\u1ee5c c\u1ee5c b\u1ed9 t\u01b0\u01a1ng \u1ee9ng n\u1eb1m trong ph\u1ea7n Stub c\u1ee7a Client.<\/p>\n\n\n\n<p><strong>Ph\u1ea7n Client Stub<\/strong>&nbsp;cung c\u1ea5p m\u1ed9t b\u1ed9 c\u00e1c h\u00e0m c\u1ee5c b\u1ed9 m\u00e0 ph\u1ea7n Client c\u00f3 th\u1ec3 g\u1ecdi. M\u1ed7i m\u1ed9t h\u00e0m c\u1ee7a Client Stub \u0111\u1ea1i di\u1ec7n cho m\u1ed9t h\u00e0m \u1edf xa \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t v\u00e0 th\u1ef1c thi tr\u00ean server.<\/p>\n\n\n\n<p>M\u1ed7i khi m\u1ed9t h\u00e0m n\u00e0o \u0111\u00f3 c\u1ee7a Client Stub \u0111\u01b0\u1ee3c g\u1ecdi b\u1edfi Client, Client Stub s\u1ebd g\u1eedi th\u00f4ng \u0111i\u1ec7p \u0111\u1ec3 m\u00f4 t\u1ea3 th\u1ee7 t\u1ee5c \u1edf xa t\u01b0\u01a1ng \u1ee9ng m\u00e0 Client mu\u1ed1n th\u1ef1c thi c\u00f9ng v\u1edbi c\u00e1c tham s\u1ed1 n\u1ebfu c\u00f3. Sau \u0111\u00f3 n\u00f3 s\u1ebd nh\u1edd h\u1ec7 th\u1ed1ng RPC Runtime c\u1ee5c b\u1ed9 g\u1eedi th\u00f4ng \u0111i\u1ec7p n\u00e0y \u0111\u1ebfn ph\u1ea7n Server Stub c\u1ee7a Server.<\/p>\n\n\n\n<p><strong>Ph\u1ea7n RPC Runtime<\/strong>&nbsp;qu\u1ea3n l\u00fd vi\u1ec7c truy\u1ec1n th\u00f4ng \u0111i\u1ec7p th\u00f4ng qua m\u1ea1ng gi\u1eefa m\u00e1y Client v\u00e0 m\u00e1y Server. N\u00f3 \u0111\u1ea3m nh\u1eadn vi\u1ec7c truy\u1ec1n l\u1ea1i, b\u00e1o nh\u1eadn, ch\u1ecdn \u0111\u01b0\u1eddng g\u00f3i tin v\u00e0 m\u00e3 h\u00f3a th\u00f4ng tin.<\/p>\n\n\n\n<p>RPC Runtime tr\u00ean m\u00e1y Client nh\u1eadn th\u00f4ng \u0111i\u1ec7p y\u00eau c\u1ea7u t\u1eeb Client Stub, g\u1eedi n\u00f3 cho RPC Runtime tr\u00ean m\u00e1y Server b\u1eb1ng l\u1ec7nh send(). Sau \u0111\u00f3 g\u1ecdi l\u1ec7nh wait() \u0111\u1ec3 ch\u1edd k\u1ebft qu\u1ea3 tr\u1ea3 v\u1ec1 t\u1eeb Server. Khi nh\u1eadn \u0111\u01b0\u1ee3c th\u00f4ng \u0111i\u1ec7p t\u1eeb RPC Runtime c\u1ee7a Client g\u1eedi sang, RPC Runtime b\u00ean ph\u00eda server chuy\u1ec3n th\u00f4ng \u0111i\u1ec7p l\u00ean ph\u1ea7n Server Stub.<\/p>\n\n\n\n<p><strong>Server Stub<\/strong>&nbsp;m\u1edf th\u00f4ng \u0111i\u1ec7p ra xem, x\u00e1c \u0111\u1ecbnh h\u00e0m \u1edf xa m\u00e0 Client mu\u1ed1n th\u1ef1c hi\u1ec7n c\u00f9ng v\u1edbi c\u00e1c tham s\u1ed1 c\u1ee7a n\u00f3. Server Stub g\u1ecdi m\u1ed9t l\u1ec7nh t\u01b0\u01a1ng \u1ee9ng n\u1eb1m tr\u00ean ph\u1ea7n Server. Khi nh\u1eadn \u0111\u01b0\u1ee3c y\u00eau c\u1ea7u c\u1ee7a Server Stub, Server cho th\u1ef1c thi l\u1ec7nh \u0111\u01b0\u1ee3c y\u00eau c\u1ea7u v\u00e0 g\u1eedi k\u1ebft qu\u1ea3 th\u1ef1c thi \u0111\u01b0\u1ee3c cho Server Stub.<\/p>\n\n\n\n<p>Server Stub \u0111\u01b0a k\u1ebft qu\u1ea3 th\u1ef1c v\u00e0o m\u1ed9t g\u00f3i tin tr\u1ea3 l\u1eddi, chuy\u1ec3n cho ph\u1ea7n RPC Runtime c\u1ee5c b\u1ed9 \u0111\u1ec3 n\u00f3 g\u1eedi sang RPC Runtime c\u1ee7a Client<\/p>\n\n\n\n<p><strong>Runtime<\/strong> c\u1ee5c b\u1ed9 \u0111\u1ec3 n\u00f3 g\u1eedi sang RPC Runtime c\u1ee7a Client. RPC Runtime b\u00ean ph\u00eda Client chuy\u1ec3n g\u00f3i tin tr\u1ea3 l\u1eddi nh\u1eadn \u0111\u01b0\u1ee3c cho ph\u1ea7n Client Stub. Client Stub m\u1edf th\u00f4ng \u0111i\u1ec7p ch\u1ee9a k\u1ebft qu\u1ea3 th\u1ef1c thi v\u1ec1 cho Client t\u1ea1i v\u1ecb tr\u00ed ph\u00e1t ra l\u1eddi g\u1ecdi th\u1ee7 t\u1ee5c xa.<\/p>\n\n\n\n<p>Trong c\u00e1c th\u00e0nh ph\u1ea7n tr\u00ean, RPC Runtime \u0111\u01b0\u1ee3c cung c\u1ea5p b\u1edfi h\u1ec7 th\u1ed1ng. Client Stub v\u00e0 Server Stub c\u00f3 th\u1ec3 t\u1ea1o ra th\u1ee7 c\u00f4ng (ph\u1ea3i l\u1eadp tr\u00ecnh) hay c\u00f3 th\u1ec3 t\u1ea1o ra b\u1eb1ng c\u00e1c c\u00f4ng c\u1ee5 cung c\u1ea5p b\u1edfi h\u1ec7 th\u1ed1ng. C\u01a1 ch\u1ebf RPC \u0111\u01b0\u1ee3c h\u1ed7 tr\u1ee3 b\u1edfi h\u1ea7u h\u1ebft c\u00e1c h\u1ec7 \u0111i\u1ec1u h\u00e0nh m\u1ea1ng c\u0169ng nh\u01b0 c\u00e1c ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh.<\/p>\n\n\n\n<p>RPC \u0111\u00f3ng m\u1ed9t vai tr\u00f2 quan tr\u1ecdng trong vi\u1ec7c qu\u1ea3n l\u00fd thi\u1ebft b\u1ecb t\u1eeb xa qua m\u1ea1ng v\u00e0 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 chia s\u1ebb quy\u1ec1n truy c\u1eadp v\u00e0o c\u00e1c thi\u1ebft b\u1ecb ngo\u1ea1i vi nh\u01b0 m\u00e1y in v\u00e0 m\u00e1y scan. Qua b\u00e0i vi\u1ebft, hy v\u1ecdng c\u00e1c b\u1ea1n c\u00f3 th\u1ec3 b\u1ed5 sung cho b\u1ea3n th\u00e2n ki\u1ebfn th\u1ee9c h\u1eefu \u00edch v\u1ec1 l\u1eadp tr\u00ecnh n\u00e2ng cao.<\/p>\n\n\n\n<h2 id=\"FAQs_v\u1ec1_RPC\"><strong>FAQs v\u1ec1 RPC<\/strong><\/h2>\n\n\n\t\t<section\t\thelp class=\"sc_fs_faq sc_card    \"\n\t\t\t\t>\n\t\t\t\t<h2 id=\"Nguy\u00ean_nh\u00e2n_g\u00e2y_ra_l\u1ed7i_\u201cRPC_server_is_unavailable\u201d_l\u00e0_g\u00ec?\">Nguy\u00ean nh\u00e2n g\u00e2y ra l\u1ed7i \u201cRPC server is unavailable\u201d l\u00e0 g\u00ec?<\/h2>\t\t\t\t<div>\n\t\t\t\t\t\t<div class=\"sc_fs_faq__content\">\n\t\t\t\t\n\n<p>C\u00e1c ti\u1ebfn tr\u00ecnh Windows li\u00ean quan \u0111\u1ebfn ph\u00e2n ph\u1ed1i v\u00e0 chia s\u1ebb d\u1eef li\u1ec7u qua m\u1ea1ng th\u01b0\u1eddng s\u1eed d\u1ee5ng c\u00f4ng ngh\u1ec7 RPC. Do \u0111\u00f3, ng\u01b0\u1eddi d\u00f9ng Windows th\u01b0\u1eddng \u0111\u1ed1i m\u1eb7t v\u1edbi s\u1ef1 c\u1ed1 &#8220;RPC server unavailable&#8221;. C\u00e1c nguy\u00ean nh\u00e2n th\u01b0\u1eddng g\u1eb7p nh\u01b0:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>&nbsp;File and printer sharing b\u1ecb v\u00f4 hi\u1ec7u h\u00f3a<\/li><li>C\u00e1c v\u1ea5n \u0111\u1ec1 k\u1ebft n\u1ed1i m\u1ea1ng<\/li><li>C\u00e1c v\u1ea5n \u0111\u1ec1 v\u1ec1 name resolution (ph\u00e2n gi\u1ea3i t\u00ean)<\/li><li>T\u01b0\u1eddng l\u1eeda c\u1ee7a b\u00ean th\u1ee9 ba ho\u1eb7c c\u00e1c \u1ee9ng d\u1ee5ng b\u1ea3o m\u1eadt<\/li><\/ul>\n\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section\t\thelp class=\"sc_fs_faq sc_card    \"\n\t\t\t\t>\n\t\t\t\t<h2 id=\"Ngo\u00e0i_RPC_c\u00f2n_nh\u1eefng_ph\u01b0\u01a1ng_th\u1ee9c_g\u1ecdi_h\u00e0m_t\u1eeb_xa_n\u00e0o_kh\u00e1c?\">Ngo\u00e0i RPC c\u00f2n nh\u1eefng ph\u01b0\u01a1ng th\u1ee9c g\u1ecdi h\u00e0m t\u1eeb xa n\u00e0o kh\u00e1c?<\/h2>\t\t\t\t<div>\n\t\t\t\t\t\t<div class=\"sc_fs_faq__content\">\n\t\t\t\t\n\n<p>M\u1ed9t s\u1ed1 ph\u01b0\u01a1ng th\u1ee9c g\u1ecdi h\u00e0m t\u1eeb xa g\u1ed3m:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>RMI:\u00a0 l\u00e0 m\u1ed9t c\u01a1 ch\u1ebf cho ph\u00e9p m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng \u0111ang ch\u1ea1y tr\u00ean m\u1ed9t m\u00e1y \u1ea3o Java n\u00e0y ( Java Virtual Machine) g\u1ecdi c\u00e1c ph\u01b0\u01a1ng th\u1ee9c c\u1ee7a m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng \u0111ang t\u1ed3n t\u1ea1i tr\u00ean m\u1ed9t m\u00e1y \u1ea3o Java kh\u00e1c (JVM).<\/li><li>DCOM\/COM+ : L\u00e0 c\u00f4ng ngh\u1ec7 \u0111\u1ed9c quy\u1ec1n c\u1ee7a MS, n\u00f3 \u0111\u1ecbnh ngh\u0129a c\u00e1c th\u00e0nh ph\u1ea7n c\u1ee7a ph\u1ea7n m\u1ec1m \u0111\u01b0\u1ee3c ph\u00e2n t\u00e1n qua m\u1ea1ng m\u00e1y t\u00ednh \u0111\u1ec3 truy\u1ec1n th\u00f4ng v\u1edbi c\u00e1c th\u00e0nh ph\u1ea7n kh\u00e1c . Ngo\u00e0i ra, n\u00f3 c\u00f2n h\u1ed7 tr\u1ee3 k\u1ebft n\u1ed1i gi\u1eefa c\u00e1c \u0111\u1ed1i t\u01b0\u1ee3ng v\u00e0 k\u1ebft n\u1ed1i n\u00e0y c\u00f3 th\u1ec3 thay \u0111\u1ed5i l\u00fac \u0111ang ch\u1ea1y.<\/li><li>CORBA: l\u00e0 ph\u1ea7n trung gian t\u1ea1o kh\u1ea3 n\u0103ng cho c\u00e1c m\u1ed1i li\u00ean h\u1ec7 gi\u1eefa client\/server th\u00f4ng qua nh\u1eefng object. B\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng CORBA, client c\u00f3 th\u1ec3 g\u1ecdi m\u1ed9t ph\u01b0\u01a1ng ph\u00e1p tr\u00ean object server m\u1ed9t c\u00e1ch th\u00f4ng su\u1ed1t m\u00e0 object \u0111\u00f3 c\u00f3 th\u1ec3 \u1edf tr\u00ean c\u00f9ng m\u1ed9t m\u00e1y hay tr\u00ean m\u1ea1ng m\u00e1y t\u00ednh.<\/li><\/ul>\n\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section\t\thelp class=\"sc_fs_faq sc_card    \"\n\t\t\t\t>\n\t\t\t\t<h2 id=\"\u1ee8ng_d\u1ee5ng_c\u1ee7a_XML-RPC_l\u00e0_g\u00ec?\">\u1ee8ng d\u1ee5ng c\u1ee7a XML-RPC l\u00e0 g\u00ec?<\/h2>\t\t\t\t<div>\n\t\t\t\t\t\t<div class=\"sc_fs_faq__content\">\n\t\t\t\t\n\n<p>V\u00ec WordPress kh\u00f4ng ph\u1ea3i l\u00e0 h\u1ec7 th\u1ed1ng \u0111\u00f3ng ho\u00e0n to\u00e0n n\u00ean t\u00ednh n\u0103ng n\u00e0y \u0111\u01b0\u1ee3c t\u1ea1o ra \u0111\u1ec3 khi WordPress c\u1ea7n giao ti\u1ebfp v\u1edbi c\u00e1c h\u1ec7 th\u1ed1ng b\u00ean ngo\u00e0i. V\u00ed d\u1ee5, khi ng\u01b0\u1eddi d\u00f9ng mu\u1ed1n ch\u1ec9nh s\u1eeda ho\u1eb7c \u0111\u0103ng t\u1ea3i m\u1ed9t b\u00e0i vi\u1ebft l\u00ean WordPress kh\u00f4ng b\u1eb1ng m\u00e1y t\u00ednh m\u00e0 th\u00f4ng qua \u0111i\u1ec7n tho\u1ea1i. Khi \u0111\u00f3, XMLRPC.PHP s\u1ebd k\u00edch ho\u1ea1t tr\u1ea1ng th\u00e1i li\u00ean k\u1ebft gi\u1eefa m\u00e1y t\u00ednh v\u00e0 \u0111i\u1ec7n tho\u1ea1i, cho ph\u00e9p ng\u01b0\u1eddi d\u00f9ng th\u1ef1c hi\u1ec7n c\u00e1c ch\u1ec9nh s\u1eeda.<\/p>\n\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section\t\thelp class=\"sc_fs_faq sc_card    \"\n\t\t\t\t>\n\t\t\t\t<h2 id=\"gRPC_l\u00e0_g\u00ec?\">gRPC l\u00e0 g\u00ec?<\/h2>\t\t\t\t<div>\n\t\t\t\t\t\t<div class=\"sc_fs_faq__content\">\n\t\t\t\t\n\n<p>gRPC l\u00e0 m\u1ed9t RPC framework gi\u00fap b\u1ea1n k\u1ebft n\u1ed1i gi\u1eefa c\u00e1c service trong h\u1ec7 th\u1ed1ng, n\u00f3 h\u1ed7 tr\u1ee3 load balancing, tracing, health checking v\u00e0 authentication, h\u1ed7 tr\u1ee3 t\u1eeb \u1ee9ng d\u1ee5ng mobile, tr\u00ecnh duy\u1ec7t cho t\u1edbi back-end service.<\/p>\n\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t<\/section>\n\t\t\n<script type=\"application\/ld+json\">\n\t{\n\t\t\"@context\": \"https:\/\/schema.org\",\n\t\t\"@type\": \"FAQPage\",\n\t\t\"mainEntity\": [\n\t\t\t\t\t{\n\t\t\t\t\"@type\": \"Question\",\n\t\t\t\t\"name\": \"Nguy\u00ean nh\u00e2n g\u00e2y ra l\u1ed7i \u201cRPC server is unavailable\u201d l\u00e0 g\u00ec?\",\n\t\t\t\t\"acceptedAnswer\": {\n\t\t\t\t\t\"@type\": \"Answer\",\n\t\t\t\t\t\"text\": \"<p>C\u00e1c ti\u1ebfn tr\u00ecnh Windows li\u00ean quan \u0111\u1ebfn ph\u00e2n ph\u1ed1i v\u00e0 chia s\u1ebb d\u1eef li\u1ec7u qua m\u1ea1ng th\u01b0\u1eddng s\u1eed d\u1ee5ng c\u00f4ng ngh\u1ec7 RPC. Do \u0111\u00f3, ng\u01b0\u1eddi d\u00f9ng Windows th\u01b0\u1eddng \u0111\u1ed1i m\u1eb7t v\u1edbi s\u1ef1 c\u1ed1 \\\"RPC server unavailable\\\". C\u00e1c nguy\u00ean nh\u00e2n th\u01b0\u1eddng g\u1eb7p nh\u01b0:<\/p><ul><li>&nbsp;File and printer sharing b\u1ecb v\u00f4 hi\u1ec7u h\u00f3a<\/li><li>C\u00e1c v\u1ea5n \u0111\u1ec1 k\u1ebft n\u1ed1i m\u1ea1ng<\/li><li>C\u00e1c v\u1ea5n \u0111\u1ec1 v\u1ec1 name resolution (ph\u00e2n gi\u1ea3i t\u00ean)<\/li><li>T\u01b0\u1eddng l\u1eeda c\u1ee7a b\u00ean th\u1ee9 ba ho\u1eb7c c\u00e1c \u1ee9ng d\u1ee5ng b\u1ea3o m\u1eadt<\/li><\/ul>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t}\n\t\t\t,\t\t\t\t{\n\t\t\t\t\"@type\": \"Question\",\n\t\t\t\t\"name\": \"Ngo\u00e0i RPC c\u00f2n nh\u1eefng ph\u01b0\u01a1ng th\u1ee9c g\u1ecdi h\u00e0m t\u1eeb xa n\u00e0o kh\u00e1c?\",\n\t\t\t\t\"acceptedAnswer\": {\n\t\t\t\t\t\"@type\": \"Answer\",\n\t\t\t\t\t\"text\": \"<p>M\u1ed9t s\u1ed1 ph\u01b0\u01a1ng th\u1ee9c g\u1ecdi h\u00e0m t\u1eeb xa g\u1ed3m:<\/p><ul><li>RMI:\u00a0 l\u00e0 m\u1ed9t c\u01a1 ch\u1ebf cho ph\u00e9p m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng \u0111ang ch\u1ea1y tr\u00ean m\u1ed9t m\u00e1y \u1ea3o Java n\u00e0y ( Java Virtual Machine) g\u1ecdi c\u00e1c ph\u01b0\u01a1ng th\u1ee9c c\u1ee7a m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng \u0111ang t\u1ed3n t\u1ea1i tr\u00ean m\u1ed9t m\u00e1y \u1ea3o Java kh\u00e1c (JVM).<\/li><li>DCOM\/COM+ : L\u00e0 c\u00f4ng ngh\u1ec7 \u0111\u1ed9c quy\u1ec1n c\u1ee7a MS, n\u00f3 \u0111\u1ecbnh ngh\u0129a c\u00e1c th\u00e0nh ph\u1ea7n c\u1ee7a ph\u1ea7n m\u1ec1m \u0111\u01b0\u1ee3c ph\u00e2n t\u00e1n qua m\u1ea1ng m\u00e1y t\u00ednh \u0111\u1ec3 truy\u1ec1n th\u00f4ng v\u1edbi c\u00e1c th\u00e0nh ph\u1ea7n kh\u00e1c . Ngo\u00e0i ra, n\u00f3 c\u00f2n h\u1ed7 tr\u1ee3 k\u1ebft n\u1ed1i gi\u1eefa c\u00e1c \u0111\u1ed1i t\u01b0\u1ee3ng v\u00e0 k\u1ebft n\u1ed1i n\u00e0y c\u00f3 th\u1ec3 thay \u0111\u1ed5i l\u00fac \u0111ang ch\u1ea1y.<\/li><li>CORBA: l\u00e0 ph\u1ea7n trung gian t\u1ea1o kh\u1ea3 n\u0103ng cho c\u00e1c m\u1ed1i li\u00ean h\u1ec7 gi\u1eefa client\/server th\u00f4ng qua nh\u1eefng object. B\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng CORBA, client c\u00f3 th\u1ec3 g\u1ecdi m\u1ed9t ph\u01b0\u01a1ng ph\u00e1p tr\u00ean object server m\u1ed9t c\u00e1ch th\u00f4ng su\u1ed1t m\u00e0 object \u0111\u00f3 c\u00f3 th\u1ec3 \u1edf tr\u00ean c\u00f9ng m\u1ed9t m\u00e1y hay tr\u00ean m\u1ea1ng m\u00e1y t\u00ednh.<\/li><\/ul>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t}\n\t\t\t,\t\t\t\t{\n\t\t\t\t\"@type\": \"Question\",\n\t\t\t\t\"name\": \"\u1ee8ng d\u1ee5ng c\u1ee7a XML-RPC l\u00e0 g\u00ec?\",\n\t\t\t\t\"acceptedAnswer\": {\n\t\t\t\t\t\"@type\": \"Answer\",\n\t\t\t\t\t\"text\": \"<p>V\u00ec WordPress kh\u00f4ng ph\u1ea3i l\u00e0 h\u1ec7 th\u1ed1ng \u0111\u00f3ng ho\u00e0n to\u00e0n n\u00ean t\u00ednh n\u0103ng n\u00e0y \u0111\u01b0\u1ee3c t\u1ea1o ra \u0111\u1ec3 khi WordPress c\u1ea7n giao ti\u1ebfp v\u1edbi c\u00e1c h\u1ec7 th\u1ed1ng b\u00ean ngo\u00e0i. V\u00ed d\u1ee5, khi ng\u01b0\u1eddi d\u00f9ng mu\u1ed1n ch\u1ec9nh s\u1eeda ho\u1eb7c \u0111\u0103ng t\u1ea3i m\u1ed9t b\u00e0i vi\u1ebft l\u00ean WordPress kh\u00f4ng b\u1eb1ng m\u00e1y t\u00ednh m\u00e0 th\u00f4ng qua \u0111i\u1ec7n tho\u1ea1i. Khi \u0111\u00f3, XMLRPC.PHP s\u1ebd k\u00edch ho\u1ea1t tr\u1ea1ng th\u00e1i li\u00ean k\u1ebft gi\u1eefa m\u00e1y t\u00ednh v\u00e0 \u0111i\u1ec7n tho\u1ea1i, cho ph\u00e9p ng\u01b0\u1eddi d\u00f9ng th\u1ef1c hi\u1ec7n c\u00e1c ch\u1ec9nh s\u1eeda.<\/p>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t}\n\t\t\t,\t\t\t\t{\n\t\t\t\t\"@type\": \"Question\",\n\t\t\t\t\"name\": \"gRPC l\u00e0 g\u00ec?\",\n\t\t\t\t\"acceptedAnswer\": {\n\t\t\t\t\t\"@type\": \"Answer\",\n\t\t\t\t\t\"text\": \"<p>gRPC l\u00e0 m\u1ed9t RPC framework gi\u00fap b\u1ea1n k\u1ebft n\u1ed1i gi\u1eefa c\u00e1c service trong h\u1ec7 th\u1ed1ng, n\u00f3 h\u1ed7 tr\u1ee3 load balancing, tracing, health checking v\u00e0 authentication, h\u1ed7 tr\u1ee3 t\u1eeb \u1ee9ng d\u1ee5ng mobile, tr\u00ecnh duy\u1ec7t cho t\u1edbi back-end service.<\/p>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t}\n\t\t\t\t\t\t]\n\t}\n<\/script>\n\n\n","protected":false},"excerpt":{"rendered":"<p>Trong l\u0129nh v\u1ef1c l\u1eadp tr\u00ecnh, \u1ee9ng d\u1ee5ng c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng tr\u00ean nhi\u1ec1u ti\u1ebfn tr\u00ecnh. C\u00e1c ti\u1ebfn tr\u00ecnh n\u00e0y \u0111\u00f4i khi \u0111\u01b0\u1ee3c ho\u1ea1t \u0111\u1ed9ng tr\u00ean m\u1ed9t ho\u1eb7c nhi\u1ec1u h\u1ec7 th\u1ed1ng kh\u00e1c nhau. \u0110\u1ec3 gi\u1ea3i quy\u1ebft v\u1ea5n \u0111\u1ec1 truy\u1ec1n tin gi\u1eefa c\u00e1c ti\u1ebfn tr\u00ecnh ri\u00eang bi\u1ec7t, ng\u01b0\u1eddi ta th\u01b0\u1eddng s\u1eed d\u1ee5ng ph\u01b0\u01a1ng ph\u00e1p RPC. V\u1eady [&hellip;]<\/p>\n","protected":false},"author":23,"featured_media":11364,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5404],"tags":[6187],"class_list":["post-11363","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-webmasters","tag-ho-tro-developer"],"_links":{"self":[{"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/posts\/11363","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/users\/23"}],"replies":[{"embeddable":true,"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/comments?post=11363"}],"version-history":[{"count":0,"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/posts\/11363\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/media\/11364"}],"wp:attachment":[{"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/media?parent=11363"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/categories?post=11363"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tino.vn\/blog\/wp-json\/wp\/v2\/tags?post=11363"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}