google pub/usb
tools
summary_2018/09
messageQueue
1、日常
1.1、 google pub/usb及function之间的消息传递
1.2、 google pub/usb
2、技术
2.1、 google pub/usb及function之间消息传递中数据格式??及如何来进行function本地测试??
- 使用google pub/usb时,客户端SDK会对会对数据进行处理,比如对json字符串的传递会转化为base64编码,goole function本身对各种数据格式的处理没有问题,因此使用Google Cloud Functions Emulator对goole function本地测试时需要对传入的数据进行base64编码。
2.2、google pub/usb
2.2.1、pub/sub简介
- Cloud Pub/Sub 是一种发布/订阅 (Pub/Sub) 服务,即消息的发送者与消息的接收者分离的消息传递服务。
- Cloud Pub/Sub 将企业消息传递中间件所具备的可扩展性、灵活性和可靠性带到了到云端。减少了一定的环境搭建、配置、维护的工作,只需要进行配额即可。
- 适应场景、优点及特性
2.2.2、pub/sub发布/订阅
消息:通过服务移动的数据。
主题:代表消息源的命名实体。
订阅:代表有兴趣接收特定主题的消息的命名实体(基于主题、一个订阅只能由有一个主题)。
发布者(也称为生产者):创建消息并将其发送(发布)到指定主题上的消息传递服务。
订阅者(也称为使用者):接收指定订阅的消息。
- 发布者特性
- 分批处理以平衡延迟和吞吐量
- 重试机制
- 并发控制,取决于使用的编程语言实现
- 订阅者特性
- Cloud Pub/Sub 会为每个订阅将发布的每条消息至少传送一次。(但也有例外:比如最长保留7天的消息无法传送的消息将被删除)
- 支持pull/push两种方式(选择参考)
- Tips:系统可能会自动删除在 31 天内无活动(拉取请求或推送成功)的订阅。
2.2.3、消息传递机制
1、发布者应用在 Cloud Pub/Sub服务中创建一个主题,并向该主题发送消息。消息包含负载和描述负载内容的可选属性。
2、消息会持久保存在消息存储空间中,直到已传送并由订阅者确认。
3、Pub/Sub 服务将某主题的消息分别转发至其所有订阅。每个订阅通过以下方式接收消息:Pub/Sub 将消息推送到订阅者的所选端点,或订阅者从服务中拉取消息。
4、订阅者从其订阅接收待处理消息,并向 Pub/Sub 服务确认每条消息。
5、订阅者确认消息后,该消息将从相应订阅的消息队列中移除。
2.2.4、评判消息传递服务的性能
- 可拓展性:可以十分方便的进行扩展配额,参考
- 可用性
- 系统可用性的衡量方法是看它能否应对不同类型的问题并且以最终用户察觉不到的方式从容进行故障转移。(机器、网络、人工操作的失败),这方面主要是考虑备份和故障切换,保证功能正常运行,以维护用户体验。
- 消息延迟
- 确认发布的消息所用的时间
- 向订阅者传送已发布消息所用的时间
- 消息的可靠性:订阅者消费有ACK机制,在一定程度上保证了可靠。(但是超时可能导致重复消费)
- 消息排序:不支持,不适用强调消息排序的场景;如果强调处理结果的有序性,可以将处理结果放到数据库等再进去排序。
- 当然对定制化的场景存在一定的约束。
- 除了使用上,在维护和监控方面,也有现成配套的 Stackdriver Monitoring ,但也存在一定的局限性。
2.2.5、参考文档