Amazon Web ServicesCloud

AWS SNS |简单通知服务

什么是SNS?


  • SNS代表简单通知服务。
  • 它是一项Web服务,可轻松设置,操作和从云发送通知。
  • 它为开发人员提供了高度可伸缩,经济高效且灵活的功能,可以从应用程序发布消息并将其发送到其他应用程序。
  • 这是一种发送消息的方式。当您使用AutoScaling时,它将触发SNS服务,该服务将通过电子邮件向您发送“您的EC2实例正在增长”的电子邮件。
  • SNS还可以通过将推送通知发送到Apple,Google,Fire OS和Windows设备以及带有百度Cloud Push的中国Android设备来向设备发送消息。
  • 除了将推送通知发送到移动设备外,Amazon SNS还通过SMS或电子邮件将通知发送到Amazon Simple Queue Service(SQS)或HTTP端点。
  • SNS通知还可以触发Lambda函数。将消息发布到具有关联的Lambda函数的SNS主题时,将使用消息的负载调用Lambda函数。因此,可以说以消息有效负载作为输入参数来调用Lambda函数,并操纵消息中的信息,然后将消息发送到其他SNS主题或其他AWS服务。
  • Amazon SNS允许您使用主题对多个收件人进行分组,其中主题是将相同消息的相同副本发送给订阅收件人的逻辑访问点。
  • Amazon SNS支持多种端点类型。例如,您可以将IOS,Android和SMS收件人分组在一起。将消息发布到主题后,SNS会将消息的格式化副本发送给订阅者。
  • 为了防止数据丢失,所有发布到SNS的消息都冗余地存储在多个可用性区域中。

SNS发布者和订阅者


Amazon SNS是一种Web服务,用于管理向订阅终端发送消息。 SNS有两个客户端:

  • 订户
  • 出版商

出版商

发布者也称为生产者,它们产生消息并将其发送到SNS,SNS是逻辑访问点。

订户

Web服务器,电子邮件地址,Amazon SQS队列,AWS Lambda函数等订阅服务器通过一种受支持的协议(Amazon SQS,电子邮件,Lambda,HTTP,SMS)从SNS接收消息或通知。

注意:发布者将消息发送到他们创建的SNS主题。发布消息时无需指定目标地址,因为主题本身与与发布者已创建的主题相关联的订户相匹配,并将消息传递给订户。

如何使用SNS


  • 移至应用程序服务下可用的SNS服务。
  • 单击出现在控制台左侧的主题。
  • 单击创建主题以创建一个新主题。
  • 在文本框中输入主题名称。
  • 以下屏幕显示该主题已成功创建。
  • 要创建订阅,请点击创建订阅
  • 现在,选择端点类型并输入端点地址,即您要发送通知的位置。
  • 以下屏幕显示预订状态为待定。
  • 下面的屏幕显示邮件已发送给订户。订阅者必须单击“确认订阅”
  • 单击主题名称,即,您好,然后单击发布消息
  • 输入主题,生存时间和要发送到端点的消息正文。
  • 该消息已发送到ID中提到的所有订户。

SNS的好处


  • 即时交付SNS基于基于推送的交付。这是SNS和SQS之间的关键区别。在主题中发布消息后,便会推送SNS,并将消息传递给多个订阅者。
  • 灵活的SNS支持多种端点类型。多种端点类型可以通过多种传输协议(例如电子邮件,SMS,Lambda,Amazon SQS,HTTP等)接收消息。
  • 廉价的SNS服务非常便宜,因为它基于即付即用模型,即,仅在使用资源时才需要付费,而无需前期费用。
  • 易于使用SNS服务非常易于使用,因为基于Web的AWS管理控制台提供了简单的点击界面。
  • 简单体系结构SNS用于通过减轻订阅者的消息过滤逻辑和发布者的消息路由逻辑来简化消息传递体系结构。 SNS不会从主题接收所有消息,而是将消息发送给他们感兴趣的仅订阅者。

SNS和SQS的差异


  • SNS代表简单通知服务,而SQS代表简单队列服务
  • SQS是基于拉式的传递,即,消息不被推送到接收者。用户必须从队列中提取消息。 SNS是基于推送的传递,即,消息被推送到多个订户。
  • 在SNS服务中,消息被同时推送到多个接收者,而在SQS服务中,消息未被多个接收者同时接收。
  • SQS轮询会在消息传递过程中引入一些延迟,而SQS推送会立即将消息推到订户。

SQS 是亚马逊提出的一种分布式的消息队列服务,这种队列服务收到任务或者消息后,不会主动发送给客户端,如果想要执行这些任务和获取这些信息需要客户端主动轮询消息队列服务。这样,不同的客户端就可以根据自己查询到的任务和消息去执行对应的操作,最后把执行结果回调回去,从而实现分布式系统。

SNS 是亚马逊提出的一种分布式的发布-订阅模式的消息服务,当发布者把消息发送给消息服务后,消息服务会把该消息推送给相应的订阅者。订阅者(客户端)收到消息后再去执行对应的操作,最后把执行结果回调回去,从而实现分布式系统。

关于 SQS 和 SNS 二者的区别,下面简单整理了一个表格。

说到 SQS 和 SNS 的联系,其实在很多场景下,二者是可以配合使用的,各取每种模式的优点,在不同的场景下执行不同的策略,保证服务的稳定性和实时性。