NATS, hệ thống phân tán nhắn tin và độ trễ cực thấp được người phỏng vấn Naver sử dụng

Khi làm phát triển backend, sẽ có lúc bạn phải đối mặt với những trăn trở như thế này. Đó là khoảnh khắc bạn cảm nhận được giới hạn của việc chỉ sử dụng giao tiếp REST đơn thuần và cấu trúc CRUD khi dịch vụ mở rộng và lưu lượng truy cập tăng lên. Bản thân tôi cũng đã gặp phải vấn đề tương tự trong thực tế và đã trải qua nhiều lần thử sai giữa hiệu suất và sự phức tạp của cấu trúc. Câu trả lời mà tôi lựa chọn trong quá trình đó chính là NATS. Với cấu trúc đơn giản dựa trên một tệp thực thi duy nhất (single binary), hiệu suất độ trễ cực thấp tính bằng micro giây, và việc cung cấp vừa đủ các tính năng thiết yếu cho thực tế từ Pub/Sub đến Queue Group, JetStream đã khiến nó trở thành một lựa chọn rất thực tế trong môi trường dịch vụ thực tế. Khóa học này không phải là một bài giảng liệt kê các tính năng của NATS. Dựa trên những vấn đề tôi đã đối mặt trong công việc, tôi sẽ giải thích thông qua mã nguồn và luồng xử lý về việc tại sao tôi chọn NATS trong những tình huống nào và cách tôi thiết kế cấu trúc ra sao. Đây là khóa học giúp mọi người, từ những người mới bắt đầu với hệ thống nhắn tin (messaging system), các nhà phát triển backend đang chuẩn bị xin việc, cho đến các nhà phát triển cấp cao đang trăn trở về một kiến trúc tốt hơn, có thể hiểu về hệ thống phân tán và tiến thêm một bước trong sự nghiệp.

(5.0) 10 đánh giá

303 học viên

Độ khó Cơ bản

Thời gian Không giới hạn

JavaScript
JavaScript
Node.js
Node.js
Java
Java
Docker
Docker
TypeScript
TypeScript
JavaScript
JavaScript
Node.js
Node.js
Java
Java
Docker
Docker
TypeScript
TypeScript

Đánh giá từ những học viên đầu tiên

Đánh giá từ những học viên đầu tiên

5.0

5.0

Ande

92% đã tham gia

Tôi đang phát triển tại Naver, nơi tạo ra khóa học này, và nó được gọi là Ande!! NATS... có thể các bạn còn xa lạ, nhưng đây thực sự là một nền tảng tuyệt vời và có cấu trúc rất hữu ích. Chính vì vậy mà tôi cũng thường xuyên sử dụng nó và đang tập trung áp dụng trong công việc thực tế. Tôi đã cố gắng hết sức để chia sẻ những phần mà tôi đã trải nghiệm và hiểu biết, mong các bạn xem vui vẻ và cho tôi nhiều phản hồi nhé. Chúc các bạn một ngày tốt lành!!

5.0

02년생 개발자

96% đã tham gia

Tôi thực sự nghĩ đây là khóa học giải thích mọi thứ về NATS ngay cả khi bạn không biết gì về nó. Giảng viên giải thích rất tốt và giống như có một developer giỏi ngồi bên cạnh chỉ cho bạn tại sao nền tảng này hữu ích và cách sử dụng nó... Cảm ơn vì khóa học tuyệt vời này.

5.0

에이미

92% đã tham gia

Tôi đã xem các khóa học khác cũng rất bổ ích, và khóa học này tôi cũng thấy cực kỳ hữu ích. Mong thầy tiếp tục tạo ra những khóa học hay như vậy ㅠㅠ Tiền thì tôi sẽ trả... Chất lượng khóa học cũng ngày càng được nâng cao (dù hiện tại đã quá tuyệt vời rồi...!!) Cảm giác như thầy chỉ tạo ra những khóa học hoàn toàn xứng đáng với số tiền bỏ ra... ㅠㅠ Tôi thật sự rất biết ơn vì được học về chủ đề này với mức giá này.

