{"id":23021,"date":"2022-03-24T14:44:57","date_gmt":"2022-03-24T07:44:57","guid":{"rendered":"https:\/\/itviec.com\/blog\/?p=23021"},"modified":"2024-10-10T11:15:39","modified_gmt":"2024-10-10T04:15:39","slug":"kafka-la-gi","status":"publish","type":"post","link":"https:\/\/itviec.com\/blog\/kafka-la-gi\/","title":{"rendered":"Kafka l\u00e0 g\u00ec? Nh\u1eefng l\u1ee3i \u00edch tuy\u1ec7t v\u1eddi m\u00e0 Kafka mang l\u1ea1i cho Dev"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">N\u1ed9i dung b\u00e0i vi\u1ebft<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/itviec.com\/blog\/kafka-la-gi\/#Kafka_la_gi\" >Kafka l\u00e0 g\u00ec?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/itviec.com\/blog\/kafka-la-gi\/#Kafka_hoat_dong_nhu_the_nao\" >Kafka ho\u1ea1t \u0111\u1ed9ng nh\u01b0 th\u1ebf n\u00e0o?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/itviec.com\/blog\/kafka-la-gi\/#3_tinh_nang_chinh_cua_Kafka\" >3 t\u00ednh n\u0103ng ch\u00ednh c\u1ee7a Kafka<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/itviec.com\/blog\/kafka-la-gi\/#Ung_dung_cua_Kafka_la_gi\" >\u1ee8ng d\u1ee5ng c\u1ee7a Kafka l\u00e0 g\u00ec?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/itviec.com\/blog\/kafka-la-gi\/#Uunhuoc_diem_cua_viec_su_dung_Kafka_la_gi\" >\u01afu\/nh\u01b0\u1ee3c \u0111i\u1ec3m c\u1ee7a vi\u1ec7c s\u1eed d\u1ee5ng Kafka l\u00e0 g\u00ec?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/itviec.com\/blog\/kafka-la-gi\/#Tai_lieu_Kafka_tham_khao\" >T\u00e0i li\u1ec7u Kafka tham kh\u1ea3o<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/itviec.com\/blog\/kafka-la-gi\/#Kafka_va_Nhung_nen_tang_dieu_phoi_message_phan_tan_khac\" >Kafka v\u00e0 Nh\u1eefng n\u1ec1n t\u1ea3ng \u0111i\u1ec1u ph\u1ed1i message ph\u00e2n t\u00e1n kh\u00e1c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/itviec.com\/blog\/kafka-la-gi\/#Thong_tin_ve_anh_Le_Nguyen_Phong\" >Th\u00f4ng tin v\u1ec1 anh L\u00ea Nguy\u00ean Phong<\/a><\/li><\/ul><\/nav><\/div>\n<p><b><i>Kafka l\u00e0 g\u00ec? Kafka l\u00e0 m\u1ed9t trong nh\u1eefng n\u1ec1n t\u1ea3ng \u0111i\u1ec1u ph\u1ed1i message ph\u00e2n t\u00e1n ph\u1ed5 bi\u1ebfn nh\u1ea5t tr\u00ean th\u1ecb tr\u01b0\u1eddng hi\u1ec7n nay. Tuy nhi\u00ean, kh\u00f4ng ch\u1ec9 d\u1eebng l\u1ea1i \u1edf \u0111\u00f3, Kafka c\u00f2n mang l\u1ea1i cho doanh nghi\u1ec7p c\u1ee7a b\u1ea1n nh\u1eefng l\u1ee3i \u00edch tuy\u1ec7t v\u1eddi c\u1ea3 v\u1ec1 t\u00ednh n\u0103ng l\u1eabn chi ph\u00ed.<\/i><\/b><\/p>\r\n<p>\u0110\u1ec3 hi\u1ec3u r\u00f5 h\u01a1n v\u1ec1 Kafka l\u00e0 g\u00ec c\u0169ng nh\u01b0 so s\u00e1nh gi\u1eefa Kafka v\u00e0 c\u00e1c d\u1ecbch v\u1ee5 \u0111\u1ea9y message kh\u00e1c tr\u00ean th\u1ecb tr\u01b0\u1eddng, t\u1eeb \u0111\u00f3 b\u1ea1n c\u00f3 th\u1ec3 \u0111\u01b0a ra quy\u1ebft \u0111\u1ecbnh n\u00ean ch\u1ecdn d\u00f9ng d\u1ecbch v\u1ee5 n\u00e0o, ITviec \u0111\u00e3 c\u00f3 bu\u1ed5i chia s\u1ebb th\u00f4ng tin \u0111\u1ea7y b\u1ed5 \u00edch v\u1edbi anh <b>L\u00ea Nguy\u00ean Phong<\/b> &#8211; <b>Senior Software Engineer <\/b>t\u1ea1i <a href=\"https:\/\/itviec.com\/companies\/ninja-van-tech-lab?utm_medium=anchor_text_high&amp;utm_source=blog_&amp;utm_campaign=ninja_van&amp;utm_content=kafka_la_gi\" target=\"_blank\" rel=\"noopener\"><b>Ninja Van<\/b><\/a>.<\/p>\r\n<blockquote>\r\n<p><a href=\"https:\/\/itviec.com\/companies\/ninja-van-tech-lab?utm_medium=anchor_text_high&amp;utm_source=blog_&amp;utm_campaign=tham_khao_viec_ lam_ninja_van&amp;utm_content=kafka_la_gi\" target=\"_blank\" rel=\"noopener\"><em>Tham kh\u1ea3o vi\u1ec7c l\u00e0m t\u1ea1i Ninja Van tr\u00ean ITviec<\/em><\/a><\/p>\r\n<\/blockquote>\r\n<h2><span class=\"ez-toc-section\" id=\"Kafka_la_gi\"><\/span><b>Kafka l\u00e0 g\u00ec?<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\r\n<p>Real-time data c\u00f3 gi\u00e1 tr\u1ecb \u0111\u1eb7c bi\u1ec7t quan tr\u1ecdng \u0111\u1ed1i v\u1edbi c\u00e1c doanh nghi\u1ec7p. C\u00e1c doanh nghi\u1ec7p s\u1eed d\u1ee5ng real-time data \u0111\u1ec3 c\u1ea3i thi\u1ec7n d\u1ecbch v\u1ee5 kh\u00e1ch h\u00e0ng, qu\u1ea3n l\u00fd s\u1ea3n ph\u1ea9m v\u00e0 t\u1ed1i \u01b0u h\u00f3a v\u1eadn h\u00e0nh. Ngo\u00e0i ra, real-time data c\u00f2n \u0111\u1ec3 gi\u00fap theo d\u00f5i v\u00e0 duy tr\u00ec c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng CNTT. Nh\u1eadn bi\u1ebft \u0111\u01b0\u1ee3c nh\u1eefng l\u1ee3i \u00edch tr\u00ean, nhu c\u1ea7u thu th\u1eadp real-time data ng\u00e0y c\u00e0ng t\u0103ng cao \u1edf kh\u1eafp c\u00e1c doanh nghi\u1ec7p to\u00e0n th\u1ebf gi\u1edbi.<\/p>\r\n<p>Ch\u00ednh v\u00ec th\u1ebf, nh\u1eefng c\u00f4ng c\u1ee5 c\u00f3 kh\u1ea3 n\u0103ng thu th\u1eadp v\u00e0 l\u01b0u tr\u1eef d\u1eef li\u1ec7u th\u1eddi gian th\u1ef1c ng\u00e0y c\u00e0ng tr\u1edf n\u00ean \u0111\u01b0\u1ee3c \u201cs\u0103n \u0111\u00f3n&#8221;, Kafka ch\u00ednh l\u00e0 m\u1ed9t trong nh\u1eefng c\u00f4ng c\u1ee5 \u0111\u00f3.<b><\/b><\/p>\r\n<h3><b>Apache Kafka l\u00e0 g\u00ec? C\u00e1c kh\u00e1i ni\u1ec7m\/thu\u1eadt ng\u1eef c\u1ea7n bi\u1ebft khi s\u1eed d\u1ee5ng Kafka<\/b><\/h3>\r\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-23032 size-full\" src=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/03\/kafka-la-gi-itviec-1.jpeg\" alt=\"apache kafka l\u00e0 g\u00ec - \u0111\u1ecbnh ngh\u0129a - itviec\" width=\"1740\" height=\"1003\" srcset=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/03\/kafka-la-gi-itviec-1.jpeg 640w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/03\/kafka-la-gi-itviec-1-300x173.jpeg 300w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/03\/kafka-la-gi-itviec-1-200x115.jpeg 200w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/03\/kafka-la-gi-itviec-1-100x58.jpeg 100w\" sizes=\"auto, (max-width: 1740px) 100vw, 1740px\" \/><\/p>\r\n<p>Kafka, t\u00ean g\u1ecdi \u0111\u1ea7y \u0111\u1ee7 l\u00e0 Apache Kafka, l\u00e0 m\u1ed9t n\u1ec1n t\u1ea3ng streaming ph\u00e2n t\u00e1n s\u1ef1 ki\u1ec7n (distributed event streaming), ch\u1ee7 y\u1ebfu \u0111\u01b0\u1ee3c \u00e1p d\u1ee5ng l\u00e0m h\u1ec7 th\u1ed1ng ph\u00e2n t\u00e1n, \u201cv\u1eadn chuy\u1ec3n&#8221; tin nh\u1eafn v\u00e0 thu th\u1eadp, x\u1eed l\u00fd, l\u01b0u tr\u1eef v\u00e0 ph\u00e2n t\u00edch d\u1eef li\u1ec7u \u1edf quy m\u00f4 l\u1edbn. Kafka tr\u01b0\u1edbc \u0111\u00e2y \u0111\u01b0\u1ee3c ph\u00e1t tri\u1ec3n b\u1edfi LinkedIn, hi\u1ec7n t\u1ea1i thu\u1ed9c Apache.<\/p>\r\n<p>Ng\u00f4n ng\u1eef ch\u00ednh c\u1ee7a Kafka l\u00e0 <a href=\"https:\/\/itviec.com\/blog\/hoc-lap-trinh-java\/\" target=\"_blank\" rel=\"noopener\"><strong>Java<\/strong><\/a> ho\u1eb7c <strong>Scala<\/strong>.<\/p>\r\n<p>Khi l\u00e0m vi\u1ec7c v\u1edbi Kafka, b\u1ea1n c\u1ea7n ghi nh\u1edb nh\u1eefng kh\u00e1i ni\u1ec7m th\u01b0\u1eddng g\u1eb7p sau:<\/p>\r\n<ul>\r\n<li><i>Event Distributed System:<\/i> N\u1ec1n t\u1ea3ng ph\u00e2n ph\u1ed1i message r\u1ed9ng r\u00e3i, kh\u00f4ng ng\u1eaft h\u1ec7 th\u1ed1ng, ra nhi\u1ec1u server, nhi\u1ec1u cluster kh\u00e1c nhau.<\/li>\r\n<li><i>Topic:<\/i> T\u00ean \u0111\u1ea1i di\u1ec7n c\u1ee7a m\u1ed9t k\u00eanh cho ph\u00e9p c\u00e1c h\u1ec7 th\u1ed1ng n\u00f3i chuy\u1ec7n v\u1edbi nhau. B\u1ea1n c\u0169ng c\u00f3 th\u1ec3 hi\u1ec3u Topic l\u00e0 t\u1ed5ng h\u1ee3p c\u1ee7a m\u1ed9t d\u00e3y event t\u01b0\u01a1ng t\u1ef1 v\u1edbi nhau, g\u1ea7n nh\u01b0 m\u1ed9t b\u1ea3ng SQL v\u1eady.<\/li>\r\n<li><i>Event: <\/i>M\u1ed9t s\u1ef1 ki\u1ec7n, h\u00e0nh \u0111\u1ed9ng \u0111\u01b0\u1ee3c di\u1ec5n ra.<\/li>\r\n<li><i>Stream:<\/i> Chuy\u1ec3n h\u00f3a lu\u1ed3ng topic \u0111\u1ea7u v\u00e0o th\u00e0nh topic \u0111\u1ea7u ra.<\/li>\r\n<li><i>Partition &#8211; Ph\u00e2n v\u00f9ng:<\/i> Message \u0111\u01b0a ra s\u1ebd \u0111\u01b0\u1ee3c Kafka ch\u1ec9 \u0111\u1ecbnh ho\u1eb7c ch\u1ee7 \u0111\u1ed9ng ch\u1ec9 \u0111\u1ecbnh partition \u0111\u1ec3 bi\u1ebft message \u0111\u00f3 \u201c\u0111i \u0111\u00e2u v\u1ec1 \u0111\u00e2u\u201d. M\u1ed9t topic c\u00f3 th\u1ec3 c\u00f3 m\u1ed9t ho\u1eb7c nhi\u1ec1u partition.<\/li>\r\n<\/ul>\r\n<p>T\u00ean g\u1ecdi c\u1ee7a nh\u1eefng th\u00e0nh ph\u1ea7n trong m\u1ed9t h\u1ec7 th\u1ed1ng pub\/sub c\u1ee7a Kafka:<\/p>\r\n<ul>\r\n<li><i>Publisher:<\/i> T\u00ean g\u1ecdi chung c\u1ee7a nh\u1eefng ai c\u00f3 th\u1ec3 publish message l\u00ean n\u1ec1n t\u1ea3ng Kafka.<\/li>\r\n<li><i>Consumer:<\/i> Consumer l\u00e0 nh\u1eefng ai c\u00f3 th\u1ec3 subscribe v\u00e0o m\u1ed9t ho\u1eb7c nhi\u1ec1u topic c\u1ee5 th\u1ec3 v\u00e0 nh\u1eadn message thu\u1ed9c topic \u0111\u00f3 t\u1eeb h\u1ec7 th\u1ed1ng.<\/li>\r\n<li><i>Broker: <\/i>Server l\u01b0u tr\u1eef c\u00e1c topic.<\/li>\r\n<li><i>Cluster: <\/i>Nhi\u1ec1u broker c\u00f9ng l\u00e0m vi\u1ec7c v\u1edbi nhau, tr\u00e1nh single point failure (\u0111\u1ec3 to\u00e0n b\u1ed9 broker tr\u00ean c\u00f9ng m\u1ed9t server sau \u0111\u00f3 sever \u0111\u00f3 c\u00f3 v\u1ea5n \u0111\u1ec1 th\u00ec s\u1ebd g\u1eb7p \u1ea3nh h\u01b0\u1edfng to\u00e0n b\u1ed9).<\/li>\r\n<li><i>Connector:<\/i> K\u1ebft n\u1ed1i Kafka v\u1edbi c\u00e1c h\u1ec7 th\u1ed1ng c\u01a1 s\u1edf d\u1eef li\u1ec7u kh\u00e1c.<\/li>\r\n<\/ul>\r\n<h2><span class=\"ez-toc-section\" id=\"Kafka_hoat_dong_nhu_the_nao\"><\/span><b>Kafka ho\u1ea1t \u0111\u1ed9ng nh\u01b0 th\u1ebf n\u00e0o?<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\r\n<p>\u0110\u1ec3 hi\u1ec3u c\u00e1ch ho\u1ea1t \u0111\u1ed9ng c\u1ee7a Kafka, b\u1ea1n c\u00f3 th\u1ec3 tham kh\u1ea3o m\u00f4 h\u00ecnh d\u01b0\u1edbi \u0111\u00e2y:<\/p>\r\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-23035 size-full\" src=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/03\/kafka-la-gi-cach-hoat-dong-itviec.jpg\" alt=\"apache kafka l\u00e0 g\u00ec - c\u00e1ch kafka ho\u1ea1t \u0111\u1ed9ng - itviec\" width=\"826\" height=\"840\" srcset=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/03\/kafka-la-gi-cach-hoat-dong-itviec.jpg 629w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/03\/kafka-la-gi-cach-hoat-dong-itviec-295x300.jpg 295w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/03\/kafka-la-gi-cach-hoat-dong-itviec-197x200.jpg 197w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/03\/kafka-la-gi-cach-hoat-dong-itviec-98x100.jpg 98w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/03\/kafka-la-gi-cach-hoat-dong-itviec-443x450.jpg 443w\" sizes=\"auto, (max-width: 826px) 100vw, 826px\" \/><\/p>\r\n<h2><span class=\"ez-toc-section\" id=\"3_tinh_nang_chinh_cua_Kafka\"><\/span><b>3 t\u00ednh n\u0103ng ch\u00ednh c\u1ee7a Kafka<\/b><b><\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\r\n<p>Sau khi \u0111\u00e3 n\u1eafm r\u00f5 \u0111\u1ecbnh ngh\u0129a c\u01a1 b\u1ea3n Kafka l\u00e0 g\u00ec, b\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng Kafka cho nh\u1eefng m\u1ee5c \u0111\u00edch s\u1eed d\u1ee5ng n\u00e0o? Sau \u0111\u00e2y l\u00e0 <strong>3 t\u00ednh n\u0103ng ch\u00ednh c\u1ee7a Kafka<\/strong>:<\/p>\r\n<h3><strong>Ph\u00e2n ph\u1ed1i message<\/strong><\/h3>\r\n<p>C\u00e1ch ho\u1ea1t \u0111\u1ed9ng c\u1ee7a t\u00ednh n\u0103ng n\u00e0y \u0111\u00e3 \u0111\u01b0\u1ee3c gi\u1ea3i th\u00edch \u1edf tr\u00ean.<\/p>\r\n<h3><strong>Event Streaming<\/strong><\/h3>\r\n<p>Kafka l\u00e0 m\u1ed9t h\u1ec7 th\u1ed1ng Event Streaming n\u00ean hi\u1ec3n nhi\u00ean t\u00ednh n\u0103ng ch\u1ee7 y\u1ebfu c\u1ee7a Kafka ch\u00ednh l\u00e0 Event streaming. Event streaming l\u00e0 h\u00e0nh \u0111\u1ed9ng thu th\u1eadp d\u1eef li\u1ec7u d\u01b0\u1edbi d\u1ea1ng c\u00e1c lu\u1ed3ng s\u1ef1 ki\u1ec7n trong th\u1eddi gian th\u1ef1c t\u1eeb c\u00e1c ngu\u1ed3n s\u1ef1 ki\u1ec7n nh\u01b0 c\u01a1 s\u1edf d\u1eef li\u1ec7u, c\u1ea3m bi\u1ebfn v\u00e0 thi\u1ebft b\u1ecb di \u0111\u1ed9ng v\u00e0 l\u01b0u tr\u1eef c\u00e1c lu\u1ed3ng s\u1ef1 ki\u1ec7n n\u00e0y m\u1ed9t c\u00e1ch l\u00e2u d\u00e0i \u0111\u1ec3 truy xu\u1ea5t sau n\u00e0y, ph\u00e2n t\u00edch, x\u1eed l\u00fd ch\u00fang trong th\u1eddi gian th\u1ef1c v\u00e0 \u0111\u1ecbnh tuy\u1ebfn c\u00e1c lu\u1ed3ng s\u1ef1 ki\u1ec7n t\u1edbi c\u00e1c c\u00f4ng ngh\u1ec7 \u0111\u00edch kh\u00e1c nhau khi c\u1ea7n thi\u1ebft.<\/p>\r\n<p>Nh\u00ecn chung, Kafka qu\u1ea3n l\u00fd m\u1ed9t l\u01b0\u1ee3ng l\u1edbn d\u1eef li\u1ec7u di chuy\u1ec3n t\u1eeb \u0111i\u1ec3m cu\u1ed1i n\u00e0y sang \u0111i\u1ec3m cu\u1ed1i kh\u00e1c v\u00e0 \u0111\u1ea3m b\u1ea3o r\u1eb1ng t\u1ea5t c\u1ea3 d\u1eef li\u1ec7u \u0111\u1ec1u \u0111\u01b0\u1ee3c ph\u00e2n ph\u1ed1i \u0111\u1ebfn \u0111\u00fang n\u01a1i, \u0111\u00fang th\u1eddi \u0111i\u1ec3m. Kafka nh\u1eadp, l\u01b0u tr\u1eef v\u00e0 ph\u00e2n t\u00edch lu\u1ed3ng d\u1eef li\u1ec7u khi ch\u00fang \u0111\u01b0\u1ee3c t\u1ea1o, \u1edf b\u1ea5t k\u1ef3 quy m\u00f4 n\u00e0o, t\u1eeb x\u1eed l\u00fd d\u1eef li\u1ec7u th\u1eddi gian th\u1ef1c \u0111\u1ebfn l\u1eadp tr\u00ecnh lu\u1ed3ng d\u1eef li\u1ec7u.<\/p>\r\n<p>V\u00ed d\u1ee5 \u0111\u1ed1i v\u1edbi message, Kafka s\u1ebd stream m\u1ed9t message \u0111i nhi\u1ec1u n\u01a1i, nhi\u1ec1u topic kh\u00e1c nhau.<\/p>\r\n<h3><strong>L\u01b0u tr\u1eef d\u1eef li\u1ec7u<\/strong><\/h3>\r\n<p>Kafka l\u01b0u tr\u1eef message th\u1eadm ch\u00ed sau khi \u0111\u00e3 g\u1eedi \u0111i \u0111\u1ec3 ph\u00f2ng tr\u00e1nh m\u1ea5t d\u1eef li\u1ec7u. D\u1eef li\u1ec7u \u0111\u00f3 c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c d\u00f9ng \u0111\u1ec3 \u0111\u1ecdc l\u1ea1i, re-consumed, re-subscribe l\u1ea1i message tho\u1ea3i m\u00e1i theo nhu c\u1ea7u.<\/p>\r\n<p>Ngo\u00e0i vi\u1ec7c l\u01b0u tr\u1eef messages, Kafka c\u00f2n \u0111\u01b0\u1ee3c d\u00f9ng \u0111\u1ec3 l\u01b0u tr\u1eef l\u01b0\u1ee3ng d\u1eef li\u1ec7u l\u1edbn t\u1ea1o th\u00e0nh \u201cdata lake&#8221; hay c\u00f2n g\u1ecdi l\u00e0 \u201cdata warehouse&#8221;. H\u01a1n th\u1ebf, Kafka kh\u00f4ng ch\u1ec9 gi\u00fap l\u01b0u tr\u1eef d\u1eef li\u1ec7u th\u1ee5 \u0111\u1ed9ng m\u00e0 c\u00f2n \u0111\u1ec3 thu th\u1eadp v\u00e0 x\u1eed l\u00fd lu\u1ed3ng d\u1eef li\u1ec7u th\u1eddi gian th\u1ef1c. \u0110\u00e2y c\u0169ng l\u00e0 m\u1ed9t t\u00ednh n\u0103ng m\u00e0 m\u1ed9t h\u1ec7 th\u1ed1ng ph\u00e2n t\u00e1n message b\u00ecnh th\u01b0\u1eddng kh\u00f4ng c\u00f3.<\/p>\r\n<p>L\u01b0\u1ee3ng d\u1eef li\u1ec7u m\u00e0 Kafka c\u00f3 th\u1ec3 l\u01b0u tr\u1eef v\u00f4 c\u00f9ng kh\u1ed5ng l\u1ed3. V\u1edbi t\u1ea5t c\u1ea3 nh\u1eefng d\u1eef li\u1ec7u trong \u201cdata warehouse&#8221;, c\u00e1c l\u1eadp tr\u00ecnh vi\u00ean c\u00f3 th\u1ec3 \u1ee9ng d\u1ee5ng \u0111\u1ec3 x\u00e2y d\u1ef1ng nhi\u1ec1u c\u00f4ng ngh\u1ec7 kh\u00e1c nhau, v\u00ed d\u1ee5 nh\u01b0 x\u00e2y d\u1ef1ng m\u00f4 h\u00ecnh <a href=\"https:\/\/itviec.com\/blog\/machine-learning-la-gi\/\" target=\"_blank\" rel=\"noopener\">Machine Learning<\/a>, <a href=\"https:\/\/itviec.com\/blog\/ai-la-gi\/\" target=\"_blank\" rel=\"noopener\">AI<\/a>.<\/p>\r\n<blockquote><em><a href=\"https:\/\/itviec.com\/it-jobs\/developer?utm_medium=anchor_text_mid&amp;utm_source=blog_&amp;utm_campaign=viec_lam_it_developer_toan_quoc&amp;utm_content=kafka_la_gi\" target=\"_blank\" rel=\"noopener\">Vi\u1ec7c l\u00e0m IT Developer &#8220;ch\u1ea5t&#8221; to\u00e0n qu\u1ed1c tr\u00ean ITviec<\/a><\/em><\/blockquote>\r\n<h2><span class=\"ez-toc-section\" id=\"Ung_dung_cua_Kafka_la_gi\"><\/span><b>\u1ee8ng d\u1ee5ng c\u1ee7a Kafka l\u00e0 g\u00ec?<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\r\n<p>Nh\u1edd v\u00e0o kh\u1ea3 n\u0103ng x\u1eed l\u00fd v\u00e0 l\u01b0u tr\u1eef d\u1eef li\u1ec7u l\u1edbn theo th\u1eddi gian th\u1ef1c m\u1ed9t c\u00e1ch nhanh ch\u00f3ng v\u00e0 ch\u00ednh x\u00e1c, Kafka \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng b\u1edfi h\u01a1n h\u00e0ng ngh\u00ecn doanh nghi\u1ec7p, t\u1eeb ph\u1ea7n m\u1ec1m m\u00e1y t\u00ednh, d\u1ecbch v\u1ee5 t\u00e0i ch\u00ednh, ch\u0103m s\u00f3c s\u1ee9c kh\u1ecfe, cho \u0111\u1ebfn c\u00f4ng ty nh\u00e0 n\u01b0\u1edbc v\u00e0 giao th\u00f4ng v\u1eadn t\u1ea3i (theo s\u1ed1 li\u1ec7u t\u1eeb Apache), bao g\u1ed3m c\u1ea3 nh\u1eefng doanh nghi\u1ec7p to\u00e0n c\u1ea7u nh\u01b0 Grab, Airbnb, Pinterest, agoda,&#8230;<\/p>\r\n<p>Theo \u0111\u00f3, anh Phong c\u0169ng nh\u1eadn \u0111\u1ecbnh r\u1eb1ng Kafka c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c \u00e1p d\u1ee5ng r\u1ed9ng r\u00e3i, kh\u00f4ng b\u1ecb gi\u1edbi h\u1ea1n b\u1edfi b\u1ea5t k\u1ef3 ng\u00e0nh ngh\u1ec1 n\u00e0o. Anh Phong \u0111\u01b0a ra c\u00e1ch Ninja Van \u1ee9ng d\u1ee5ng c\u00f4ng ngh\u1ec7 Kafka v\u00e0o trong quy tr\u00ecnh logistic:<\/p>\r\n<blockquote><i>\u201cNinja Van th\u01b0\u1eddng xuy\u00ean ph\u1ea3i x\u1eed l\u00fd m\u1ed9t s\u1ed1 l\u01b0\u1ee3ng \u0111\u01a1n h\u00e0ng kh\u1ed5ng l\u1ed3 \u0111\u1ebfn t\u1eeb c\u00e1c n\u1ec1n t\u1ea3ng th\u01b0\u01a1ng m\u1ea1i \u0111i\u1ec7n t\u1eed (e-commerce), \u0111\u1eb7c bi\u1ec7t trong c\u00e1c d\u1ecbp khuy\u1ebfn m\u00e3i l\u1edbn di\u1ec5n ra. Ch\u00ednh v\u00ec th\u1ebf, nh\u1edd v\u00e0o c\u00f4ng ngh\u1ec7 Kafka h\u1ed7 tr\u1ee3 t\u1ed1t trong vi\u1ec7c x\u1eed l\u00fd data real time n\u00ean m\u1ecdi b\u01b0\u1edbc c\u00f3 th\u1ec3 di\u1ec5n ra tr\u01a1n tru, kh\u00f4ng b\u1ecb t\u1eafc ngh\u1ebdn.&#8221;<\/i><\/blockquote>\r\n<p>Ngo\u00e0i ra, anh c\u00f2n \u0111\u01b0a ra nh\u1eefng c\u00e1ch m\u00e0 c\u00f4ng ngh\u1ec7 Kafka c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c \u00e1p d\u1ee5ng, mang l\u1ea1i l\u1ee3i \u00edch cho nhi\u1ec1u ng\u00e0nh ngh\u1ec1 kh\u00e1c nhau:<\/p>\r\n<blockquote>\r\n<p><i>\u201cTrong ng\u00e0nh y, b\u1ec7nh vi\u1ec7n c\u00f3 th\u1ec3 d\u00f9ng c\u00f4ng ngh\u1ec7 Kafka trong vi\u1ec7c x\u00e2y d\u1ef1ng c\u00e1c c\u1ea3m bi\u1ebfn theo d\u00f5i t\u00ecnh h\u00ecnh b\u1ec7nh nh\u00e2n nh\u01b0 nh\u1ecbp tim, huy\u1ebft \u00e1p, th\u1ea7n kinh,&#8230; T\u1eeb \u0111\u00f3, c\u00e1c b\u00e1c s\u0129, y t\u00e1 theo d\u00f5i t\u00ecnh h\u00ecnh b\u1ec7nh nh\u00e2n li\u00ean t\u1ee5c theo th\u1eddi gian th\u1ef1c \u0111\u1ec3 c\u00f3 th\u1ec3 \u0111\u01b0a ra ph\u1ea3n h\u1ed3i k\u1ecbp th\u1eddi.<\/i><\/p>\r\n<p><i>Ho\u1eb7c nh\u01b0 trong ng\u00e0nh qu\u1ea3ng c\u00e1o, c\u00e1c c\u00f4ng ty qu\u1ea3ng c\u00e1o c\u00f3 th\u1ec3 d\u00f9ng Kafka l\u01b0u tr\u1eef nh\u1eefng th\u00f4ng tin v\u1ec1 h\u00e0nh vi ng\u01b0\u1eddi d\u00f9ng tr\u00ean c\u00e1c tr\u00ecnh duy\u1ec7t theo th\u1eddi gian th\u1ef1c v\u00e0 \u0111\u01b0a ra ph\u1ea3n h\u1ed3i, g\u1ee3i \u00fd qu\u1ea3ng c\u00e1o th\u00edch h\u1ee3p. V\u00ed d\u1ee5 nh\u01b0 khi b\u1ea1n v\u1eeba t\u00ecm ki\u1ebfm v\u1ec1 s\u1ea3n ph\u1ea9m A th\u00ec khi tho\u00e1t kh\u1ecfi tr\u00ecnh duy\u1ec7t \u0111\u00f3, b\u1ea1n m\u1edf \u1ee9ng d\u1ee5ng B l\u00ean th\u00ec l\u1ea1i th\u1ea5y ngay s\u1ea3n ph\u1ea9m A \u0111\u01b0\u1ee3c qu\u1ea3ng c\u00e1o ngay.\u201d<\/i><b><\/b><\/p>\r\n<\/blockquote>\r\n<h2><span class=\"ez-toc-section\" id=\"Uunhuoc_diem_cua_viec_su_dung_Kafka_la_gi\"><\/span><b>\u01afu\/nh\u01b0\u1ee3c \u0111i\u1ec3m c\u1ee7a vi\u1ec7c s\u1eed d\u1ee5ng Kafka l\u00e0 g\u00ec?<\/b><b><\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\r\n<h3><strong>\u01afu \u0111i\u1ec3m c\u1ee7a Kafka<\/strong><\/h3>\r\n<p>Kafka c\u00f3 nhi\u1ec1u \u01b0u \u0111i\u1ec3m v\u01b0\u1ee3t tr\u1ed9i \u0111\u01b0\u1ee3c r\u1ea5t nhi\u1ec1u doanh nghi\u1ec7p n\u00f3i chung, developer n\u00f3i ri\u00eang, y\u00eau th\u00edch nh\u01b0:<\/p>\r\n<ul>\r\n<li><strong>High-throughput:<\/strong> Kafka c\u00f3 th\u1ec3 deliver s\u1ed1 l\u01b0\u1ee3ng l\u1edbn m\u1ed9t c\u00e1ch nhanh ch\u00f3ng, li\u00ean t\u1ee5c, h\u1ea7u nh\u01b0 kh\u00f4ng c\u00f3 th\u1eddi gian ch\u1edd.<\/li>\r\n<li><strong>High-frequency: <\/strong>Kafka c\u00f3 th\u1ec3 c\u00f9ng l\u00fac x\u1eed l\u00fd \u0111\u01b0\u1ee3c nhi\u1ec1u message, nhi\u1ec1u th\u1ec3 lo\u1ea1i topic, nhi\u1ec1u th\u1ec3 lo\u1ea1i message t\u1ed1t.<\/li>\r\n<li><strong>Scalability (kh\u1ea3 n\u0103ng scale):<\/strong> C\u00f4ng ngh\u1ec7 Kafka th\u01b0\u1eddng \u0111\u01b0\u1ee3c do ch\u00ednh team n\u1ed9i b\u1ed9 d\u1ef1ng, t\u1ef1 qu\u1ea3n l\u00fd, t\u1ef1 c\u1ea5u h\u00ecnh theo \u00fd mu\u1ed1n v\u00e0 nhu c\u1ea7u n\u00ean r\u1ea5t d\u1ec5 scale khi c\u1ea7n thi\u1ebft.<\/li>\r\n<li><strong>C\u1ed9ng \u0111\u1ed3ng Kafka<\/strong> l\u1edbn, \u0111\u01b0\u1ee3c h\u1ed7 tr\u1ee3 nhanh m\u1ed7i khi c\u00f3 th\u1eafc m\u1eafc.<\/li>\r\n<li><strong>Open-source<\/strong><\/li>\r\n<li><strong>T\u1ef1 \u0111\u1ed9ng l\u01b0u tr\u1eef message<\/strong> tr\u00ean Kafka, d\u1ec5 d\u00e0ng truy l\u1ea1i \u0111\u01b0\u1ee3c.<\/li>\r\n<\/ul>\r\n<h3><strong>Khuy\u1ebft \u0111i\u1ec3m c\u1ee7a Kafka<\/strong><\/h3>\r\n<p>\u0110\u1ed3ng th\u1eddi, theo anh Phong, Kafka c\u0169ng c\u00f3 nhi\u1ec1u nh\u01b0\u1ee3c \u0111i\u1ec3m m\u00e0 c\u00e1c developer c\u1ea7n l\u01b0u \u00fd khi \u00e1p d\u1ee5ng:<\/p>\r\n<ul>\r\n<li aria-level=\"1\"><strong>Kh\u00f4ng c\u00f3 b\u1ed9 c\u00f4ng c\u1ee5 gi\u00e1m s\u00e1t ho\u00e0n ch\u1ec9nh:<\/strong> C\u00f3 kh\u00e1 nhi\u1ec1u tool kh\u00e1c nhau, m\u1ed7i m\u1ed9t tool l\u1ea1i h\u1ed7 tr\u1ee3 m\u1ed9t vi\u1ec7c qu\u1ea3n l\u00fd kh\u00e1c nhau cho t\u1eebng m\u1ee5c \u0111\u00edch qu\u1ea3n l\u00fd, vd nh\u01b0:\r\n<ul>\r\n<li aria-level=\"2\">Kafka tool (offset manager) GUI tool d\u00f9ng \u0111\u1ec3 qu\u1ea3n l\u00fd topic v\u00e0 consumer<\/li>\r\n<li aria-level=\"2\">Lense: d\u00f9ng \u0111\u1ec3 h\u1ed7 tr\u1ee3 vi\u1ec7c query message trong Kafka<\/li>\r\n<li aria-level=\"2\">Akhq l\u00e0 toolbox \u0111\u1ec3 qu\u1ea3n l\u00fd Kafka c\u0169ng nh\u01b0 view data b\u00ean trong Kafka<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li aria-level=\"1\"><strong>Kh\u00f4ng h\u1ed7 tr\u1ee3 ch\u1ecdn topic theo wildcard:<\/strong> Kafka kh\u00f4ng h\u1ed7 tr\u1ee3 vi\u1ec7c s\u1eed d\u1ee5ng v\u00e0 l\u1ef1a ch\u1ecdn t\u1eebng topic theo wildcard m\u00e0 ph\u1ea3i s\u1eed d\u1ee5ng ch\u00ednh x\u00e1c t\u00ean topic \u0111\u1ec3 x\u1eed l\u00fd message.<\/li>\r\n<li aria-level=\"1\"><strong>Reduces performance &#8211; Gi\u1ea3m hi\u1ec7u su\u1ea5t:<\/strong> V\u1ea5n \u0111\u1ec1 x\u1ea3y ra k\u00edch th\u01b0\u1edbc message t\u0103ng l\u00ean, bu\u1ed9c consumer v\u00e0 producer ph\u1ea3i compress v\u00e0 decompress message, l\u00e0m cho b\u1ed9 nh\u1edb s\u1ebd ch\u1eadm, d\u1eabn \u0111\u1ebfn \u1ea3nh h\u01b0\u1edfng t\u1edbi throughput v\u00e0 hi\u1ec7u su\u1ea5t.<\/li>\r\n<li aria-level=\"1\"><strong>Behave clumsy &#8211; X\u1eed l\u00fd h\u01a1i v\u1ee5ng v\u1ec1:<\/strong> \u0110\u00f4i khi do s\u1ed1 l\u01b0\u1ee3ng queues trong Kafka cluster t\u0103ng l\u00ean nhi\u1ec1u, Kafka th\u01b0\u1eddng c\u00f3 hi\u1ec7n t\u01b0\u1ee3ng x\u1eed l\u00fd ch\u1eadm ch\u1ea1p h\u01a1n.<\/li>\r\n<\/ul>\r\n<h2><span class=\"ez-toc-section\" id=\"Tai_lieu_Kafka_tham_khao\"><\/span><b>T\u00e0i li\u1ec7u Kafka tham kh\u1ea3o<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\r\n<p>\u0110\u1ec3 hi\u1ec3u r\u00f5 v\u1ec1 c\u00e1ch x\u00e2y d\u1ef1ng m\u1ed9t h\u1ec7 th\u1ed1ng Kafka c\u0169ng nh\u01b0 c\u00e1ch Kafka ho\u1ea1t \u0111\u1ed9ng, b\u1ea1n c\u00f3 th\u1ec3 truy c\u1eadp v\u00e0o t\u00e0i li\u1ec7u, b\u00e0i vi\u1ebft, video h\u01b0\u1edbng d\u1eabn t\u1ea1i:<\/p>\r\n<ul>\r\n<li>T\u00e0i li\u1ec7u ch\u00ednh th\u1ee9c, c\u01a1 b\u1ea3n \u0111i t\u1eeb \u0111\u1ecbnh ngh\u0129a Kafka l\u00e0 g\u00ec v\u00e0 ho\u00e0n to\u00e0n mi\u1ec5n ph\u00ed t\u1ea1i <a href=\"https:\/\/kafka.apache.org\/\" target=\"_blank\" rel=\"noopener\"><b>trang ch\u1ee7 c\u1ee7a Kafka<\/b><\/a>.<\/li>\r\n<li>B\u00e0i vi\u1ebft, video h\u01b0\u1edbng d\u1eabn c\u00e1ch x\u00e2y d\u1ef1ng h\u1ec7 th\u1ed1ng Kafka t\u1ea1i <a href=\"https:\/\/www.confluent.io\/\" target=\"_blank\" rel=\"noopener\"><b>Confluence<\/b><\/a>.<\/li>\r\n<\/ul>\r\n<h2><span class=\"ez-toc-section\" id=\"Kafka_va_Nhung_nen_tang_dieu_phoi_message_phan_tan_khac\"><\/span><strong>Kafka v\u00e0 Nh\u1eefng n\u1ec1n t\u1ea3ng \u0111i\u1ec1u ph\u1ed1i message ph\u00e2n t\u00e1n kh\u00e1c<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\r\n<h3><b>So s\u00e1nh chung gi\u1eefa Kafka v\u00e0 AWS SNS<\/b><\/h3>\r\n<p>AWS SNS, t\u00ean g\u1ecdi \u0111\u1ea7y \u0111\u1ee7 l\u00e0 <strong>S<\/strong>imple <strong>N<\/strong>otification <strong>S<\/strong>ervice, hay c\u00f2n hi\u1ec3u l\u00e0 d\u1ecbch v\u1ee5 th\u00f4ng b\u00e1o \u0111\u01a1n gi\u1ea3n t\u1eeb h\u1ec7 th\u1ed1ng \u0111\u1ebfn h\u1ec7 th\u1ed1ng (A2A) v\u00e0 t\u1eeb h\u1ec7 th\u1ed1ng \u0111\u1ebfn ng\u01b0\u1eddi d\u00f9ng (A2P) thu\u1ed9c Amazon.<\/p>\r\n<p>SNS ch\u1ec9 c\u00f3 t\u00ednh n\u0103ng duy nh\u1ea5t l\u00e0 \u0111\u1ea9y th\u00f4ng b\u00e1o, \u0111\u1ea9y tin nh\u1eafn. \u1ee8ng d\u1ee5ng ch\u00ednh c\u1ee7a SNS l\u00e0 d\u00f9ng \u0111\u1ec3 \u0111\u1ea9y message \u0111\u1ebfn \u0111\u1ed1i t\u01b0\u1ee3ng nh\u1eadn th\u00f4ng b\u00e1o. V\u00ed d\u1ee5 nh\u01b0 b\u1ea1n s\u1ebd nh\u1eadn \u0111\u01b0\u1ee3c th\u00f4ng b\u00e1o t\u1eeb \u1ee9ng d\u1ee5ng trong \u0111i\u1ec7n tho\u1ea1i th\u00ec c\u00f3 th\u1ec3 \u1ee9ng d\u1ee5ng \u0111\u00f3 s\u1eed d\u1ee5ng c\u00f4ng ngh\u1ec7 SNS \u0111\u1ec3 \u0111\u1ea9y tr\u1ef1c ti\u1ebfp message t\u1eeb h\u1ec7 th\u1ed1ng l\u00ean \u0111i\u1ec7n tho\u1ea1i c\u00f3 app \u0111\u00f3.<\/p>\r\n<p>Ngo\u00e0i th\u00f4ng b\u00e1o \u0111\u1ea9y t\u1eeb \u1ee9ng d\u1ee5ng tr\u00ean \u0111i\u1ec7n tho\u1ea1i, SNS c\u00f2n cho ph\u00e9p b\u1ea1n g\u1eedi tin nh\u1eafn t\u1edbi ng\u01b0\u1eddi d\u00f9ng tr\u00ean quy m\u00f4 l\u1edbn th\u00f4ng qua SMS v\u00e0 email.<\/p>\r\n<p>Nh\u00ecn chung, SNS ho\u1ea1t \u0111\u1ed9ng nh\u01b0 m\u1ed9t k\u00eanh giao ti\u1ebfp \u0111\u1ea9y message thu\u1ea7n t\u00fay, broadcast ra t\u1ea5t c\u1ea3 nh\u1eefng ng\u01b0\u1eddi \u0111ang l\u1eafng nghe topic \u0111\u00f3, ngo\u00e0i ra kh\u00f4ng c\u00f3 t\u00ednh n\u0103ng n\u00e0o kh\u00e1c.<\/p>\r\n<blockquote>\r\n<p><em>B\u1ea1n c\u00f3 th\u1ec3 tham kh\u1ea3o th\u00eam th\u00f4ng tin v\u1ec1 SNS t\u1ea1i <a href=\"https:\/\/aws.amazon.com\/vi\/sns\/\" target=\"_blank\" rel=\"noopener\"><b>trang ch\u1ee7 c\u1ee7a AWS<\/b><\/a>.<\/em><\/p>\r\n<\/blockquote>\r\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-23036 size-full\" src=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/03\/amazon-sns-la-gi-itviec.png\" alt=\"amazon sns - itviec\" width=\"2084\" height=\"1042\" srcset=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/03\/amazon-sns-la-gi-itviec.png 640w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/03\/amazon-sns-la-gi-itviec-300x150.png 300w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/03\/amazon-sns-la-gi-itviec-200x100.png 200w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/03\/amazon-sns-la-gi-itviec-100x50.png 100w\" sizes=\"auto, (max-width: 2084px) 100vw, 2084px\" \/><\/p>\r\n<p>SNS ho\u1ea1t \u0111\u1ed9ng theo hai h\u00ecnh th\u1ee9c l\u00e0 standard v\u00e0 freeflow:<\/p>\r\n<ul>\r\n<li aria-level=\"1\">Standard: H\u1ec7 th\u1ed1ng s\u1ebd g\u1eedi SNS \u0111\u1ebfn t\u1ea5t c\u1ea3 nh\u1eefng ng\u01b0\u1eddi \u0111ang l\u1eafng nghe topic \u0111\u00f3, kh\u00f4ng quan t\u00e2m \u0111\u1ebfn tr\u1eadt t\u1ef1 c\u1ee7a message.<\/li>\r\n<li aria-level=\"1\">Free-flow: H\u1ec7 th\u1ed1ng s\u1ebd g\u1eedi SNS theo tr\u1eadt t\u1ef1 \u201cfirst in, first out\u201d. Tuy nhi\u00ean, n\u1ebfu mu\u1ed1n g\u1eedi SNS theo h\u00ecnh th\u1ee9c n\u00e0y th\u00ec b\u1ea1n c\u1ea7n \u0111\u0103ng k\u00fd AWS SQS (<strong>S<\/strong>imple <strong>Q<\/strong>ueue <strong>S<\/strong>ervice).<\/li>\r\n<\/ul>\r\n<p>Do \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd v\u00e0 v\u1eadn h\u00e0nh b\u1edfi Amazon n\u00ean AWS SNS s\u1edf h\u1eefu nhi\u1ec1u \u01b0u \u0111i\u1ec3m:<\/p>\r\n<ul>\r\n<li aria-level=\"1\">Kh\u00f4ng b\u1ecb gi\u1edbi h\u1ea1n b\u1edfi v\u1eadt l\u00fd, b\u1ea1n c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c truy c\u1eadp v\u00e0o h\u1ec7 th\u1ed1ng \u1edf b\u1ea5t k\u1ef3 \u1edf \u0111\u00e2u tr\u00ean th\u1ebf gi\u1edbi. H\u1ec7 th\u1ed1ng kh\u00f4ng gi\u1edbi h\u1ea1n b\u1ea1n ph\u1ea3i \u0111\u1eb7t server ph\u1ea3i \u1edf \u0111\u00e2u.<\/li>\r\n<li aria-level=\"1\">\u0110\u01b0\u1ee3c AWS h\u1ed7 tr\u1ee3 qu\u1ea3n l\u00fd.<\/li>\r\n<li aria-level=\"1\">T\u00edch h\u1ee3p nhi\u1ec1u d\u1ecbch v\u1ee5 kh\u00e1c c\u1ee7a Amazon: SQS, Kinesis (d\u1ecbch v\u1ee5 data streaming t\u1ef1a nh\u01b0 Kafka),&#8230; N\u1ebfu mu\u1ed1n k\u1ebft h\u1ee3p c\u1ea3 d\u1ecbch v\u1ee5 pub\/sub message v\u00e0 data streaming ho\u00e0n ch\u1ec9nh nh\u01b0 Kafka th\u00ec AWS c\u00f3 d\u1ecbch v\u1ee5 MSK &#8211; s\u1ebd \u0111\u01b0\u1ee3c ph\u00e2n t\u00edch ti\u1ebfp theo trong b\u00e0i vi\u1ebft n\u00e0y.<\/li>\r\n<\/ul>\r\n<p>Tuy nhi\u00ean, theo anh Phong, ch\u1ec9 x\u00e9t v\u1ec1 t\u00ednh n\u0103ng \u0111\u1ea9y message th\u00ec SNS c\u0169ng c\u00f3 nh\u1eefng nh\u01b0\u1ee3c \u0111i\u1ec3m nh\u01b0 sau:<\/p>\r\n<ul>\r\n<li aria-level=\"1\">N\u1ebfu mu\u1ed1n deliver message nhanh m\u00e0 c\u00f3 tr\u1eadt t\u1ef1 th\u00ec ph\u1ea3i s\u1eed d\u1ee5ng SQS chi ph\u00ed cao h\u01a1n.<\/li>\r\n<li aria-level=\"1\">Kh\u00f4ng l\u01b0u tr\u1eef message. V\u00ed d\u1ee5 nh\u01b0 khi deliver message fail nh\u01b0ng SNS s\u1ebd kh\u00f4ng l\u01b0u tr\u1eef l\u1ea1i \u0111\u1ec3 deliver l\u1ea1i, ho\u1eb7c reuse trong t\u01b0\u01a1ng lai.<\/li>\r\n<\/ul>\r\n<blockquote><i>Tham kh\u1ea3o <\/i><a href=\"https:\/\/aws.amazon.com\/vi\/sns\/pricing\/\" target=\"_blank\" rel=\"noopener\"><b><i>chi ph\u00ed SNS<\/i><\/b><\/a><i> v\u00e0 <\/i><a href=\"https:\/\/aws.amazon.com\/vi\/sqs\/pricing\/\" target=\"_blank\" rel=\"noopener\"><b><i>chi ph\u00ed SQS<\/i><\/b><\/a><i>.<\/i><\/blockquote>\r\n<p>Sau khi t\u00ecm hi\u1ec3u \u0111\u01b0\u1ee3c Kafka l\u00e0 g\u00ec, SNS l\u00e0 g\u00ec, t\u00ednh n\u0103ng v\u00e0 c\u00e1ch ho\u1ea1t \u0111\u1ed9ng c\u1ee7a c\u1ea3 hai h\u1ec7 th\u1ed1ng, \u1eaft h\u1eb3n b\u1ea1n s\u1ebd th\u1eafc m\u1eafc n\u00ean s\u1eed d\u1ee5ng h\u1ec7 th\u1ed1ng n\u00e0o cho doanh nghi\u1ec7p c\u1ee7a m\u00ecnh?<\/p>\r\n<p>Sau \u0111\u00e2y l\u00e0 b\u1ea3ng so s\u00e1nh gi\u1eefa Kafka v\u00e0 SNS d\u1ef1a tr\u00ean t\u00ednh n\u0103ng g\u1eedi message:<\/p>\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>\u00a0<\/td>\r\n<td><b>Kafka<\/b><\/td>\r\n<td><b>SNS<\/b><\/td>\r\n<\/tr>\r\n<tr>\r\n<td><b>\u0110\u1ecbnh ngh\u0129a<\/b><\/td>\r\n<td>Kafka l\u00e0 g\u00ec? Kafka l\u00e0 h\u1ec7 th\u1ed1ng \u0111i\u1ec1u ph\u1ed1i message phi t\u1eadp trung (ph\u00e2n t\u00e1n).<\/td>\r\n<td>SNS l\u00e0 d\u1ecbch v\u1ee5 push notif t\u1edbi c\u00e1c consumer \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd, v\u00e0 r\u1ea5t \u0111a d\u1ea1ng c\u00e1c lo\u1ea1i thi\u1ebft b\u1ecb c\u0169ng nh\u01b0 consumer service, kh\u00f4ng gi\u1edbi h\u1ea1n \u1edf web server hay email.<\/td>\r\n<\/tr>\r\n<tr>\r\n<td><b>Open source<\/b><\/td>\r\n<td>C\u00f3<\/td>\r\n<td>Kh\u00f4ng<\/td>\r\n<\/tr>\r\n<tr>\r\n<td><b>Ng\u00f4n ng\u1eef h\u1ed7 tr\u1ee3<\/b><\/td>\r\n<td>Go, Haskell, <a href=\"https:\/\/itviec.com\/blog\/11-sach-hoc-lap-trinh-php\/\" target=\"_blank\" rel=\"noopener\">PHP<\/a>, <a href=\"https:\/\/itviec.com\/blog\/tai-lieu-lap-trinh-python\/\" target=\"_blank\" rel=\"noopener\">Python<\/a>, <a href=\"https:\/\/itviec.com\/blog\/lap-trinh-c-2\/\" target=\"_blank\" rel=\"noopener\">C#<\/a>, <a href=\"https:\/\/itviec.com\/blog\/ruby-on-rails-la-gi\/\" target=\"_blank\" rel=\"noopener\">Ruby<\/a>, <a href=\"https:\/\/itviec.com\/blog\/hoc-nodejs\/\" target=\"_blank\" rel=\"noopener\">NodeJS<\/a>, Ocaml<\/td>\r\n<td>Java, Python, Ruby, PHP, NodeJS<\/td>\r\n<\/tr>\r\n<tr>\r\n<td><b>L\u01b0u tr\u1eef message<\/b><\/td>\r\n<td>Kafka l\u01b0u tr\u1eef message v\u00f4 th\u1eddi h\u1ea1n k\u1ec3 c\u1ea3 sau khi \u0111\u00e3 g\u1eedi \u0111i.<\/td>\r\n<td>SNS kh\u00f4ng l\u01b0u l\u1ea1i message sau khi deliver.<\/td>\r\n<\/tr>\r\n<tr>\r\n<td><b>Tr\u1eadt t\u1ef1 c\u1ee7a message<\/b><\/td>\r\n<td>Kafka nh\u1eadn v\u00e0 g\u1eedi message\/event theo tr\u1eadt t\u1ef1.<\/td>\r\n<td>SNS kh\u00f4ng c\u00f3 ch\u1ec9 m\u1ee5c c\u1ee5 th\u1ec3 v\u1ec1 tr\u1eadt t\u1ef1 c\u1ee7a message\/event (tr\u1eeb khi s\u1eed d\u1ee5ng th\u00eam SQS \u0111\u1ec3 c\u00f3 th\u1ec3 \u0111\u1ea3m b\u1ea3o FIFO c\u1ee7a message)<\/td>\r\n<\/tr>\r\n<tr>\r\n<td><b>Message\/event streaming<\/b><\/td>\r\n<td>Message\/event streaming l\u00e0 m\u1ed9t trong nh\u1eefng t\u00ednh n\u0103ng ch\u00ednh c\u1ee7a Kafka<\/td>\r\n<td>SNS kh\u00f4ng h\u1ed7 tr\u1ee3 kh\u00e1i ni\u1ec7m \u201cmessage\/event streaming&#8221;<\/td>\r\n<\/tr>\r\n<tr>\r\n<td><b>Gi\u1edbi h\u1ea1n v\u1ec1 message<\/b><\/td>\r\n<td>Kafka gi\u1edbi h\u1ea1n lo\u1ea1i consumer. Ngo\u00e0i ra, Kafka ch\u1ec9 c\u00f3 m\u1ed9t v\u00e0i thi\u1ebft b\u1ecb m\u1edbi x\u00e0i \u0111\u01b0\u1ee3c ho\u1eb7c internal service m\u1edbi x\u00e0i \u0111\u01b0\u1ee3c.<\/td>\r\n<td>SNS c\u00f3 nhi\u1ec1u gi\u1edbi h\u1ea1n v\u1ec1 message: TTL (time-to-live), size of message. SNS c\u00f3 th\u1ec3 g\u1eedi message \u0111\u1ebfn nhi\u1ec1u qu\u1ed1c gia to\u00e0n c\u1ea7u.<\/td>\r\n<\/tr>\r\n<tr>\r\n<td><b>Kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng (Scalability)<\/b><\/td>\r\n<td>V\u00ec l\u00e0 open-source n\u00ean khi set up h\u1ec7 th\u1ed1ng Kafka \u0111\u00f2i h\u1ecfi user ph\u1ea3i l\u00e0 ng\u01b0\u1eddi t\u1ef1 setup, c\u1ea5u h\u00ecnh v\u00e0 qu\u1ea3n l\u00fd, n\u00ean vi\u1ec7c scale c\u0169ng s\u1ebd ph\u1ea3i do b\u1ea3n th\u00e2n ng\u01b0\u1eddi qu\u1ea3n l\u00fd t\u00ednh to\u00e1n, kh\u00f3 c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c t\u1ef1 \u0111\u1ed9ng nh\u01b0 AWS.<\/td>\r\n<td>SNS \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd v\u00e0 v\u1eadn h\u00e0nh b\u1edfi AWS n\u00ean kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng s\u1ebd r\u1ea5t cao v\u00e0 t\u1ed1t, d\u1ec5 d\u00e0ng setup c\u0169ng nh\u01b0 c\u1ea5u h\u00ecnh, d\u1ec5 d\u00e0ng t\u00edch h\u1ee3p v\u1edbi SQS c\u0169ng nh\u01b0 c\u00e1c d\u1ecbch v\u1ee5 kh\u00e1c trong h\u1ec7 sinh th\u00e1i AWS.<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<p>T\u00f3m t\u1eaft l\u1ea1i:<\/p>\r\n<ul>\r\n<li aria-level=\"1\">SNS ch\u1ec9 h\u1ed7 tr\u1ee3 theo \u0111\u00fang \u0111\u1ecbnh ngh\u0129a, \u0111\u01a1n thu\u1ea7n l\u00e0 vi\u1ec7c nh\u1eadn v\u00e0 \u0111\u1ea9y message t\u1edbi c\u00e1c thi\u1ebft b\u1ecb cu\u1ed1i, trong khi \u0111\u00f3, Kafka l\u1ea1i h\u1ed7 tr\u1ee3 nhi\u1ec1u h\u01a1n cho c\u00e1c m\u1ee5c \u0111\u00edch d\u1ecbch v\u1ee5 \u0111a d\u1ea1ng bao g\u1ed3m data streaming, message broker system, data pipeline ho\u1eb7c log aggregator.<\/li>\r\n<li aria-level=\"1\">Kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng c\u1ee7a SNS v\u00e0 Kafka t\u00f9y thu\u1ed9c v\u00e0o nhu c\u1ea7u s\u1eed d\u1ee5ng, nh\u01b0ng nh\u00ecn chung c\u1ea3 2 \u0111\u1ec1u \u0111\u00e1p \u1ee9ng r\u1ea5t t\u1ed1t vi\u1ec7c m\u1edf r\u1ed9ng quy m\u00f4 h\u1ec7 th\u1ed1ng.<\/li>\r\n<\/ul>\r\n<p>V\u1eady th\u00ec c\u00f4ng ty b\u1ea1n n\u00ean s\u1eed d\u1ee5ng Kafka hay SNS?<\/p>\r\n<ul>\r\n<li aria-level=\"1\">N\u1ebfu b\u1ea1n s\u1edf h\u1eefu \u0111\u1ed9i ng\u0169 developer c\u00f3 kinh nghi\u1ec7m, mong mu\u1ed1n \u0111\u01b0\u1ee3c t\u1ef1 x\u00e2y d\u1ef1ng h\u1ec7 th\u1ed1ng \u0111\u1ec3 t\u1ef1 qu\u1ea3n l\u00fd v\u00e0 scale l\u1edbn h\u01a1n (VD h\u00e0ng t\u1ec9 user events m\u1ed7i ng\u00e0y) th\u00ec n\u00ean ch\u1ecdn Kafka.<\/li>\r\n<li aria-level=\"1\">N\u1ebfu b\u1ea1n ch\u1ec9 mu\u1ed1n m\u1ed9t h\u1ec7 th\u1ed1ng t\u1ed1i gi\u1ea3n \u0111\u1ec3 delivery notification, d\u00f9ng \u0111\u1ebfn \u0111\u00e2u tr\u1ea3 ti\u1ec1n \u0111\u1ebfn \u0111\u00f3 v\u00e0 kh\u00f4ng quan tr\u1ecdng v\u1ec1 l\u01b0u tr\u1eef d\u1eef li\u1ec7u \u0111\u00f3 th\u00ec ch\u1ecdn s\u1eed d\u1ee5ng SNS l\u00e0 t\u1ed1i \u01b0u h\u01a1n.<\/li>\r\n<\/ul>\r\n<blockquote>\r\n<p><a href=\"https:\/\/itviec.com\/it-jobs\/developer\/ho-chi-minh-hcm?utm_medium=anchor_text_mid&amp;utm_source=blog_&amp;utm_campaign=viec_lam_it_developer_tp_hcm&amp;utm_content=kafka_la_gi\" target=\"_blank\" rel=\"noopener\"><em>Vi\u1ec7c l\u00e0m IT Developer &#8220;ch\u1ea5t&#8221; \u1edf TP.HCM tr\u00ean ITviec<\/em><\/a><\/p>\r\n<p><a href=\"https:\/\/itviec.com\/it-jobs\/developer\/ha-noi?utm_medium=anchor_text_mid&amp;utm_source=blog_&amp;utm_campaign=viec_lam_it_developer_ha_noi&amp;utm_content=kafka_la_gi\" target=\"_blank\" rel=\"noopener\"><em>Vi\u1ec7c l\u00e0m IT Developer &#8220;ch\u1ea5t&#8221; \u1edf H\u00e0 N\u1ed9i tr\u00ean ITviec<\/em><\/a><\/p>\r\n<p><a href=\"https:\/\/itviec.com\/it-jobs\/developer\/da-nang?utm_medium=anchor_text_mid&amp;utm_source=blog_&amp;utm_campaign=viec_lam_it_developer_da_nang&amp;utm_content=kafka_la_gi\" target=\"_blank\" rel=\"noopener\">Vi\u1ec7c l\u00e0m IT Developer &#8220;ch\u1ea5t&#8221; \u1edf \u0110\u00e0 N\u1eb5ng tr\u00ean ITviec<\/a><\/p>\r\n<\/blockquote>\r\n<h3><b>So s\u00e1nh chung gi\u1eefa Kafka v\u00e0 <\/b><b>AWS MSK<\/b><\/h3>\r\n<p><a href=\"https:\/\/aws.amazon.com\/vi\/msk\/\" target=\"_blank\" rel=\"noopener\"><strong>AWS MSK<\/strong><\/a> (t\u00ean g\u1ecdi \u0111\u1ea7y \u0111\u1ee7: Amazon <b>M<\/b>anaged <b>S<\/b>treaming for Apache <b>K<\/b>afka) l\u00e0 d\u1ecbch v\u1ee5 streaming ch\u1ea1y Kafka do AWS cung c\u1ea5p v\u00e0 qu\u1ea3n l\u00fd. N\u00f3i c\u00e1ch kh\u00e1c, AWS MSK gi\u00fap doanh nghi\u1ec7p thu th\u1eadp v\u00e0 x\u1eed l\u00fd real-time data b\u1eb1ng Kafka nh\u01b0ng do AWS h\u1ed7 tr\u1ee3, doanh nghi\u1ec7p kh\u00f4ng c\u1ea7n t\u1ef1 x\u00e2y d\u1ef1ng h\u1ec7 th\u1ed1ng v\u00e0 qu\u1ea3n l\u00fd.<\/p>\r\n<p>V\u1eady th\u00ec, khi nhu c\u1ea7u c\u1ee7a doanh nghi\u1ec7p kh\u00f4ng ch\u1ec9 d\u1eebng l\u1ea1i \u1edf vi\u1ec7c pub\/sub message th\u00ec b\u1ea1n n\u00ean s\u1eed d\u1ee5ng Kafka hay MSK?<\/p>\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td>\u00a0<\/td>\r\n<td><b>Kafka<\/b><\/td>\r\n<td><b>MSK<\/b><\/td>\r\n<\/tr>\r\n<tr>\r\n<td><b>\u0110\u1ecbnh ngh\u0129a<\/b><\/td>\r\n<td>Kafka l\u00e0 g\u00ec? Kafka l\u00e0 h\u1ec7 th\u1ed1ng \u0111i\u1ec1u ph\u1ed1i message phi t\u1eadp trung (ph\u00e2n t\u00e1n) v\u00e0 thu th\u1eadp, x\u1eed l\u00fd, l\u01b0u tr\u1eef v\u00e0 ph\u00e2n t\u00edch d\u1eef li\u1ec7u \u1edf quy m\u00f4 l\u1edbn.<\/td>\r\n<td>MSK l\u00e0 d\u1ecbch v\u1ee5 c\u1ee7a AWS h\u1ed7 tr\u1ee3 developer c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng Kafka cluster tr\u1ef1c ti\u1ebfp tr\u00ean AWS m\u00e0 kh\u00f4ng c\u1ea7n ph\u1ea3i t\u1ef1 setup nh\u01b0 on-premise.<\/td>\r\n<\/tr>\r\n<tr>\r\n<td><b>T\u00ednh n\u0103ng<\/b><\/td>\r\n<td>\r\n<ul>\r\n<li>Ph\u00e2n ph\u1ed1i message<\/li>\r\n<li>Data streaming<\/li>\r\n<li>L\u01b0u tr\u1eef d\u1eef li\u1ec7u<\/li>\r\n<\/ul>\r\n<\/td>\r\n<td>T\u00ednh n\u0103ng c\u1ee7a MSK t\u01b0\u01a1ng t\u1ef1 nh\u01b0 Kafka khi setup tr\u00ean on-premise. MSK c\u00f3 l\u1ee3i th\u1ebf l\u00e0 \u0111\u01b0\u1ee3c v\u1eadn h\u00e0nh v\u00e0 qu\u1ea3n l\u00fd b\u1edfi AWS n\u00ean user kh\u00f4ng c\u1ea7n ph\u1ea3i lo l\u1eafng nhi\u1ec1u v\u1ec1 vi\u1ec7c ph\u1ea3i qu\u1ea3n l\u00fd c\u00e1c cluster server th\u1ee5 \u0111\u1ed9ng m\u00e0 AWS s\u1ebd h\u1ed7 tr\u1ee3 b\u1ea1n l\u00e0m vi\u1ec7c \u0111\u00f3. User ch\u1ec9 c\u1ea7n c\u1ea5u h\u00ecnh v\u00e0 s\u1eed d\u1ee5ng c\u00e1c d\u1ecbch v\u1ee5 trong h\u1ec7 th\u1ed1ng.<\/td>\r\n<\/tr>\r\n<tr>\r\n<td><b>Chi ph\u00ed<\/b><\/td>\r\n<td>Mi\u1ec5n ph\u00ed. Tuy nhi\u00ean, khi h\u1ec7 th\u1ed1ng qu\u00e1 l\u1edbn, vi\u1ec7c th\u00eam cluster v\u00e0o Kafka s\u1ebd d\u1eabn \u0111\u1ebfn b\u00e0i to\u00e1n b\u1ea3o tr\u00ec v\u00e0 chi ph\u00ed v\u1eadn h\u00e0nh c\u00e1c bare metal cluster cho Kafka.<\/td>\r\n<td>\r\n<p>Chi ph\u00ed cao hay th\u1ea5p t\u00f9y thu\u1ed9c theo s\u1ed1 l\u01b0\u1ee3ng cluster m\u00e0 user mong mu\u1ed1n.<\/p>\r\n<p>Trade-off cost khi s\u1eed d\u1ee5ng MSK c\u00f3 th\u1ec3 s\u1ebd cao h\u01a1n so v\u1edbi vi\u1ec7c s\u1eed d\u1ee5ng Kafka khi c\u00e1c h\u1ec7 th\u1ed1ng kh\u00f4ng s\u1eed d\u1ee5ng nhi\u1ec1u d\u1ecbch v\u1ee5 kh\u00e1c c\u1ee7a AWS. M\u1ed7i khi c\u1ea7n th\u00eam cluster, user ch\u1ec9 c\u1ea7n t\u0103ng cost \u0111\u1ec3 s\u1eed d\u1ee5ng, v\u00e0 AWS s\u1ebd lo li\u1ec7u m\u1ecdi th\u1ee9 c\u00f2n l\u1ea1i.<\/p>\r\n<\/td>\r\n<\/tr>\r\n<tr>\r\n<td><b>Qu\u1ea3n l\u00fd<\/b><\/td>\r\n<td>Kafka y\u00eau c\u1ea7u user ph\u1ea3i t\u1ef1 v\u1eadn h\u00e0nh, b\u1ea3o tr\u00ec c\u0169ng nh\u01b0 setup v\u00e0 config.<\/td>\r\n<td>MSK s\u1ebd \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd v\u00e0 v\u1eadn h\u00e0nh b\u1edfi AWS, user ch\u1ec9 vi\u1ec7c config v\u00e0 s\u1eed d\u1ee5ng.<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<p>T\u00f3m t\u1eaft l\u1ea1i:<\/p>\r\n<ul>\r\n<li aria-level=\"1\">MSK s\u1ebd c\u00f3 l\u1ee3i th\u1ebf h\u01a1n Kafka thu\u1ea7n v\u1ec1 m\u1eb7t hi\u1ec7u su\u1ea5t v\u00ec c\u00e1c server v\u00e0 cluster do AWS qu\u1ea3n l\u00fd c\u0169ng nh\u01b0 v\u1eadn h\u00e0nh n\u00ean s\u1ebd \u0111\u1ea3m b\u1ea3o ch\u1ea5t l\u01b0\u1ee3ng c\u1ee7a server h\u01a1n l\u00e0 on-premise.<\/li>\r\n<li aria-level=\"1\">MSK s\u1ebd ti\u1ec7n l\u1ee3i cho c\u00e1c c\u00f4ng ty \u0111ang s\u1eed d\u1ee5ng c\u00e1c d\u1ecbch v\u1ee5 kh\u00e1c c\u1ee7a AWS trong h\u1ec7 th\u1ed1ng c\u1ee7a m\u00ecnh.<\/li>\r\n<li aria-level=\"1\">Vi\u1ec7c s\u1eed d\u1ee5ng MSK hay kh\u00f4ng t\u00f9y thu\u1ed9c v\u00e0o nhu c\u1ea7u c\u1ee7a t\u1eebng c\u00f4ng ty t\u1ea1i t\u1eebng th\u1eddi \u0111i\u1ec3m c\u1ee5 th\u1ec3 c\u0169ng nh\u01b0 y\u00eau c\u1ea7u c\u1ee5 th\u1ec3.<\/li>\r\n<\/ul>\r\n<p>Nh\u00ecn chung, Kafka l\u00e0 m\u1ed9t h\u1ec7 th\u1ed1ng tuy\u1ec7t v\u1eddi d\u00f9ng \u0111\u1ec3 x\u1eed l\u00fd c\u00e1c kh\u1ed1i d\u1eef li\u1ec7u kh\u1ed5ng l\u1ed3. M\u00f4 h\u00ecnh c\u1ee7a Kafka cho ph\u00e9p doanh nghi\u1ec7p h\u01b0\u1edfng l\u1ee3i v\u1edbi nhi\u1ec1u t\u00ednh n\u0103ng kh\u00e1c nhau c\u0169ng nh\u01b0 cho ph\u00e9p consumer x\u1eed l\u00fd message tho\u1ea3i m\u00e1i t\u00f9y theo nhu c\u1ea7u.<\/p>\r\n<p>Sau khi t\u00ecm hi\u1ec3u r\u00f5 r\u00e0ng v\u1ec1 Kafka l\u00e0 g\u00ec, t\u00ednh n\u0103ng c\u1ee7a Kafka c\u0169ng nh\u01b0 c\u00e1c h\u1ec7 th\u1ed1ng kh\u00e1c v\u1edbi t\u00ednh n\u0103ng t\u01b0\u01a1ng t\u1ef1, c\u00e1c b\u1ea1n c\u00f3 th\u1ec3 \u0111\u01b0a ra quy\u1ebft \u0111\u1ecbnh n\u00ean s\u1eed d\u1ee5ng h\u1ec7 th\u1ed1ng n\u00e0o t\u00f9y thu\u1ed9c v\u00e0o nhu c\u1ea7u, ngu\u1ed3n l\u1ef1c.<\/p>\r\n<blockquote>\r\n<p>\u0110\u1ecdc th\u00eam: <a href=\"https:\/\/itviec.com\/blog\/aws-la-gi\/\" target=\"_blank\" rel=\"noopener\">AWS l\u00e0 g\u00ec? C\u00e1c t\u00ednh n\u0103ng v\u00e0 d\u1ecbch v\u1ee5 ch\u00ednh c\u1ee7a AWS<\/a><\/p>\r\n<\/blockquote>\r\n<h2><span class=\"ez-toc-section\" id=\"Thong_tin_ve_anh_Le_Nguyen_Phong\"><\/span><b>Th\u00f4ng tin v\u1ec1 anh L\u00ea Nguy\u00ean Phong<\/b><span class=\"ez-toc-section-end\"><\/span><\/h2>\r\n<p>Hi\u1ec7n nay, anh L\u00ea Nguy\u00ean Phong, v\u1edbi h\u01a1n 10 n\u0103m kinh nghi\u1ec7m trong ng\u00e0nh CNTT, \u0111ang c\u00f4ng t\u00e1c t\u1ea1i <b>Ninja Van<\/b> v\u1edbi v\u1ecb tr\u00ed <b>Senior Software Engineer <\/b>t\u1eeb n\u0103m 2019.<\/p>\r\n<p>Tr\u01b0\u1edbc \u0111\u00f3, t\u1eeb n\u0103m 2013, anh Phong \u0111\u00e3 c\u00f3 6 n\u0103m kinh nghi\u1ec7m \u1edf v\u1ecb tr\u00ed PHP Developer t\u1ea1i nhi\u1ec1u c\u00f4ng ty l\u1edbn t\u1ea1i Vi\u1ec7t Nam nh\u01b0 NAVIGOS GROUP VIETNAM JSC, TMA Solution, CA-ADVANCE VIETNAM JSC,\u2026<\/p>\r\n<p>Anh Phong chuy\u00ean nhi\u1ec1u c\u00e1c ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh nh\u01b0 PHP, Golang, JavaScript, Python,\u2026 v\u00e0 c\u00f3 kinh nghi\u1ec7m l\u00e0m vi\u1ec7c \u1edf c\u00e1c platform kh\u00e1c nhau nh\u01b0 Ecommerce, Logistics, HR Tech, CRM. \u00a0<\/p>\r\n<!-- \/wp:post-content -->\r\n\r\n<!-- wp:image {\"align\":\"center\",\"id\":5668,\"sizeSlug\":\"full\",\"linkDestination\":\"none\"} -->\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"300\" class=\"wp-image-5668 aligncenter\" src=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2015\/07\/Robby2.png\" alt=\"robby-2\" srcset=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2015\/07\/Robby2.png 300w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2015\/07\/Robby2-200x200.png 200w, https:\/\/itviec.com\/blog\/wp-content\/uploads\/2015\/07\/Robby2-60x60.png 60w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/figure>\r\n<\/div>\r\n<p style=\"text-align: center;\"><!-- \/wp:image -->\r\n\r\n<!-- wp:paragraph {\"align\":\"center\"} --><\/p>\r\n<p id=\"block-bdf220a1-3635-4794-9101-81d879939b92\" class=\"has-text-align-center\" style=\"text-align: center;\"><strong>B\u1ea1n th\u1ea5y b\u00e0i vi\u1ebft hay v\u00e0 c\u1ea7n thi\u1ebft v\u1edbi nhi\u1ec1u ng\u01b0\u1eddi? \u0110\u1eebng ng\u1ea1i nh\u1ea5n n\u00fat Share b\u00ean d\u01b0\u1edbi nh\u00e9.<\/strong><\/p>\r\n<p style=\"text-align: center;\"><!-- \/wp:paragraph -->\r\n\r\n<!-- wp:paragraph {\"align\":\"center\"} --><\/p>\r\n<p id=\"block-a1315aab-406f-48df-97fc-6b9584e6e134\" class=\"has-text-align-center\" style=\"text-align: center;\"><strong>V\u00e0 \u0111\u1eebng qu\u00ean tham kh\u1ea3o <a href=\"https:\/\/itviec.com\/it-jobs?utm_medium=anchor_text_low&amp;utm_source=blog_&amp;utm_campaign=viec_lam_it&amp;utm_content=kafka_la_gi\" target=\"_blank\" rel=\"noreferrer noopener\">vi\u1ec7c l\u00e0m IT<\/a> tr\u00ean ITviec<\/strong>!<\/p>","protected":false},"excerpt":{"rendered":"<p>Kafka l\u00e0 g\u00ec? Kafka l\u00e0 m\u1ed9t trong nh\u1eefng n\u1ec1n t\u1ea3ng \u0111i\u1ec1u ph\u1ed1i message ph\u00e2n t\u00e1n ph\u1ed5 bi\u1ebfn nh\u1ea5t tr\u00ean th\u1ecb tr\u01b0\u1eddng hi\u1ec7n nay. Tuy nhi\u00ean, kh\u00f4ng ch\u1ec9 d\u1eebng l\u1ea1i \u1edf \u0111\u00f3, Kafka c\u00f2n mang l\u1ea1i cho doanh nghi\u1ec7p c\u1ee7a b\u1ea1n nh\u1eefng l\u1ee3i \u00edch tuy\u1ec7t v\u1eddi c\u1ea3 v\u1ec1 t\u00ednh n\u0103ng l\u1eabn chi ph\u00ed. \u0110\u1ec3 hi\u1ec3u r\u00f5 [&hellip;]<\/p>\n","protected":false},"author":95,"featured_media":23039,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_gspb_post_css":"","footnotes":""},"categories":[109,10206],"tags":[],"class_list":["post-23021","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-chuyen-mon-it","category-lanh-dao-it"],"blocksy_meta":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.8 (Yoast SEO v27.7) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Apache Kafka l\u00e0 g\u00ec? T\u00ecm hi\u1ec3u Kafka stream, Kafka d\u00f9ng \u0111\u1ec3 l\u00e0m g\u00ec<\/title>\n<meta name=\"description\" content=\"Kafka l\u00e0 g\u00ec? Kafka l\u00e0 m\u1ed9t n\u1ec1n t\u1ea3ng \u0111i\u1ec1u ph\u1ed1i message ph\u00e2n t\u00e1n v\u00e0 mang l\u1ea1i nh\u1eefng l\u1ee3i \u00edch tuy\u1ec7t v\u1eddi c\u1ea3 v\u1ec1 t\u00ednh n\u0103ng l\u1eabn chi ph\u00ed.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/itviec.com\/blog\/kafka-la-gi\/\" \/>\n<meta property=\"og:locale\" content=\"vi_VN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kafka l\u00e0 g\u00ec? Nh\u1eefng l\u1ee3i \u00edch tuy\u1ec7t v\u1eddi m\u00e0 Kafka mang l\u1ea1i cho Dev\" \/>\n<meta property=\"og:description\" content=\"Kafka l\u00e0 g\u00ec? Kafka l\u00e0 m\u1ed9t trong nh\u1eefng n\u1ec1n t\u1ea3ng \u0111i\u1ec1u ph\u1ed1i message ph\u00e2n t\u00e1n ph\u1ed5 bi\u1ebfn nh\u1ea5t tr\u00ean th\u1ecb tr\u01b0\u1eddng hi\u1ec7n nay. Tuy nhi\u00ean, kh\u00f4ng ch\u1ec9 d\u1eebng l\u1ea1i \u1edf \u0111\u00f3,\" \/>\n<meta property=\"og:url\" content=\"https:\/\/itviec.com\/blog\/kafka-la-gi\/\" \/>\n<meta property=\"og:site_name\" content=\"ITviec Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ITviec\" \/>\n<meta property=\"article:published_time\" content=\"2022-03-24T07:44:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-10-10T04:15:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/03\/kafka-la-gi-itviec-thubmnail.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"337\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Tuong Uyen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ITviec\" \/>\n<meta name=\"twitter:site\" content=\"@ITviec\" \/>\n<meta name=\"twitter:label1\" content=\"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tuong Uyen\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 ph\u00fat\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Apache Kafka l\u00e0 g\u00ec? T\u00ecm hi\u1ec3u Kafka stream, Kafka d\u00f9ng \u0111\u1ec3 l\u00e0m g\u00ec","description":"Kafka l\u00e0 g\u00ec? Kafka l\u00e0 m\u1ed9t n\u1ec1n t\u1ea3ng \u0111i\u1ec1u ph\u1ed1i message ph\u00e2n t\u00e1n v\u00e0 mang l\u1ea1i nh\u1eefng l\u1ee3i \u00edch tuy\u1ec7t v\u1eddi c\u1ea3 v\u1ec1 t\u00ednh n\u0103ng l\u1eabn chi ph\u00ed.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/itviec.com\/blog\/kafka-la-gi\/","og_locale":"vi_VN","og_type":"article","og_title":"Kafka l\u00e0 g\u00ec? Nh\u1eefng l\u1ee3i \u00edch tuy\u1ec7t v\u1eddi m\u00e0 Kafka mang l\u1ea1i cho Dev","og_description":"Kafka l\u00e0 g\u00ec? Kafka l\u00e0 m\u1ed9t trong nh\u1eefng n\u1ec1n t\u1ea3ng \u0111i\u1ec1u ph\u1ed1i message ph\u00e2n t\u00e1n ph\u1ed5 bi\u1ebfn nh\u1ea5t tr\u00ean th\u1ecb tr\u01b0\u1eddng hi\u1ec7n nay. Tuy nhi\u00ean, kh\u00f4ng ch\u1ec9 d\u1eebng l\u1ea1i \u1edf \u0111\u00f3,","og_url":"https:\/\/itviec.com\/blog\/kafka-la-gi\/","og_site_name":"ITviec Blog","article_publisher":"https:\/\/www.facebook.com\/ITviec","article_published_time":"2022-03-24T07:44:57+00:00","article_modified_time":"2024-10-10T04:15:39+00:00","og_image":[{"width":640,"height":337,"url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/03\/kafka-la-gi-itviec-thubmnail.jpg","type":"image\/jpeg"}],"author":"Tuong Uyen","twitter_card":"summary_large_image","twitter_creator":"@ITviec","twitter_site":"@ITviec","twitter_misc":{"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi":"Tuong Uyen","\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc":"19 ph\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/itviec.com\/blog\/kafka-la-gi\/#article","isPartOf":{"@id":"https:\/\/itviec.com\/blog\/kafka-la-gi\/"},"author":{"name":"Tuong Uyen","@id":"https:\/\/itviec.com\/blog\/#\/schema\/person\/e97d0e359f8840eaea7dc3a96006a8d4"},"headline":"Kafka l\u00e0 g\u00ec? Nh\u1eefng l\u1ee3i \u00edch tuy\u1ec7t v\u1eddi m\u00e0 Kafka mang l\u1ea1i cho Dev","datePublished":"2022-03-24T07:44:57+00:00","dateModified":"2024-10-10T04:15:39+00:00","mainEntityOfPage":{"@id":"https:\/\/itviec.com\/blog\/kafka-la-gi\/"},"wordCount":4989,"publisher":{"@id":"https:\/\/itviec.com\/blog\/#organization"},"image":{"@id":"https:\/\/itviec.com\/blog\/kafka-la-gi\/#primaryimage"},"thumbnailUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/03\/kafka-la-gi-itviec-thubmnail.jpg","articleSection":["Chuy\u00ean m\u00f4n IT","L\u00e3nh \u0111\u1ea1o IT"],"inLanguage":"vi"},{"@type":"WebPage","@id":"https:\/\/itviec.com\/blog\/kafka-la-gi\/","url":"https:\/\/itviec.com\/blog\/kafka-la-gi\/","name":"Apache Kafka l\u00e0 g\u00ec? T\u00ecm hi\u1ec3u Kafka stream, Kafka d\u00f9ng \u0111\u1ec3 l\u00e0m g\u00ec","isPartOf":{"@id":"https:\/\/itviec.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/itviec.com\/blog\/kafka-la-gi\/#primaryimage"},"image":{"@id":"https:\/\/itviec.com\/blog\/kafka-la-gi\/#primaryimage"},"thumbnailUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/03\/kafka-la-gi-itviec-thubmnail.jpg","datePublished":"2022-03-24T07:44:57+00:00","dateModified":"2024-10-10T04:15:39+00:00","description":"Kafka l\u00e0 g\u00ec? Kafka l\u00e0 m\u1ed9t n\u1ec1n t\u1ea3ng \u0111i\u1ec1u ph\u1ed1i message ph\u00e2n t\u00e1n v\u00e0 mang l\u1ea1i nh\u1eefng l\u1ee3i \u00edch tuy\u1ec7t v\u1eddi c\u1ea3 v\u1ec1 t\u00ednh n\u0103ng l\u1eabn chi ph\u00ed.","breadcrumb":{"@id":"https:\/\/itviec.com\/blog\/kafka-la-gi\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/itviec.com\/blog\/kafka-la-gi\/"]}]},{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/itviec.com\/blog\/kafka-la-gi\/#primaryimage","url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/03\/kafka-la-gi-itviec-thubmnail.jpg","contentUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/03\/kafka-la-gi-itviec-thubmnail.jpg","width":640,"height":337,"caption":"Apache Kafka l\u00e0 g\u00ec - ITviec - Ninja Van"},{"@type":"BreadcrumbList","@id":"https:\/\/itviec.com\/blog\/kafka-la-gi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Chuy\u00ean m\u00f4n IT","item":"https:\/\/itviec.com\/blog\/chuyen-mon-it\/"},{"@type":"ListItem","position":2,"name":"Kafka l\u00e0 g\u00ec? Nh\u1eefng l\u1ee3i \u00edch tuy\u1ec7t v\u1eddi m\u00e0 Kafka mang l\u1ea1i cho Dev"}]},{"@type":"WebSite","@id":"https:\/\/itviec.com\/blog\/#website","url":"https:\/\/itviec.com\/blog\/","name":"ITviec Blog","description":"IT Jobs &amp; People in Vietnam","publisher":{"@id":"https:\/\/itviec.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/itviec.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"vi"},{"@type":"Organization","@id":"https:\/\/itviec.com\/blog\/#organization","name":"ITviec","url":"https:\/\/itviec.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/itviec.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2018\/12\/itviec-black-square-facebook.png","contentUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2018\/12\/itviec-black-square-facebook.png","width":1800,"height":1800,"caption":"ITviec"},"image":{"@id":"https:\/\/itviec.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/ITviec","https:\/\/x.com\/ITviec","https:\/\/www.linkedin.com\/company\/itviec","https:\/\/www.youtube.com\/channel\/UCYthAQ3bcGr57M_ag5gHDvQ"]},{"@type":"Person","@id":"https:\/\/itviec.com\/blog\/#\/schema\/person\/e97d0e359f8840eaea7dc3a96006a8d4","name":"Tuong Uyen","image":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/10\/tuong-uyen-profile-picture-100x100.jpg","url":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/10\/tuong-uyen-profile-picture-100x100.jpg","contentUrl":"https:\/\/itviec.com\/blog\/wp-content\/uploads\/2022\/10\/tuong-uyen-profile-picture-100x100.jpg","caption":"Tuong Uyen"},"url":"https:\/\/itviec.com\/blog\/author\/tuong-uyen-pikachu\/"}]}},"_links":{"self":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts\/23021","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/users\/95"}],"replies":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/comments?post=23021"}],"version-history":[{"count":0,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/posts\/23021\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/media\/23039"}],"wp:attachment":[{"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/media?parent=23021"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/categories?post=23021"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itviec.com\/blog\/wp-json\/wp\/v2\/tags?post=23021"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}