- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
跨境电商的Go服务治理实践
展开查看详情
1 . 跨境电商的 Go服务治理实践 陈冶 @ ezbuy
2 .⽬录 1. 背景&前⾔ 2. 开发环境构建 New! 3. 微服务选型 Hot! 4. 分布式追踪 New! 5. 跨数据中⼼
3 .前⾔&背景 ✤ 我们正在将业务从 C# 切换到 Go,计划是全部最终均使⽤ Go 实现。 ✤ 此次分享关注点在于怎么从零打造⼀整套 Go 服务体系 ✤ 所以我们第⼀件事就是从规范开发环境做起
4 .开发环境构建: Goflow ✤ 开发环境统⼀化 ✤ 第三⽅依赖⽅案 ✤ 编译流程⼀体化
5 .开发环境构建: Goflow ✤ 设计理念: ✤ 没错,我就是 GOPATH ✤ 与个⼈环境 共存 且 相互独⽴
6 .开发环境构建: Goflow ✤ 修改环境变量 GOPATH,PATH 当环境被污染时会打印⼀个Logo ✤ 在所在环境注册⼀些函数 ✤ 负责基础库更新,⼯具链的编译
7 .开发环境构建: Goflow - 依赖管理 ✤ 共享依赖! ✤ 内⽹缓存,不⾛⼩⽔管 ✤ 和业务代码分开 ✤ “随意”修改第三⽅包
8 .开发环境构建: Goflow - 依赖管理 ✤ 实现⽅案 ✤ 使⽤官⽅的 vendor ⽅案来实现 ✤ 新建⼀个仓库来存放所有依赖包 ✤ 第三⽅包通过 subtree 加⼊到仓库内 ✤ 这个库的名字直接叫 vendor
9 .开发环境构建: Goflow - 依赖管理 ✤ 现在全部第三⽅库的体积 ✤ 内⽹下载只要 12 秒 ?!
10 .开发环境构建: Goflow - ⼯具链集成 ✤ goflow 是分发平台 ✤ 全部放在vendor⾥⾯ ✤ ⾃我迭代时更新
11 .开发环境构建: Goflow - 总结 ✤ 全程⾃动化 - 个⼈环境 ✤ 巧妙管理第三⽅依赖(包括⼯具链) ✤ ⾃我迭代 ✤ (只⽀持命令⾏)
12 .开发环境构建: Goflow
13 .微服务选型: gRPC ✤ 使⽤pb来描述接⼜ ✤ 扩展代码⽣成 ✤ 使⽤consul⽤于服务发现和负载均衡
14 .微服务选型: 接⼜定义 ✤ 包 -> 服务 -> ⽅法 ✤ 可以拥有接⼜级别的配置
15 .微服务选型: 接⼜扩展 定义接⼜特征
16 .微服务选型: gRPC
17 .微服务选型: SDK vs RPC ✤ ⼀个服务提供的内容不仅限于接⼜ gRPC exchange Service exchange Product Service SDK exchange gRPC Service
18 .微服务选型: gRPC - 项⽬改造 ✤ 使⽤ internal 来隔离资源/函数
19 .微服务选型: gRPC
20 .微服务选型: gRPC
21 .✤ Consul ✤ 程序内维护地址列表 ✤ polling 获取更新
22 .微服务选型: gRPC - 项⽬改造 注册信息
23 .微服务选型: 问题 ✤ 阅读体验... 差 ✤ 调⽤远程服务的思考成本 ✤ 调⽤栈⽆法真实还原
24 .微服务选型: gRPC + Webapi Webapi⽣成代码
25 .微服务选型: gRPC + Webapi ✤ consul-template ⾃动注册路由 ✤ 找出⽀持webapi的接⼜ ✤ 共享⼀个端⼜ (github.com/cockroachdb/cmux)
26 .微服务选型: 总结 ✤ 使⽤ gRPC 作为微服务框架,与服务发现深度结合 ✤ 让 远程调⽤ == 本地调⽤ (形式上) ✤ 接⼜路径 == 代码路径 ✤ 通过option定义接⼜特性 ✤ ⽤ goflow 解决依赖的⼯具链(consul)
27 .分布式追踪:调⽤栈 ✤ sentry,调⽤栈展⽰
28 .分布式追踪:调⽤栈 ✤ sentry, 记录的⼀些上下⽂信息值
29 .分布式追踪:调⽤栈 ✤ 跨进程的错误跟踪 服务2;服务4: error 服务1;服务2;服务4: error 服务2 服务4:error 服务1 服务4 error 客户端 API 服务3