Bạn sẽ nhận được điều này sau khi học.

  • Khả năng trực tiếp thiết kế và triển khai kiến trúc nhắn tin độ trễ cực thấp dựa trên NATS.

  • Khả năng thiết kế, lựa chọn và áp dụng Pub/Sub, Request-Reply, Queue Group phù hợp với từng tình huống cụ thể

  • Kinh nghiệm cấu trúc hệ thống tin nhắn phân tán ổn định, có tính đến Consumer Lag và nghẽn cổ chai (bottleneck)

  • Triển khai tính bền vững của tin nhắn và đường ống xử lý sự kiện thực tế bằng JetStream

  • Năng lực backend có thể giải thích và thiết kế hệ thống phân tán dựa trên sự kiện (event-driven), vượt xa khỏi CRUD thông thường.

Hệ thống tin nhắn phân tán cho độ trễ cực thấp trong môi trường MSA!! Được chia sẻ bởi một nhà phát triển Naver mới gia nhập.

  • Nội dung dưới đây là nội dung cuộc hội thoại thực tế.

😄 Nhà phát triển Naver : Có ai biết về MSQ tên là NATS không ạ?? Vì tôi thường xuyên sử dụng nó nên tôi định thử quay phim với chủ đề đó

😁 Nhà phát triển Kakao (Người phỏng vấn) : Ồ, tôi đã từng dùng cái đó rồi. Tôi biết là nếu sử dụng ở cấp độ Core thì hiệu suất có thể đạt tới mức micro giây đấy.

😄 Nhà phát triển Naver : Đúng vậy. Nhưng thực tế thì người ta ít khi dùng đến mức Core mà thường dùng dưới dạng JetStream để đảm bảo tính HA (High Availability). Tôi nghĩ nó cực kỳ hữu ích trong việc triển khai và áp dụng MSQ đơn giản.

😄 Nhà phát triển Naver : Tình cờ là tôi đã tham gia như thế này, tôi nghĩ rằng nếu chúng ta tạo ra nội dung tập trung vào khía cạnh hiệu năng như thế này thì sẽ giúp ích được rất nhiều cho người xem.

😄 Hong : Ôi, một người quý giá như vậy lại đến nơi khiêm tốn này... Tôi cũng chỉ mới nghe nói về NATS chứ chưa có kinh nghiệm sử dụng, nếu bạn dẫn dắt thì tôi sẽ cố gắng hết sức để tạo ra nó.

😄 Nhà phát triển Naver : kkkk Ngược lại tôi phải cảm ơn bạn vì đã cho tôi cơ hội tốt này kkkk

😁 Nhà phát triển Toss : Dạo này tôi bận quá.. Tôi cũng muốn tạo một cái gì đó mới vào lúc nào đó, và tôi nghe nói NATS rất tốt, việc định tuyến cũng rất linh hoạt và dễ dàng

😁 Người phỏng vấn Kakao (Nhà phát triển) : X (Nhà phát triển Naver) phát triển thực sự rất giỏi theo tôi thấy thì đúng kiểu chắc chắn sẽ đỗ luôn ㅋㅋㅋ tôi rất vui vì bạn đã gia nhập như thế này

Bạn triển khai giao tiếp giữa các dịch vụ trong kiến trúc phân tán như thế nào?? ⚡

Trong môi trường mà vô số dịch vụ được kết nối xoay quanh dữ liệu, chúng ta cần vượt xa khỏi CRUD đơn thuần để xây dựng một kiến trúc động dựa trên sự kiện, nhằm tạo ra sự liên kết lỏng lẻo giữa các dịch vụ. Mỗi lần như vậy chúng ta đều phải trăn trở. Chắc hẳn đa số các bạn đều có những lo lắng này: Làm thế nào để đảm bảo hiệu suất?? Làm sao để cân nhắc đến giao tiếp động và Auto Scaling?? Hiện tượng Consumer Lag thì quản lý thế nào? Và Dead Letter Queues lại là cái gì nữa?

Câu trả lời cho những vấn đề đó nằm ngay trong khóa học này. Phương pháp kết nối nhiều dịch vụ dựa trên Subject!! Cách hiện thực hóa truyền thông thời gian thực với độ trễ cực thấp, phương pháp ngăn chặn Consumer Lag bằng cách sử dụng Queue Group và quan điểm HA, v.v. Thông qua khóa học tập trung cao độ vào hiệu suất này, tôi đã chuẩn bị để các bạn có thể đạt được sự tối ưu hóa và tính ổn định cho các dịch vụ trong kiến trúc MSA của mình.

