- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
构建大规模微服务架构应用
七牛云富媒体处理平台应用
面向大规模的服务架构
构建自动化交付流程
重新定义大规模应用设计
展开查看详情
1 .构建大规模微服务架构应用 何李石 @ikbear 七牛云首席布道师
2 . 构建大规模微服务架构应用 何李石 About 《Go 语言程序设计》联合译者 5 年云服务,负责七牛对外技术布道 七牛云:数据存储、处理,直播云, 容器云,大数据,机器学习云
3 . 构建大规模微服务架构应用 何李石 App: 七牛云富媒体处理平台应用 Infra: 面向大规模的服务架构 Microservices CI & CD & Ops: 构建自动化交付流程 微服务架构:重新定义大规模应用设计
4 . 构建大规模微服务架构应用 何李石 复杂世界的数据处理需求 ■ 多终端设备(硬件) ■ 多 OS 平台(软件) ■ 多尺寸观看、播放 ■ 多网络适配
5 . 构建大规模微服务架构应用 何李石 基于云端的数据处理 图片、音视频鉴黄 电信 联通 终端上传 图片处理 文档转换 移动 七牛云存储 七牛云处理 七牛云分发 静态文件 语音处理 视频转码 海外 自定义数据处理 UFOP 教育网 其他 云主机 or 云引擎 or 自建服务器
6 . 构建大规模微服务架构应用 何李石 图片缩放裁剪
7 . 构建大规模微服务架构应用 何李石 音视频自适应播放
8 . 构建大规模微服务架构应用 何李石 基本架构 ■ API Gateway: 访问控制 ■ Load Balance ■ Image/Video Service 混合部署 ■ 客户自定义 Service 部署
9 . 构建大规模微服务架构应用 何李石 App: 七牛云富媒体处理平台应用 Infra: 面向大规模的服务架构 Microservices CI & CD & Ops: 构建自动化交付流程 微服务架构:重新定义大规模应用设计
10 . 构建大规模微服务架构应用 何李石 大规模服务架构挑战 ■ 大规模:处理海量请求(300亿/天) ■ 动态伸缩:突发请求、业务增长(早、中、晚高峰) ■ 团队、技术架构异构(Go / Python / Java) ■ ……
11 . 构建大规模微服务架构应用 何李石 微服务化尝试 ■ 服务构建:基于最佳实践的微服务框架 ■ 服务治理:注册与发现 ■ 分布式系统设计:基于 Event Sourcing 的设计模式
12 . 构建大规模微服务架构应用 何李石 服务构建:Kite Micro-service Framework
13 . 构建大规模微服务架构应用 何李石 多实例部署的问题 动态伸缩 10.0.0.1:8755 IP 动态分配 服务实例 A 10.0.0.2:8755 请求哪个? 客户端 服务实例 B 10.0.0.3:8755 服务实例 C 如何做好 负载均衡?
14 . 构建大规模微服务架构应用 何李石 服务注册与发现
15 . 构建大规模微服务架构应用 何李石 服务注册
16 . 构建大规模微服务架构应用 何李石 服务发现
17 . 构建大规模微服务架构应用 何李石 客户端查询模式 10.0.0.1:8755 动态伸缩 IP 动态分配 服务实例 A 10.0.0.2:8755 查询 请求服务实例 客户端 模块 服务实例 B 10.0.0.3:8755 服务实例 C 注册 中心
18 . 构建大规模微服务架构应用 何李石 客户端查询模式 优点: ‣ 「注册中心」在服务之外维护,使用简单,对已有的微服务架构侵入小; ‣ 客户端直接请求后端实例,查询完成后请求链路不需要经过其它中间环节; 缺点: ‣ 客户端和「注册中心」绑定; ‣ 客户端的实现取决于具体语言或者框架,每个客户端都得自己去实现;
19 . 构建大规模微服务架构应用 何李石 服务端查询模式 10.0.0.1:8755 动态伸缩 IP 动态分配 服务实例 A 10.0.0.2:8755 客户端 请求服务实例 客户端 路由 服务实例 B 10.0.0.3:8755 服务实例 C 注册 中心
20 . 构建大规模微服务架构应用 何李石 服务端查询模式 优点: ‣ 客户端不需要做额外的变更; ‣ 有些云服务公司已经提供类似产品可以满足需求了,可以直接接入; 缺点: ‣ 除非是托管在云服务提供商那里,否则还需要额外的服务端来部署「路由 」或者「负载均衡器」部分,这也就意味着需要保证这个部分的可靠性和 可用性,需要额外的系统设计和运维工作; ‣ 客户端请求多了一个路由代理的步骤,增加系统总体耗时;
21 . 构建大规模微服务架构应用 何李石 开源工具 ■ etcd: 服务发现、全局分布式 key-value 存储; ■ consul: 服务发现、全局分布式 key-value 存储; ■ zookeeper: 服务发现、全局分布式 key-value 存储;
22 . 构建大规模微服务架构应用 何李石 分布式系统设计
23 . 构建大规模微服务架构应用 何李石 分布式数据库:基于日志的最终一致性
24 . 构建大规模微服务架构应用 何李石 以日志为中心的基础架构 Graph DB Key-Value 搜索 OLDP 存储 查询层 查询层 监控 流处理 和报表 日志 流程 Source: LinkedIn Engineering Blog: The Log: What every software engineer should know about real-time data's unifying abstraction Hadoop 存储
25 . 构建大规模微服务架构应用 何李石 以 Log 为中心的分布式数据存储 ■ 通过顺序化节点的并发更新来处理数据一致性(最终和实时一致); ■ 为系统提供节点间的数据复制机制; ■ 为数据的写提供「commit」语义; ■ 为外部系统提供数据订阅服务; ■ 为其它副本提供数据恢复的参考依据; ■ 在节点之间提供数据读写平衡;
26 . 构建大规模微服务架构应用 何李石 “Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure.” – Conway's Law
27 . 构建大规模微服务架构应用 何李石 “一个组织的结构 是该组织设计系统时沟通结构的映射。”
28 . 构建大规模微服务架构应用 何李石 软件即沟通 ■ API as a Service: 基于 API 的沟通; ■ 数据一致性:基于业务需求的沟通;
29 . 构建大规模微服务架构应用 何李石 基于 Event Sourcing 的设计模式 AccountCreated OwnerChanged WithdrawalPerformed Id: 123 AccountId: 123 AccountId: 123 Owner: Lishi He Owner: Ikbear Amount: 100¥ Event Log