使用PubNub相比于Amazon Simple Notification Service (SNS)的优缺点是什么?

9

对于我的团队项目,我需要提出我们应该使用 PubNub 还是 Amazon 简单通知服务 (SNS)。我发现 PubNub 很容易实现和使用,但我在互联网上找不到任何具体的东西来说明它们与 Amazon SNS 相比的优缺点。

1个回答

9

PubNub实时网络和Amazon SNS

来源于Quora的原始答案:使用PubNub与使用Amazon SNS相比有哪些优缺点?

使用PubNub与使用Amazon SNS相比有哪些优缺点?

PubNub实时网络和Amazon SNS都使用发布/订阅模式来发送和路由数据。然而,这就是比较的结束。这两个服务提供不同的功能并解决不同的业务问题;它们不能互相替代。

将数据发布到终端用户设备:PubNub vs SNS

PubNub专为向终端设备(包括智能手机、平板电脑、浏览器和笔记本电脑)传递低延迟数据(SLA低于0.25秒)而设计,这些设备可能位于防火墙、NAT环境、基站授权和其他难以到达的网络环境中。PubNub通过对每个设备维护一个始终开放的套接字连接,并利用此开放的套接字连接以低延迟“推送”数据来实现这一点。PubNub提供50多个客户端SDK库,使得使用简单的PubNub订阅API调用轻松“插入”PubNub实时网络成为可能。
相反,亚马逊SNS无法直接通过客户端设备进行通信,除非通过电子邮件或短信通知。因此,对于依赖低延迟数据的应用程序(例如多人游戏、聊天应用程序、协作应用程序等),Amazon SNS不是正确的解决方案。 Amazon SNS向订阅者发送数据的主要方式是通过电子邮件或HTTP回调。在移动、浏览器和桌面设备上运行HTTP服务器以接收这些通知是不切实际的,这既因为网络防火墙,也因为设备安全原因。 Amazon SNS的主要用途是用于服务器到服务器的发布/订阅用例,或者用于电子邮件和短信通知终端用户。关于常见的Amazon SNS用例的良好解释在这里:Amazon的简单通知服务有哪些好用的用例?。 Amazon SNS不是适用于应用内实时通知的正确工具。 Amazon SNS更类似于Tibco或Tuxedo,这是服务器到服务器的发布/订阅系统。

PubNub实时网络与SNS的功能特点

除了简单的发布/订阅之外,PubNub实时网络还提供了一系列“构建块”服务,适用于任何类型的实时应用程序。这些服务不是由Amazon SNS或其他Amazon服务提供的:
- PubNub Presence -- 提供实时更新在线用户以及离线警报。这些更新通过多路复用的PubNub“姐妹通道”提供,每当应用程序中的用户计数更改时,就会流式传输存在更新。另外一个名为“Here_Now()”的API也提供了应用程序中用户的最新计数。 - PubNub Storage/Playback -- PubNub自动存储发布到每个频道的所有数据,并提供两种检索此数据的机制:(a) 一次性检索数据的简单REST请求,和(b) 类似于电视录像机的“播放”机制来回放此数据。 - PubNub实时分析 -- PubNub提供各种可视化和使用统计信息,以显示用户活动、地理位置和使用情况。下面是一个示例截图:

PubNub Real-Time Network (RTN) Global Map Visual Data

  • PubNub离线移动推送 -- PubNub还提供了一种针对移动设备的消息回退机制,用于在移动应用程序未运行(或在后台)时。PubNub可以回退到移动“推送通知”,确保即使手机在口袋中,移动端用户也能收到通知。一旦启动应用程序,应用程序将再次开始使用PubNub的实时网络。
  • AES加密 -- PubNub提供开箱即用的AES 256加密支持,确保数据在通过PubNub网络路由时仍然加密。虽然Amazon SNS提供HTTPS,但这意味着数据在通过Amazon网络路由时是未加密的。这立即使Amazon SNS不能用于HIIPA、SAS70和其他安全性高的应用程序。
  • 多路复用 -- PubNub通过一种机制增强了多信道通信,该机制允许所有数据主题在单个TCP套接字连接上流式传输。通过PubNub多路复用,节省最明显的是移动设备资源,比如电池供电的手机和较慢的网络连接。数据通过可配置的窗口化进行压缩和捆绑,以提供更长的电池寿命,并在不断变化的网络条件下改善终端用户体验。