Đây không chỉ đơn thuần là một bài giảng về lý thuyết. Tôi hy vọng bạn sẽ dành thời gian để học cách trực tiếp sử dụng và triển khai nền tảng NATS thông qua nhiều mã nguồn thực tế khác nhau.🚀

Tại sao chọn Nền tảng NATS

NATS là một nền tảng nhắn tin (messaging platform) cung cấp hiệu suất cao với độ trễ cực thấp.

Thông qua đặc điểm Single Platform, nó cung cấp Streaming, Key-Value, Object store, PubSub và nhờ vào đặc điểm Microservices, nó có thể được áp dụng dễ dàng và nhanh chóng trong môi trường phân tán. Nói cách khác, nó có tính chất phân tán và bảo mật zerotrust. Ngoài ra, bao gồm cả đặc điểm Multi-cloud to Edge, tất cả các ứng dụng và dữ liệu có thể được cung cấp dưới dạng on-premise bất kể vị trí vật lý. feature, all applications and data can be provided in an on-premises format regardless of physical location.

Tài liệu chính thức của NATS tự giới thiệu về mình như thế này.

NATS là một lớp dữ liệu mã nguồn mở đơn giản, bảo mật và hiệu suất cao dành cho các ứng dụng cloud native, nhắn tin IoT và kiến trúc microservices. Tất cả những điều này nằm trong một tệp thực thi duy nhất, dễ dàng triển khai và quản lý. Không có phụ thuộc bên ngoài, chỉ cần đưa nó vào và thêm một tệp cấu hình để trỏ đến các máy chủ NATS khác là bạn đã sẵn sàng. Trên thực tế, bạn thậm chí có thể nhúng NATS vào ứng dụng của mình

( NATS là một lớp dữ liệu mã nguồn mở đơn giản, an toàn và hiệu suất cao dành cho các ứng dụng cloud-native, tin nhắn IoT và kiến trúc microservices. Nó cung cấp nhiều tính năng đa dạng, và tất cả các tính năng này đều được cung cấp dưới dạng một tệp thực thi duy nhất (single binary) giúp dễ dàng triển khai và quản lý. Do đó, một cách tự nhiên, bạn có thể sử dụng ngay lập tức mà không cần phụ thuộc vào bên ngoài, chỉ cần triển khai tệp thực thi đơn giản và cấu hình để nó trỏ đến các máy chủ NATS khác. Ngoài ra, cũng có thể nhúng NATS trực tiếp vào bên trong ứng dụng. Tất cả các tính năng đều được cung cấp dưới dạng một tệp thực thi duy nhất giúp dễ dàng triển khai và quản lý.)

Trong các kiến trúc hiện đại, cấu trúc hệ thống bao gồm vô số các hoạt động giao tiếp giữa các dịch vụ. Trong cấu trúc như vậy, việc học về NATS - một ứng dụng binary đơn nhất, loại bỏ phụ thuộc, cloud-native, từ đó mang lại độ trễ cực thấp và hiệu suất cao - sẽ trở thành một kỹ năng thiết yếu chứ không chỉ dừng lại ở mức khuyến nghị.

Tôi thực sự khuyên bạn nên tận dụng thời gian này để học cách sử dụng NATS và phát triển thành một lập trình viên sở hữu bộ kỹ năng khác biệt so với những người khác. 🚀

Đặc điểm của bài giảng này

📌 Khóa học về giao thức nhắn tin phân tán được nhà phát triển Naver thực tế sử dụng trong công việc

  • Đây là bài giảng được xây dựng với sự tham gia của các nhà phát triển hiện đang làm việc tại Naver. Không chỉ dừng lại ở việc tìm hiểu MSA là gì, bạn có thể vừa học vừa trực tiếp viết mã với NATS - một dịch vụ nhắn tin hiệu suất cực cao. Qua đó, chúng tôi đã chuẩn bị những nội dung giúp bạn có thể học hỏi một cách sâu rộng và tập trung vào thực tế.

