Storm - Hệ thống nhắn tin phân tán
Apache Storm xử lý dữ liệu thời gian thực và đầu vào thường đến từ hệ thống xếp hàng tin nhắn. Một hệ thống nhắn tin phân tán bên ngoài sẽ cung cấp đầu vào cần thiết cho việc tính toán thời gian thực. Spout sẽ đọc dữ liệu từ hệ thống nhắn tin và chuyển nó thành các bộ dữ liệu và nhập vào Apache Storm. Thực tế thú vị là Apache Storm sử dụng hệ thống nhắn tin phân tán của riêng nó trong nội bộ để liên lạc giữa nimbus và người giám sát của nó.
Hệ thống nhắn tin phân tán là gì?
Nhắn tin phân tán dựa trên khái niệm xếp hàng tin nhắn đáng tin cậy. Tin nhắn được xếp hàng đợi không đồng bộ giữa các ứng dụng khách và hệ thống nhắn tin. Hệ thống nhắn tin phân tán cung cấp các lợi ích về độ tin cậy, khả năng mở rộng và tính bền bỉ.
Hầu hết các kiểu nhắn tin tuân theo publish-subscribe mô hình (đơn giản là Pub-Sub) nơi mà người gửi tin nhắn được gọi publishers và những người muốn nhận tin nhắn được gọi là subscribers.
Khi tin nhắn đã được người gửi xuất bản, người đăng ký có thể nhận được tin nhắn đã chọn với sự trợ giúp của tùy chọn lọc. Thông thường chúng ta có hai loại lọc, một làtopic-based filtering và một cái khác là content-based filtering.
Lưu ý rằng mô hình pub-sub chỉ có thể giao tiếp qua tin nhắn. Nó là một kiến trúc được kết hợp rất lỏng lẻo; ngay cả người gửi cũng không biết người đăng ký của họ là ai. Nhiều mẫu tin nhắn cho phép người môi giới tin nhắn trao đổi các tin nhắn đã xuất bản để nhiều người đăng ký truy cập kịp thời. Một ví dụ thực tế là Dish TV, nơi xuất bản các kênh khác nhau như thể thao, phim, âm nhạc, v.v. và bất kỳ ai cũng có thể đăng ký tập hợp kênh của riêng mình và tải chúng bất cứ khi nào có kênh đã đăng ký của họ.
Bảng sau đây mô tả một số hệ thống nhắn tin thông lượng cao phổ biến:
Hệ thống nhắn tin phân tán | Sự miêu tả |
---|---|
Apache Kafka | Kafka được phát triển tại tập đoàn LinkedIn và sau đó nó trở thành một dự án con của Apache. Apache Kafka dựa trên mô hình đăng ký xuất bản phân tán, liên tục, được phân phối đã bẻ khóa. Kafka nhanh, có thể mở rộng và hiệu quả cao. |
RabbitMQ | RabbitMQ là một ứng dụng nhắn tin mạnh mẽ phân tán mã nguồn mở. Nó rất dễ sử dụng và chạy trên tất cả các nền tảng. |
JMS (Dịch vụ tin nhắn Java) | JMS là một API mã nguồn mở hỗ trợ tạo, đọc và gửi tin nhắn từ ứng dụng này sang ứng dụng khác. Nó cung cấp khả năng gửi tin nhắn đảm bảo và tuân theo mô hình đăng ký xuất bản. |
ActiveMQ | Hệ thống nhắn tin ActiveMQ là một API mã nguồn mở của JMS. |
ZeroMQ | ZeroMQ là xử lý tin nhắn ngang hàng không có người môi giới. Nó cung cấp các mẫu tin nhắn push-pull, router-agent. |
Kestrel | Kestrel là một hàng đợi tin nhắn phân tán nhanh, đáng tin cậy và đơn giản. |
Giao thức tiết kiệm
Thrift được xây dựng tại Facebook để phát triển các dịch vụ đa ngôn ngữ và gọi thủ tục từ xa (RPC). Sau đó, nó trở thành một dự án Apache mã nguồn mở. Apache Thrift là mộtInterface Definition Language và cho phép xác định các kiểu dữ liệu mới và triển khai dịch vụ trên các kiểu dữ liệu đã xác định một cách dễ dàng.
Apache Thrift cũng là một khung giao tiếp hỗ trợ các hệ thống nhúng, ứng dụng di động, ứng dụng web và nhiều ngôn ngữ lập trình khác. Một số tính năng chính liên quan đến Apache Thrift là tính mô-đun, tính linh hoạt và hiệu suất cao. Ngoài ra, nó có thể thực hiện phát trực tuyến, nhắn tin và RPC trong các ứng dụng phân tán.
Storm sử dụng rộng rãi Giao thức Thrift cho giao tiếp nội bộ và định nghĩa dữ liệu. Cấu trúc liên kết bão chỉ đơn giản làThrift Structs. Storm Nimbus chạy cấu trúc liên kết trong Apache Storm là mộtThrift service.