作者:NKN Labs CTO 张逸伦
什么是Pub / Sub
NKN客户端的一个基本功能(例如https://github.com/nknorg/nkn-client-js)是提供去中心化的消息传递系统,包括单播,多播和任播。如果消息发送者知道谁是接收者,那就足够了。但是,在许多常见情况下,接收器应在逻辑上与发送方分离。例如,当我向聊天室发送消息时,我不一定确切地知道聊天室中有谁,我只想让聊天室中的任何人能接收我的消息。这就是Pub/sub能实现的功能。
简单来说,Pub/sub(发布/订阅的简称)是一种将消息发送者(发布者)和接收者(订阅者)解耦的模型。发布者将消息发布到主题(我们仅在此处考虑基于主题的Pub/sub),而无需知道谁订阅该主题并将接收到消息。订阅者订阅主题并将收到别人发送到此主题的消息。发布/订阅是现代应用程序的基本构建模块,并且已广泛用于从基础设施级别(例如负载均衡)到应用程序级别(例如聊天室/即时聊天软件等)。
Google云的以下图表(https://cloud.google.com/pubsub/docs/overview)显示了发布者,订阅者和主题之间的关系:
发布者应用创建主题并将消息发送到主题。订阅者应用创建对主题的订阅以便从其接收消息。通信可以是一对多(扇出)、多对一(扇入)和多对多。
分布式Pub / Sub的挑战
像Google Cloud,AWS这样的云服务商提供基于云的发布/订阅,但是