📌 Tóm tắt bài giảng, mã nguồn và các mô hình định tuyến tin nhắn đa dạng

  • Trong tất cả các bài giảng, tôi đều cung cấp sơ đồ thực tế hoặc trình bày chi tiết về quá trình thực hành. Tôi không chỉ dạy bạn cách sao chép mã một cách máy móc, mà còn hướng dẫn về quy trình hoạt động thực tế và các mô hình có thể áp dụng được.


📌 Junior biết thì sẽ là một Junior giỏi.. Senior biết thì sẽ là một Senior năng lực, dịch vụ giao thức nhắn tin phân tán dành cho điều này

  • Bạn chỉ biết mỗi CRUD thôi sao?? Trong kiến trúc phân tán, chúng tôi hỗ trợ giao tiếp có khả năng mở rộng dựa trên EDA thay vì CRUD. Và NATS là một giải pháp tiêu biểu có thể áp dụng cho việc này..!! Đây là nội dung độc nhất vô nhị trên Inflearn.

Khuyên dùng cho những đối tượng sau 👨‍🏫

🎯 Những lập trình viên trình độ sơ - trung cấp mới chỉ nghe nói đến Kafka về dịch vụ nhắn tin phân tán who have only heard of Kafka when it comes to distributed messaging services

  • Có rất nhiều dịch vụ nhắn tin phân tán khác nhau. Mặc dù cũng có những đường ống nhắn tin như Kafka, nhưng tôi thực sự khuyên bạn nên thử học NATS - một dịch vụ tập trung vào hiệu suất trong kiến trúc MSA.

🎯 Nhà phát triển muốn học dù chưa biết gì về dịch vụ nhắn tin (messaging service) because they don't know anything about messaging services

  • Tôi không biết gì về dịch vụ nhắn tin phân tán Đây là khóa học phù hợp nhất dành cho bạn. Với tư cách là một nhà phát triển máy chủ, để học hỏi về kiến trúc hiện đại, tôi khuyên bạn nên thông qua khóa học này để tìm hiểu về sự liên kết lỏng lẻo (loose coupling) giữa các dịch vụ.

🎯 Những lập trình viên cấp cao (Senior) tò mò về hệ sinh thái của nền tảng NATS

  • Ngay cả đối với những người đã có kinh nghiệm phát triển ở một mức độ nhất định, cũng có rất nhiều người lần đầu tiên nghe đến NATS. Chính vì vậy, tôi đề xuất khóa học này vì bạn có thể tiếp thu được một công nghệ mới mà không phải ai cũng biết.


🎯 Dành cho các lập trình viên mới vào nghề hoặc cấp độ Junior đang quan tâm đến game server, truyền thông thời gian thực và ứng dụng trò chuyện

  • NATS có hình thức phù hợp nhất cho việc giao tiếp giữa các dịch vụ nhờ vào độ trễ cực thấp và hiệu suất vượt trội. Tôi đề xuất khóa học này cho những ai muốn tìm hiểu về các máy chủ hiệu suất cao thông qua giao tiếp độ trễ thấp ở mức micro giây.


Sơ yếu lý lịch của nhà phát triển Naver, người đã chuẩn bị bài giảng này 🤭


Tôi là Ande (tên viết tắt), hiện đang làm việc tại Naver với tư cách là nhà phát triển máy chủ backend với 10 năm kinh nghiệm.

Tôi tạo ra bài giảng này vì muốn chia sẻ và thảo luận với mọi người về những kỹ năng và công nghệ đa dạng mà tôi biết. Hy vọng mọi người có thể tiếp thu những bí quyết của tôi và không mắc phải những sai lầm tương tự như tôi đã từng.

Tôi gia nhập đội ngũ này thông qua sự giới thiệu của người quen (người phỏng vấn tại Kakao) và thực hiện việc ghi hình dưới sự dẫn dắt của Hong. Tôi đã nỗ lực để lồng ghép nhiều nội dung nhất có thể, vì vậy rất mong nhận được sự quan tâm của các bạn. Ngoài ra, xin vui lòng đặt câu hỏi một cách thoải mái. Tôi sẽ cố gắng kiểm tra và trả lời sớm nhất có thể. Xin cảm ơn.

[Hiện tại] Nhà phát triển Server Naver (Trụ sở chính)

