Golang微服务框架Kratos应用Pulsar消息队列

兄弟姐妹们在线分析下,Golang微服务框架Kratos应用Pulsar消息队列
最新回答
柒槿年

2022-11-27 12:35:32

消息队列是一种异步服务间通信方式,应用于无服务器和微服务架构,保存消息直至处理与删除。每条消息仅能处理一次。消息队列辅助分离重量级处理、缓冲或批处理任务,以及缓解高峰期工作负载。在大型分布式系统中,消息队列是不可或缺的中间件,高并发系统的基础,学习掌握消息队列MQ至关重要。


本文将介绍消息队列、Pulsar及其在微服务框架Kratos中的应用。


什么是消息队列


消息队列实质为数据容器,提供高效可靠的消息传递机制,构建分布式系统中的应用解耦、异步消息、流量削峰等解决方案,实现系统高性能、高可用、可伸缩和最终一致性。


常见消息队列有ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、Pulsar、NAQ、NATS等。


消息队列应用场景


异步处理

微服务接口多为RPC调用,同步阻塞执行。使用消息队列转换为异步、并发执行,减少同步接口响应时间,提升系统吞吐量。如用户下单后,一系列业务处理并行执行,显著提高系统效率。


应用解耦

应用解耦解除系统间紧密依赖。消息队列使得每个应用独立运作,避免因系统异常影响其他应用。电商系统下单后,订单系统通过消息队列通知积分系统,实现应用解耦,提高系统稳定性。


流量削峰

消息队列用于处理流量高峰期,如秒杀或团购活动。服务器接收请求写入队列,系统根据队列信息处理,避免流量过大导致应用宕机,实现流量均衡。


什么是Pulsar


Pulsar是Apache基金会顶级项目,下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算于一体。采用计算与存储分离架构,支持多租户、持久化存储、跨区域数据复制,具有强一致性、高吞吐、低延时及高可扩展性。


Pulsar于2012年诞生于Yahoo,用于整合消息系统,支撑大规模集群和跨区域消息平台。Yahoo的多个应用,如Yahoo Mail、Finance、Sports、Flickr、Gemini广告平台等,均使用Pulsar。


Pulsar关键特性


基本概念

  • Producer:消息源头,发布者,将消息发送到topic。

  • Consumer:消息消费者,订阅并消费topic中的消息。


Pulsar支持三种订阅模式,共存于同一topic。


核心组件

  • Topic:消息载体,可分多个partition。

  • Broker:无状态组件,接收producer消息并交付给consumer。

  • BookKeeper:分布式预写日志系统,提供消息存储服务,支持跨数据中心复制。

  • Bookie:BookKeeper服务端。

  • Cluster:Pulsar实例集群,由一个或多个实例组成。


部署Pulsar


部署单机模式服务,设置管理Web UI、管理员账号密码,后台创建环境。添加Pulsar地址为服务地址。


Kratos应用Pulsar


封装Pulsar客户端为Kratos的transport.Server,实现Broker和Server层引用。在Data层引用Broker,注入至Wire的ProviderSet,创建Broker并在Service中调用。在Server层引用Server,调用kratos.Server注册到Kratos,完成消息处理。


实例代码与接口定义在开源项目中提供,适用于Kafka接口,仅参数差异。


以上内容涵盖消息队列基础、Pulsar关键特性、部署步骤以及在Kratos应用Pulsar的方法。掌握消息队列和Pulsar技术,可优化分布式系统设计与性能。