什么是“共享订阅/发布”?

Posted

技术标签:

【中文标题】什么是“共享订阅/发布”?【英文标题】:What means "sharing subscriptions/publishes"? 【发布时间】:2020-11-07 01:02:23 【问题描述】:

我正在尝试理解文档中的 following 部分。

请注意:默认情况下,graphql-subscriptions 会导出内存中 (EventEmitter) 事件系统以重新运行订阅。这不适合在严肃的生产应用程序中运行,因为无法在许多正在运行的服务器之间共享订阅和发布。

什么是共享订阅/发布?在哪些情况下我可能在生产中需要它?

【问题讨论】:

【参考方案1】:

在生产环境中,您通常需要在不同服务器上运行多个实例以提高弹性。这样,单个服务器故障不一定会影响可用性。随着您的业务和服务器上资源需求的增长,与向单个服务器添加更多资源相比,通过添加更多服务器进行横向扩展通常更容易且更具成本效益。

由基本PubSub 实现创建的 EventEmitter 与单个进程相关联。没有办法在多个进程之间共享它们的使用,更不用说不同的服务器了。因此,如果您publish 某事,运行在不同进程或服务器上的应用程序将不会收到该事件的通知。另一方面,如果您使用 PubSub 的 Redis 实现(或几乎任何其他实现),那么 Redis 将充当您的应用程序实例的“中间人”——每个应用程序将向 Redis 发布事件并订阅更改。

【讨论】:

以上是关于什么是“共享订阅/发布”?的主要内容,如果未能解决你的问题,请参考以下文章

vps服务器中的共享型是什么意思?

什么 叫 session 共享

杂谈 什么是伪共享(false sharing)?

共享模式在共享访问中是啥意思?

远程管理共享admin

干货|排他锁和共享锁分别是什么?有什么不同?