[Trước đây] Nhà phát triển Backend thuộc tập đoàn Shinsegae

[Trước đây] Nhà phát triển máy chủ tại startup chăm sóc sức khỏe

[Trước đây] Tốt nghiệp chuyên ngành Kỹ thuật máy tính hệ 4 năm tại Seoul

Ghi chú tham khảo

Môi trường thực hành

  • IDE

    • Visual Studio Code

  • Hệ điều hành

    • Apple M3 Air

Tôi đang vận hành một phòng chat mở để giúp các bạn chuẩn bị cho sự nghiệp của mình. Rất mong nhận được sự quan tâm của các bạn!

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Nhà phát triển backend cảm thấy bị giới hạn trong việc mở rộng dịch vụ nếu chỉ dựa vào giao tiếp REST và cấu trúc CRUD.

  • Những nhà phát triển vẫn đang trì hoãn việc áp dụng messaging vì cảm thấy Kafka quá áp lực.

  • Sinh viên mới tốt nghiệp đang tìm việc, biết rằng cần phải sử dụng kiến trúc hướng sự kiện (Event-Driven Architecture) nhưng không biết phải bắt đầu từ đâu.

  • Các nhà phát triển thực tế đang cảm thấy bế tắc vì không thể giải quyết một cách có hệ thống các vấn đề về Consumer Lag, độ trễ và nút thắt cổ chai.

  • Nhà phát triển chưa từng thiết kế đúng cách cấu trúc dịch vụ yêu cầu độ trễ cực thấp và giao tiếp thời gian thực.

Xin chào
Đây là Hong

7,535

Học viên

461

Đánh giá

142

Trả lời

4.7

Xếp hạng

25

Các khóa học

Giới thiệu bản thân

Tôi bắt đầu học lập trình sau một thời gian dài lười biếng ở nhà vì cảm thấy hứng thú với nó, và hiện tại tôi đang đảm nhận vai trò phát triển server nền tảng tại Pangyo. Tôi tiếp tục hoạt động với tư cách là người chia sẻ kiến thức vì muốn cung cấp cho các bạn phương pháp học tập của bản thân, cùng với những vấn đề và giải pháp thực tế mà các bạn có thể gặp phải trong công việc.

 

Bài giảng không chỉ được tạo ra từ kiến thức của riêng tôi. Mỗi bài giảng đều có sự đồng hành của những người cộng sự.

 

Kinh nghiệm của người chia sẻ kiến thức

[Cựu] Nhà phát triển Blockchain liên quan đến IP Sandbox

[Cựu] Nhà phát triển Backend Metaverse

[Hiện tại] Nhà phát triển máy chủ dày dặn kinh nghiệm tại Pangyo

 

Lịch sử phỏng vấn

Các thắc mắc khác

  • unduck2022@gmail.com

Thêm

Chương trình giảng dạy

Tất cả

