P2Sub project

Dũng Trần
3 min readMar 29, 2020

--

Tìm hiểu về pub/sub pattern mình thấy khá nhiều điều thú vị, khi triển khai vào thực tế mọi thứ không cũng không đơn giản như bản thân hiểu. Các giải pháp hiện có đôi lúc quá thiếu hoặc quá thừa đối với nhu cầu. Nên project P2Sub lập ra để tập trung giải quyết bài toán theo một hướng mới bằng việc apply cryptography và distributed ledger vào pub/sub pattern.

Định danh publisher

Đối với pub/sub pattern chúng ta chỉ tập trung vào xử lý các events, nhưng không giải quyết một câu hỏi rất chính đáng là, liệu event đó có đáng tin cậy hay không?. Nếu nhưng có một cluster/node bị manipulated thì điều gì xảy ra?.

P2Sub: Luôn yêu cầu publisher phải sign mỗi message mà nó gửi đi, bằng cách này các subscribers có thể verify từng message mà chúng nhận được. Các nodes tham gia vào network với unauthenticated key pairs sẽ không thể spoof các messages.

Kháng lỗi và phục hồi từ trạng thái lỗi

Event driven chỉ tập trung vào các real-time events, nên khi xảy ra lỗi. Chúng ta không thể quay lại thời điểm xẩy ra lỗi để bắt đầu lại để tiếp tục đồng bộ với các sự kiện đã xảy ra trước đó nhằm giúp hệ thống đạt tới trạng thái hiện có.

P2Sub: Các node của P2Sub làm nhiệm vụ manteinance một distributed ledger trong đó các messages hoặc events được ghi nhận theo dạng time series. Nghĩa là nếu chúng ta gặp lỗi tại trạng thái chúng ta có thể bắt đầu lại từ trạng thái đó và đồng bộ tới trạng thái mới nhất.

Acknowledge

Một nhu cầu rất có thật là publisher cần biết subscribers nào đã nhận được events và đã xử lý nó. Khi mình apply pub/sub pattern vào việc ghi nhận financial transaction thì thường cần rất nhiều bước phụ để đảm bảo publisher và subscriber ghi nhận cùng một trạng thái.

P2Sub: Các vấn đề liên quan tới aknowledge luôn được xử lý ngầm bên cạnh việc pulish các messages.

Thiết lập ban đầu

Để apply pub/sub pattern vào thực tế hoặc môi trường thường sẽ rất tốn kém thời gian. Ngoài ra cần thêm rất nhiều bước khác để thiết lập các kết nối an toàn khi hệ thống chạy trên môi trường internet. Và thời gian để test các thiết lập của kèm theo các thông số.

P2Sub: Trong thực tế, việc config các service và join vào các network có thể được hoàn tất một cách tốt hơn rất nhiều. Chúng ta có thể apply self-signed certificate và issue chúng một cách tự động. Thay vì trust một node cụ thể chúng ta chỉ cần tất cả các node trust một CA.

Multicast

Một điều khiến pub/sub pattern đôi lúc khiến cho chính nó trở thành lựa chọn tồi tệ là publisher không có khả năng nhận biết những subscribers nào đang subscribe.

P2Sub: Hổ trợ private message, điều này đảm bảo trong một vài trường hợp publisher và subscriber có thể trao đổi các messages được mã hóa (AES-128).

Về project

Project vẫn đang trong quá trình rất sớm của alpha stage với rất nhiều tecnical challenge thú vị.

Project được license theo Apache License 2.0.

--

--