Nhắn tin pub/sub là gì?
Nhắn tin phát hành-đăng ký hay nhắn tin pub/sub là một mô hình giao tiếp không đồng bộ giúp các nhà phát triển dễ dàng xây dựng các ứng dụng có độ phức tạp cao về mặt kiến trúc và chức năng trong đám mây. Trong kiến trúc đám mây hiện đại, các ứng dụng được tách rời thành các khối dựng độc lập, nhỏ hơn được gọi là dịch vụ. Nhắn tin pub/sub cung cấp thông báo sự kiện tức thời cho các hệ thống phân tán này. Nhắn tin pub/sub hỗ trợ khả năng giao tiếp có quy mô linh hoạt và đáng tin cậy giữa các mô-đun phần mềm độc lập.
Nhắn tin pub/sub hoạt động như thế nào?
Hệ thống phát hành-đăng ký (pub/sub) bao gồm bốn cấu phần chính.
Tin nhắn
Tin nhắn là dữ liệu giao tiếp được người gửi gửi đến người nhận. Loại dữ liệu tin nhắn có thể là bất kỳ thứ gì, từ chuỗi đến các đối tượng phức tạp đại diện cho văn bản, video, dữ liệu cảm biến, âm thanh hoặc nội dung số khác.
Chủ đề
Mỗi tin nhắn đi kèm với một chủ đề. Chủ đề hoạt động như một kênh trung gian giữa người gửi và người nhận. Chủ đề duy trì một danh sách người nhận quan tâm đến những tin nhắn về chủ đề đó.
Người đăng ký
Người đăng ký là người nhận tin nhắn. Người đăng ký phải ghi danh (hoặc đăng ký) theo dõi chủ đề họ quan tâm. Họ có thể song song thực hiện các chức năng khác nhau hoặc làm những công việc khác với tin nhắn đó.
Bên phát hành
Bên phát hành là cấu phần gửi đi các tin nhắn. Bên phát hành tạo ra các tin nhắn về một chủ đề và chỉ gửi những tin nhắn đó một lần đến tất cả những người đăng ký theo dõi chủ đề đó. Sự tương tác này giữa bên phát hành và người đăng ký là mối quan hệ một-nhiều. Bên phát hành không cần biết rằng ai đang sử dụng thông tin được phát đi, đồng thời người đăng ký không cần biết rằng những tin nhắn này đến từ đâu.
Hệ thống nhắn tin pub/sub có những tính năng nào?
Các ứng dụng được phát triển với mẫu phát hành-đăng ký (pub/sub) có logic ứng dụng và giao tiếp riêng biệt. Cơ sở hạ tầng nhắn tin tách rời quá trình gửi tin nhắn giữa bên phát hành và người đăng ký, đồng thời truyền tin nhắn đến những người đăng ký khác nhau một cách không đồng bộ.
Hệ thống giao tiếp pub/sub có những tính năng chính sau.
Gửi thông báo đẩy
Nhắn tin pub/sub đẩy ngay lập tức các thông báo sự kiện không đồng bộ khi các tin nhắn được phát hành tới chủ đề tin nhắn. Người đăng ký sẽ được thông báo khi có tin nhắn.
Nhiều giao thức gửi
Các chủ đề kết nối đến nhiều loại điểm cuối, như hàng đợi tin nhắn, chức năng phi máy chủ, máy chủ HTTP và địa chỉ email.
Tìm hiểu về hàng đợi tin nhắn với AWS »
Phân xuất
Tình huống này diễn ra khi một tin nhắn được gửi đến một chủ đề, sau đó được sao chép và đẩy đến nhiều điểm cuối. Tính năng phân xuất cung cấp các thông báo sự kiện không đồng bộ, từ đó cho phép xử lý song song.
Lọc
Tính năng lọc hỗ trợ người đăng ký tạo ra chính sách lọc tin nhắn. Nhờ vậy, họ sẽ chỉ nhận được những thông báo họ quan tâm, thay vì nhận mọi tin nhắn được đăng tải lên chủ đề đó.
Ghép kênh
Trong một số trường hợp, bên phát hành cũng có thể là người đăng ký. Bạn có thể ghép kênh các luồng tin nhắn và tạo ra các hệ thống liên kết với nhau một cách nhất quán nội bộ.
Nhắn tin pub/sub mang lại những lợi ích gì?
Mô hình phát hành-đăng ký (pub/sub) sẽ kích hoạt kiến trúc định hướng theo sự kiện cần phải có trong một số ứng dụng hiện đại. Bạn có thể sử dụng các sự kiện để kích hoạt và giao tiếp giữa các dịch vụ đã tách rời. Sự kiện là một sự thay đổi về trạng thái hoặc một cập nhật, chẳng hạn như một mặt hàng được đưa vào giỏ hàng.
Mô hình nhắn tin pub/sub mang lại nhiều ưu điểm đáng kể cho các nhà phát triển xây dựng ứng dụng dựa trên những sự kiện theo thời gian thực. Dưới đây là một số ưu điểm.
Loại bỏ quá trình thăm dò
Các chủ đề tin nhắn sẽ cho phép gửi tức thời theo mô hình đẩy, giúp người tiêu dùng sử dụng dịch vụ tin nhắn không cần phải kiểm tra hay thăm dò định kỳ để nắm được thông tin và cập nhật mới. Điều này giúp tăng thời gian phản hồi và giảm độ trễ gửi, vốn có thể gây ra khá nhiều rắc rối trong những hệ thống không thể chấp nhận tình trạng chậm trễ.
Xác định mục tiêu linh hoạt
Mẫu pub/sub giúp quá trình khám phá dịch vụ dễ dàng hơn, tự nhiên hơn và ít xảy ra lỗi hơn. Thay vì duy trì một danh sách ngang hàng để ứng dụng có thể gửi tin nhắn, bên phát hành sẽ đơn giản chỉ đăng các tin nhắn đến một chủ đề. Sau đó, bất kỳ bên nào quan tâm sẽ đăng ký điểm cuối của họ với chủ đề và bắt đầu nhận những tin nhắn này. Nhiều người đăng ký có thể thay đổi, nâng cấp hoặc biến mất và hệ thống sẽ linh hoạt điều chỉnh theo.
Tách rời và điều chỉnh quy mô một cách độc lập
Mô hình pub/sub giúp phần mềm linh hoạt hơn. Bên phát hành và người đăng ký được tách rời và làm việc độc lập, cho phép bạn phát triển và điều chỉnh quy mô một cách độc lập. Bạn có thể quyết định xử lý các đơn hàng theo cách này trong tháng này và theo cách khác ở tháng sau. Thêm hoặc thay đổi chức năng sẽ không gây ra hiệu ứng lan tỏa trên toàn hệ thống vì mô hình pub/sub cho phép bạn điều chỉnh linh hoạt cách mọi thứ phối hợp với nhau.
Đơn giản hóa giao tiếp
Mã cho quá trình giao tiếp và tích hợp là một trong những loại mã khó viết nhất. Mô hình phát hành-đăng ký giảm độ phức tạp bằng cách loại bỏ tất cả các kết nối điểm nối điểm và thay thế bằng một kết nối duy nhất đến chủ đề tin nhắn. Chủ đề này sẽ quản lý các đăng ký để quyết định xem tin nhắn nào nên được gửi đến điểm cuối nào. Ít gọi lại hơn dẫn đến liên kết ít phụ thuộc hơn, kèm với đó là mã dễ duy trì và mở rộng hơn.
Độ bền
Dịch vụ nhắn tin pub/sub thường mang lại độ bền rất cao và khả năng gửi tin nhắn ít nhất một lần, bằng cách lưu trữ các bản sao của cùng một tin nhắn trên nhiều máy chủ.
Bảo mật
Chủ đề tin nhắn xác thực các ứng dụng phát hành nội dung và cho phép bạn sử dụng các điểm cuối được mã hóa để bảo mật các tin nhắn khi truyền qua mạng.
Hệ thống nhắn tin pub/sub có những trường hợp sử dụng nào?
Dưới đây là những trường hợp sử dụng phổ biến của hệ thống nhắn tin phát hành-đăng ký (pub/sub).
Thực hiện xử lý không đồng bộ song song
Những sự kiện được phát hành lên một chủ đề tin nhắn có thể kích hoạt nhiều đơn vị thợ thực hiện đồng thời các tác vụ cần thiết nhưng không liên quan.
Gửi cảnh báo ứng dụng và hệ thống
Ngay lập tức gửi đi các thông báo sự kiện không đồng bộ và các cập nhật quan trọng đến người dùng của bạn và các cấu phần ứng dụng bị ảnh hưởng.
Quản lý quy trình làm việc không đồng bộ
Chuyển tiếp sự kiện giữa các ứng dụng, di chuyển dữ liệu giữa các kho dữ liệu, làm mới bộ nhớ đệm phân tán hoặc cập nhật hồ sơ trong các hệ thống kinh doanh.
Cân bằng khối lượng công việc
Gộp các tác vụ để xử lý hàng loạt hoặc chia nhỏ một tác vụ lớn hơn thành nhiều tác vụ nhỏ hơn và sử dụng hàng đợi tin nhắn để chia công việc cho nhiều đơn vị thợ.
Tạo bản ghi đến nhiều hệ thống
Ghi lại các sự kiện để phân tích sau, ghi chép các bản ghi cho công tác vận hành và bảo mật hoặc lưu trữ để đáp ứng các yêu cầu sao lưu và tuân thủ.
Sử dụng tính năng phân xuất để sao chép
Sao chép dữ liệu giữa các môi trường sản xuất và phát triển, hoặc phát triển và kiểm thử với dữ liệu trực tiếp.
Điều phối các ứng dụng phi máy chủ
Phân xuất các thông báo sự kiện không đồng bộ đến các chức năng phân tán và hàng đợi tin nhắn để điều phối các cấu phần trong ứng dụng phi máy chủ của bạn.
Truyền dữ liệu IoT
Mẫu pub/sub là một cách rất hữu hiệu để các thiết bị Internet vạn vật (IoT) tương tác. Các thiết bị có thể dễ dàng truyền dữ liệu đến các hệ thống backend hoặc giữa các thiết bị với nhau.
Điểm khác biệt giữa hàng đợi tin nhắn và nhắn tin pub/sub là gì?
Hàng đợi tin nhắn là một hình thức giao tiếp không đồng bộ khác được sử dụng trong kiến trúc phi máy chủ và vi dịch vụ. Các tin nhắn được lưu trữ trong hàng đợi cho đến khi tin nhắn được xử lý và bị xóa. Hàng đợi tin nhắn yêu cầu người gửi phải biết họ đang trao đổi tin nhắn với ai. Quá trình sắp xếp thứ tự tin nhắn có thể gây ra tình trạng tắc nghẽn trong hệ thống.
Ngược lại, mẫu phát hành-đăng ký (pub/sub) mang lại độ linh hoạt cao hơn. Nhiều người đăng ký có quan tâm có thể nhận tin nhắn một cách đồng thời và không đồng bộ. Bên phát hành không cần biết người đăng ký là ai. Quá trình xử lý tin nhắn có quy mô linh hoạt và đáng tin cậy hơn, đồng thời mang lại hiệu năng cao hơn.
AWS có thể hỗ trợ các yêu cầu về nhắn tin pub/sub của bạn như thế nào?
Amazon Web Services (AWS) có hai dịch vụ bạn có thể sử dụng cho các ứng dụng phát hành-đăng ký (pub/sub) khác nhau.
API pub/sub
AWS AppSync là một dịch vụ được quản lý toàn phần để tạo ra các API pub/sub và GraphQL phi máy chủ giúp đơn giản hóa quá trình phát triển ứng dụng. Bạn có thể tạo ra một điểm cuối duy nhất để truy vấn, cập nhật hoặc phát hành dữ liệu một cách bảo mật.
Các API pub/sub được xây dựng bằng AWS AppSync cung cấp cho bạn khả năng phát hành các bản cập nhật dữ liệu theo thời gian thực cho máy khách có API đã đăng ký thông qua kết nối WebSocket phi máy chủ. Bạn có thể tạo ra các trải nghiệm theo thời gian thực hấp dẫn cho nhiều trường hợp sử dụng khác nhau. Ví dụ: bạn có thể cung cấp dữ liệu mới nhất về điểm số trong trò chơi, dữ liệu tài chính, sự tham gia của khán giả, bầu cử hoặc các tính năng có sử dụng vị trí như bản đồ và tiếp thị qua thông báo đẩy.
Dưới đây là một số điều bạn có thể thực hiện với AWS AppSync:
- Truy cập dữ liệu từ một hoặc nhiều nguồn hay vi dịch vụ với chỉ một yêu cầu mạng
- Tương tác và cập nhật dữ liệu — ngay cả khi ngoại tuyến — với tính năng đồng bộ hoá dữ liệu ngoại tuyến, lập phiên bản và giải quyết xung đột
- Chỉ thanh toán cho những yêu cầu tới API của bạn và mọi tin nhắn theo thời gian thực gửi đến máy khách được kết nối
Nhắn tin pub/sub
Dịch vụ thông báo đơn giản (SNS) của Amazon giúp bạn dễ dàng xây dựng ứng dụng bằng cách sử dụng mô hình nhắn tin pub/sub. Bạn có thể gửi tin nhắn từ ứng dụng của mình đến khách hàng hoặc các ứng dụng khác với quy mô linh hoạt và tiết kiệm chi phí.
Amazon SNS cung cấp một số tính năng:
- Nhắn tin với thông lượng cao, theo mô hình đẩy, nhiều-nhiều giữa các hệ thống phân tán, vi dịch vụ và các ứng dụng phi máy chủ định hướng theo sự kiện
- Mã hóa tin nhắn và quyền riêng tư của lưu lượng
- Phân xuất khả năng trên các danh mục AWS, chẳng hạn như phân tích, điện toán, bộ chứa, cơ sở dữ liệu, Internet vạn vật (IoT), máy học (ML), bảo mật và lưu trữ
Bắt đầu sử dụng pub/sub trên AWS bằng cách tạo tài khoản AWS miễn phí ngay hôm nay.