26 bài giảng ∙ (5giờ 35phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

10 đánh giá

5.0

10 đánh giá

  • whilter088338님의 프로필 이미지
    whilter088338

    Đánh giá 1

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

    Nội dung rất trực quan và dễ hiểu, đặc biệt tôi rất thích phần cuối khi bạn chỉ ra điểm khác biệt so với các dịch vụ MSQ khác và khi nào thì nên sử dụng nó.

    • jhong
      Giảng viên

      Chào bạn Jeondanji, cảm ơn bạn đã để lại đánh giá tốt. Sau này mình sẽ cố gắng cung cấp thêm nhiều bài giảng bổ ích hơn nữa. Chúc bạn một ngày tốt lành!

  • gsu002845933님의 프로필 이미지
    gsu002845933

    Đánh giá 7

    Đánh giá trung bình 5.0

    5

    88% đã tham gia

    Giảng viên mà tôi yêu thích nhất trên Inflearn... Mỗi khi có khóa học mới ra, tôi đều thanh toán ngay lập tức để xem và tham khảo.. Nhờ đó gần đây tôi đã tìm được việc làm thành công ㅠㅠㅠ Thật sự rất cảm ơn thầy. Tôi đã nhận được quá nhiều sự giúp đỡ từ thầy. Nội dung bản thân cũng vô cùng bổ ích và với tư cách là người đang chuẩn bị xin việc, thầy đã giúp tôi có thể nhìn thấy những góc nhìn mà tôi hoàn toàn không thể thấy được ㅠㅠ Thật sự rất cảm ơn thầy.

    • jhong
      Giảng viên

      Wow... Chúc mừng bạn Rilppoi rất nhiều. Tôi thực sự vinh dự khi đã có thể giúp ích cho quá trình chuẩn bị xin việc của bạn...!! Chúc bạn luôn gặp nhiều điều tốt lành phía trước. Tôi sẽ tiếp tục nỗ lực để đề cập đến những chủ đề mà dù là người đang chuẩn bị xin việc hay thậm chí là các lập trình viên senior cũng chưa từng trải nghiệm. Cảm ơn bạn vì những lời đánh giá tốt đẹp và chúc bạn một ngày tốt lành!!

  • and3839455877님의 프로필 이미지
    and3839455877

    Đánh giá 3

    Đánh giá trung bình 5.0

    5

    92% đã tham gia

    Tôi đang phát triển tại Naver, nơi tạo ra khóa học này, và nó được gọi là Ande!! NATS... có thể các bạn còn xa lạ, nhưng đây thực sự là một nền tảng tuyệt vời và có cấu trúc rất hữu ích. Chính vì vậy mà tôi cũng thường xuyên sử dụng nó và đang tập trung áp dụng trong công việc thực tế. Tôi đã cố gắng hết sức để chia sẻ những phần mà tôi đã trải nghiệm và hiểu biết, mong các bạn xem vui vẻ và cho tôi nhiều phản hồi nhé. Chúc các bạn một ngày tốt lành!!

    • jhong
      Giảng viên

      kkk Tiếp tục tạo ra những bài giảng thú vị hơn nữa nhé!! Fighting!!

  • gjsu540607534님의 프로필 이미지
    gjsu540607534

    Đánh giá 6

    Đánh giá trung bình 5.0

    5

    96% đã tham gia

    Tôi thực sự nghĩ đây là khóa học giải thích mọi thứ về NATS ngay cả khi bạn không biết gì về nó. Giảng viên giải thích rất tốt và giống như có một developer giỏi ngồi bên cạnh chỉ cho bạn tại sao nền tảng này hữu ích và cách sử dụng nó... Cảm ơn vì khóa học tuyệt vời này.

    • jhong
      Giảng viên

      Xin chào bạn developer sinh năm 2002!! Cảm ơn bạn đã để lại đánh giá tốt. Tôi đã cố gắng hết sức để truyền đạt nhiều góc nhìn và kiến thức như thể có một người có thực lực đang ngồi bên cạnh pair coding cùng bạn vậy. Cảm ơn bạn!

  • miaaade9585868님의 프로필 이미지
    miaaade9585868

    Đánh giá 8

    Đánh giá trung bình 5.0

    5

    92% đã tham gia

    Tôi đã xem các khóa học khác cũng rất bổ ích, và khóa học này tôi cũng thấy cực kỳ hữu ích. Mong thầy tiếp tục tạo ra những khóa học hay như vậy ㅠㅠ Tiền thì tôi sẽ trả... Chất lượng khóa học cũng ngày càng được nâng cao (dù hiện tại đã quá tuyệt vời rồi...!!) Cảm giác như thầy chỉ tạo ra những khóa học hoàn toàn xứng đáng với số tiền bỏ ra... ㅠㅠ Tôi thật sự rất biết ơn vì được học về chủ đề này với mức giá này.

    • jhong
      Giảng viên

      Xin chào Amy, cảm ơn bạn đã để lại đánh giá!! Đây thực sự là một đánh giá rất động viên ㅠㅠ Tôi sẽ cố gắng tạo ra những khóa học giúp nhiều người hơn nữa có thể nhìn nhận vấn đề từ nhiều góc độ khác nhau. Chúc bạn có một ngày tốt lành!!

Khóa học khác của Hong

Hãy khám phá các khóa học khác của giảng viên!

Khóa học tương tự

Khám phá các khóa học khác trong cùng lĩnh vực!

Ưu đãi có thời hạn, kết thúc sau 22:48:10 ngày

7.579 ₫

22%

1.608.475 ₫