延迟(即“实时”)PubNub与SNS

因为PubNub通过现有的、已建立的开放网络套接字传递数据,所以95%的订阅设备从发布到订阅的延迟在0.25秒以下。如果事件在0.6-0.7秒内被感知,大多数人会认为它是“实时”的。Amazon SNS不提供延迟保证,大多数延迟超过1秒,并且通常比许多秒慢。再次说明,这在某种程度上是无关紧要的;Amazon SNS设计用于服务器到服务器(或电子邮件/短信)通知,其中许多秒的延迟通常是可接受和预期的。

PubNub和SNS的频道/主题和复用

Amazon SNS允许在一个账户上创建多达100个“主题”(请参见Amazon Simple Notification Service (SNS))。一个“主题”等同于一个PubNub频道。相反,PubNub支持无限数量的PubNub频道。今天,一些客户每月通常使用超过100万个频道。这使得每个终端用户设备都可以拥有自己的频道进行一对一连接。

此外,PubNub对于多路复用的支持,允许客户端设备同时连接到多个PubNub频道,同时继续使用单个网络套接字。这使得客户端可以同时订阅例如“私人”频道,该频道专门配对单个设备或由同一人拥有的设备集,并且“公共”频道,整个群体或整个人口也可以订阅。
多路复用的另一个用例是流媒体股票价格应用程序:假设您想要为1,000种不同的股票流传股票价格变化。每只股票都有自己的PubNub频道。最终用户设备将使用PubNub多路复用仅订阅与他们想要跟踪的股票相关的PubNub频道。
由于Amazon SNS不支持多路复用,因此这种用例不可能实现。
PubNub实时网络与SNS的可靠性和冗余性。
PubNub实时网络在全球分布着12个数据中心,并且还在不断增长。所有发布到PubNub全局云的数据都会自动进行全球复制,提供低延迟和无与伦比的可靠性,即使整个数据中心发生故障也是如此。PubNub为其实时网络提供高达99.999%的SLA正常运行时间。Amazon SNS是一个测试版服务,因此没有服务等级协议。
PubNub实时网络和SNS的摘要
Amazon SNS有各种有趣的用途,主要涉及服务器对服务器的通知以及电子邮件/短信终端用户警报。它最初是作为在各种其他Amazon AWS云服务之间编排数据的一种方式而开发的,因此主要用于服务器后端操作和数据移动。 PubNub实时网络旨在使构建移动、浏览器和桌面上的实时应用程序轻松扩展到数百万同时用户的全球范围内。今天,PubNub已经在全球超过2,000个应用程序中使用,涵盖社交、广告、游戏、电信和各种其他市场。

6
这句话不正确:“相反,除了通过电子邮件或短信通知以外,亚马逊 SNS 没有办法到达客户端设备。”亚马逊 SNS 半年前添加了通过 GCM 和 APNS 原生消息传递的功能。 - tster
1
@tster,你说得很好,感谢你的更新。 :-) 我们提到了“Amazon SNS没有办法到达客户端设备...”,并且是指非第三方路线。基本上,GCM和APNs是第三方供应商,它们预先加载连接,而SNS仅从远处调用这些连接供应商。现在我们正在谈论GCM和APNS,这实际上更多地涉及到推送通知,这是一种不同类型的解决方案,也由其他公司提供。 - Stephen Blum
2
显然,你对自己的身份非常坦诚,但是你在一些情况下对SNS的描述有些夸张。虽然你声称SNS是为服务器之间的通信而设计的是正确的,而且你也说得对,这些用例可能不是在SNS上最容易或最好的。以下是一些更正意见:1)多路复用 - 你提到的用例可以通过使用SNS和SQS的组合以及客户端长轮询SQS轻松实现。 - tster
1
  1. 延迟 - 我不知道你从哪里得到了SNS的数字,但它们肯定不是我所经历过的。这可能对于电子邮件和短信消息是正确的,但对于http和SQS消息,95th百分位延迟应该要好得多。此外,您错误地认为服务器到服务器的应用程序不会受到延迟的影响。
- tster
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接