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 使用场景:电商业务
高级特性:最终一致,延迟发送,消费重试和死信队列