- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
Go in Pulsar
展开查看详情
1 .Go in @wolfstudy 2019/3/23
2 .pulsar-client-go cgo go Go functions What function Why function 使⽤用场景 function server实现 Go function 实现 example 2
3 .⼜又是 build error ? !3
4 . CGO 不不是 GO • Go 最初的定位(下⼀一代的c) • 混合编程(c 与 go) • cgo 是⼀一种⼯工具,不不是go语⾔言的扩 展 • 不不⽀支持交叉编译 https://dave.cheney.net/2016/01/18/cgo-is-not-go
5 . 性能损耗 • go的内存模型与c的不不⼀一致 • ⼤大量量的runtime.cgocall()(go tool objdump) • 阻塞可能导致 M 的数量量陡增 • 内存管理理⽅方式不不同
6 .随缘 debug
7 . 使⽤用CGO的感悟 • ⼀一定要严格控制边界 • 谨慎使⽤用指针 • 注意类型转换 • 尽量量减少与c的调⽤用 • 注意内存在哪⾥里里分配
8 .cgo 版本迭代 • 1.5 • 1.8 • 如果C struct 以零⻓长度字段结束,但 • cgo 命令⽀支持 -srcddir 参数 ⾃自身⻓长度不不为零,则go不不能改字段 • 1.6 • cgo 代码调⽤用 C.malloc,返 回 NULL 将导致进程奔溃。 • C 代码共享go指针,确保与gc共存。 • 新增 C.complexfloat(complex64)、 • 1.10 C.complexdouble(complex128) • ⽀支持类型别名 • 1.7 • 新函数 C.Cbytes • ⽀支持直接从 C 访问 Go 字符串串 • 1.8 • 1.11 • 环境变量量 PKG_CONFIG ⽤用于设置 • macOS/ios 内核调⽤用,通过 #cgo pkg-config 指令。 libSystem.so !8
9 .native go client !9
10 .架构调整 10
11 .项⽬目状态
12 .项⽬目规划 功能列列表: • producer • consumer • schema • … https://github.com/wolfstudy/pulsar-client-go
13 .go function
14 .计算框架的演进
15 . what function 1. 从input topic中消费消息 2. 将⽤用户提供的处理理逻辑应 ⽤用到每条消息上 3. 将结果publish到output topic !15
16 . why function • 部署简单 • Localrun(本地运⾏行行⼀一个函数,适⽤用于开发者) • managed-worker service来运⾏行行和管理理functions • k8s:每个function等价于⼀一个k8s的statefulset,利利⽤用k8s进⾏行行 弹性扩展 • 接⼝口简单 • 运维简单 !16
17 . 使⽤用场景 • ETL • Data Enrichment • Data Filtering • Routing
18 .function server 实现 !18
19 . 流程 • ⽤用户给REST server发送⼀一个请求 • REST server响应⽤用户的请求 • Function Metadata Manage将更更新写到FMT • Function Metadata Manager从FMT中读取更更新 • Scheduler Manager 将更更新写到 assignment topic • Function Runtime Manager 从assignment topic中读取更更新 • Membership Manager 配合 Coordination Topic 来做leader的选举 • Membership Manager 配合 Coordination Topic 保证 active membership的资格
20 . Go function 实现 • 与java、py instance的区别 • 实现的思路路 • 实现的⽅方案 • SDK • example • plugin !20
21 .SDK Demo
22 . Community ✓ Twitter: @apache_pulsar ✓ Wechat Subscription: ApachePulsar ✓ Mailing Lists dev@pulsar.apache.org, users@pulsar.apache.org ✓ Slack https://apache-pulsar.slack.com (#china) ✓ Localization https://crowdin.com/project/apache-pulsar ✓ Github https://github.com/apache/pulsar https://github.com/apache/bookkeeper
23 .谢谢参与!