HTTP 消息队列| 青训营笔记

40 阅读2分钟

HTTP协议

HTTP:超文本传输协议(可传输非txt文件)

具体内容:请求行(方法名 URL 协议版本)/状态行(协议版本 状态码 状态码描述) 请求头/响应头 请求体/响应体

请求流程:业务层 中间件层 路由层 协议编解码层 传输层

HTTP框架设计

应用层:提供合理的API(可理解性,简单性,避免重复,兼容性,可测性,可见性)

中间件层:1.配合Handler实现一个完整的请求处理生命周期 2.有预处理逻辑与后处理逻辑 3.可注册多中间件 4.对上层模块用户逻辑模块易用

路由设计:框架路由实际时尚是为了URL匹配对应的处理函数 添加多处理函数(在每个节点上使用list存储handler)

协议层:抽象出合适的接口,需在连接上读写数据

网络层:BIO NIO

消息队列

指保存消息的一个容器,本质是个队列,需要支持高吞吐,高并发,高可用

Kafka

使用场景: 搜索,直播,订单,支付,用户行为

概念:Topic: 逻辑队列 Cluster: 物理集群,可建立多个不同的Topic Producer: 生产者,负责将业务消息发送到Topic中 Consumer: 消费者,负责消费Topic中的消息 ConsumerGroup: 消费者组,不同组的Consumer消费进度互不干涉

Offset:消息在partition(Topic的分区,可被并发处理)中的相对位置,在partition内严格递增

Replica(副本): 每个partition有多个Replica, Leader Replica将会在ISR中选出

BMQ

兼容Kafka协议,存算分离,云原生消息队列

HDFS写文件:写入到DataNode中,避免了Kafka中负载不均的问题

泳道消息:解决主干道泳道流量隔离问题以及泳道资源重复创建问题

Databus:(时间长后,延迟会高)1.简化消息队列客户端复杂程度 2.解耦业务与Topic 3.缓解集群压力,提高吞吐

RocketMQ 使用场景:电商业务

高级特性:最终一致,延迟发送,消费重试和死信队列