Download presentation
Presentation is loading. Please wait.
1
bigpipe 简化HTTP异步调用
2
低延迟接口 高延迟接口 同步调用 低延迟接口 高延迟接口 异步调用 bigpipe登场!
3
小红说:替我把鸭子运给小明 给你鸭子,小明
Client Call Producer Kafka Consumer Server
4
bigpipe core common kafka server producer consumer client slow fast
log stats proto util config
5
call curl localhost:10086/rpc/call -d ‘ { "acl": { "name": "system-1",
"secret": "i am good" }, "url": " "data": "hello ", "partition_key": "暂时用不到" } ' "data": "", "errno": 0, "msg": "发送成功"
6
stats
7
模块划分
8
config 包:json、ioutil 功能:读取配置文件,解析Json
9
server 相关配置: 包:net/http 功能:http协议、并发服务端 go go go go http.Server
handler go main listener go go handler go handler
10
client 相关配置: 包:net/http 功能:http协议、并发客户端,限流,限并发,重试 go go request go
http.Client 系统A go 限并发 限流 consumer 系统B request go go channel 令牌桶 系统C
11
producer 相关配置: 包:confluent-kafka-go 功能:发送消息给kafka 消息 call 取走 投递 结果 事件
server hash分区 produce channel 取走 投递 confluent kafka call 结果 事件 handler event channel
12
consumer 相关配置: 包:confluent-kafka-go 功能:从kafka读取消息 消费 go 拉取 consumer
events channel 消费 consumer group - 1 main events channel confluent kafka 拉取 consumer group - 2 consumer group - 3 events channel
13
proto 包:json 功能:序列/反序列化kafka消息
14
stats 包:atomic 功能:原子变量,统计程序指标
15
log 相关配置: 包:io,fmt 功能:基于channel的异步日志 线程1 log 输出日志 消费 线程2 线程3 goroutine
bigpipe _16.log bigpipe _17.log goroutine 线程1 bigpipe _18.log log 输出日志 goroutine 线程2 sink channel 消费 goroutine 线程3
16
go get不支持版本,不支持自动分析依赖,不支持自动下载依赖
包管理glide go get不支持版本,不支持自动分析依赖,不支持自动下载依赖 glide.yaml 安装依赖 添加依赖
17
https://github.com/owenliang/bigpipe
参与项目: 1,fork自己的项目 2,在fork中创建dev分支,在上面开发代码 3,在github提交pull request给bigpipe 4,等待bigpipe合并/打回代码 5,定期在fork上合并bigpipe的master分支,保持与最新代码一致 6,定期在fork上将master合并到dev,保持与最新代码一致
Similar presentations