Service Mesh在华为公 有云的实践
应⽤用程序容器 ⽇日志同步⼯工具容器 存储卷 Sidecar优势 • 以容器作为基础打包单元,可以分给不同的团队进⾏行开发测试 • 可重⽤用 • 以容器作为错误边界,使服务能够正确推出 • 独⽴立回滚与更新 第⼆二代:HSA SideCar • 2016年,基于Java 微服务 框架开发 • 提供SOAP协议转换 • 与微服务部署在⼀一个Pod • 占⽤用资源很⾼高 Mesher Center Scheduler 调⽤用场景1 • 透明TLS传输能⼒力,⽤用户可托管⾃自⼰己的证书 • 提供者可获得服务端限流能⼒力和处理链功能 ServiceA Mesher Mesher ServiceB https://10.100.2.3:30101 http://127.0.0.1:8080 http://127.0.0.1:30101 调⽤用场景2 • 消费者与Mesher⼀一起部署 消费者与Mesher⼀一起部署 • 提供者为Java或者Go语⾔言微服务框架开发 • 提供者为普通的业务应⽤用 ServiceA Mesher ServiceB ServiceC SDK 调⽤用场景3 • 提供者都与Mesher部署 • 消费者为Java或者Go语⾔言微服务框架开发 • 消费者不使⽤用框架 ServiceA Mesher ServiceB SDK ServiceC0 码力 | 52 页 | 4.37 MB | 1 年前3《Saga分布式事务解决⽅案与实践》演讲者/姜宁
prepare() OK prepare() OK commit() OK commit() OK • 提供强⼀一致保障 • 准备阶段完成资源操作 • 如果准备过程中出现问题,可以回滚 • 提交阶段不不允许出错 • 资源层⾯面提供保障业务侵⼊入性低 • 协议成本⾼高,并且存在全局锁的问题 ACID 与 BASE • ACID • 原⼦子性 (Atomicity) 业务操作过程中通过及时读取当前状态的⽅方式获取更更新。 Saga的实现⽅方式 • 集中式的实现⽅方式 (Orchestration-based coordination) • 集中式协调器器负责服务调⽤用以及事务协调 • 分布式的实现⽅方式 (Choreography-based coordination) • 通过事件驱动的⽅方式来进⾏行行事务协调 http://microservices Transaction 集中式Saga实现过程中问题 • 好处 • 集中式的服务调⽤用易易于监控和协调 • 坏处 • 通过JSon描述Saga事务执⾏行行灵活性不不⾼高 • 业务描述与代码相分离,需要依赖UI⼯工具的帮助 • 如何解决⾃自动获取Saga事务定义的问题? ⾃自动构造事务调⽤用信息 A B E C D Service Provider Global0 码力 | 39 页 | 2.78 MB | 1 年前3《Saga分布式事务解决⽅案与实践》演讲者/姜宁
prepare() OK prepare() OK commit() OK commit() OK • 提供强⼀一致保障 • 准备阶段完成资源操作 • 如果准备过程中出现问题,可以回滚 • 提交阶段不不允许出错 • 资源层⾯面提供保障业务侵⼊入性低 • 协议成本⾼高,并且存在全局锁的问题 ACID 与 BASE • ACID • 原⼦子性 (Atomicity) Transaction 集中式Saga实现过程中问题 • 好处 • 集中式的服务调⽤用易易于监控和协调 • 坏处 • 通过JSon描述Saga事务执⾏行行灵活性不不⾼高 • 业务描述与代码相分离,需要依赖UI⼯工具的帮助 • 如何解决⾃自动获取Saga事务定义的问题? ⾃自动构造事务调⽤用信息 A B E C D Service Provider Global Alpha⾼高可⽤用多租户架构 • 基于消息队列列的服务 • 提供TCC的协调控制服务 • 通过Omege提供幂等操作功能 • 可视化的事务拓拓扑,定位异常最多服务 • Omega进⼀一步解决多线程间共享调⽤用链问题 http://servicecomb.incubator.apache.org/developers/contributing ⼩小结 • 微服务事务⼀一致性问题? • 业界Saga的解决⽅方案0 码力 | 33 页 | 2.38 MB | 1 年前3使用微服务架构快速开发万级TPS高可用电商系统
[Github ] https://github.com/apache?q=servicecomb 微服务的其他组件 • 配置中心 a) 集中配置 b) 动态配置 c) 配置历史保留 d) 配置回滚 社区召集! e) 灰度发布配置 社区召集! • 认证鉴权 a) 认证 b) 鉴权 • Toolkit a) 契约 b) 脚手架 https://github.com/apache? apache.org [Github ] https://github.com/apache?q=servicecomb 其他优化… 步骤3 其他优化: 1. 可以使用JMeter集群进行压测,不断调优,每台最高约1250 线程, 同时发请求。JMeter 需要调高 Xmx / Xms。 2. 需要迅速伸缩,用了docker-compose。 注意NAT的性能问题。 启发:不一定要K8s,Istio, apache.org [Github ] https://github.com/apache?q=servicecomb 其他优化… 步骤3 其他优化: 1. 可以使用JMeter集群进行压测,不断调优,每台最高约1250 线程, 同时发请求。JMeter 需要调高 Xmx / Xms。 2. 需要迅速伸缩,用了docker-compose。 注意NAT的性能问题。 启发:不一定要K8s,Istio,0 码力 | 15 页 | 1.46 MB | 1 年前3ServiceComb 的前世今生
跟踪 … 运行模型 还远远不止这些… 部署/启 动 日志/监 控 告警 诊断 治理/配 置 扩容 缩容 回滚 停止/卸 载 微服务运维生命周期 管理 创建 编码 编译 构建 部署 测试 验收 发布 删除 微服务开发生命周期 管理 从软件到服务 微服务治理 微服务治理 微服务部署平台(PaaS) 微服务开发 微服务基础治理 微服务高级治理 服 务 发 现 服 务 配 置 服 务 路 由 多 通 信 访 问 调 用 链 跟 踪 多 事 务 管 理 多 运 行 时 管 理 ServiceMesh 容 错 & 熔 断 限 流 降 级 服 务 隔 离 容 安 全 工具链生态 契约开发 工具 代码自动 生成 文档自动 生成 自动测试 工具 本地远程 调试 微服务 流水线 资源管理 容器编排 & 调 度 应用管理 弹性伸缩 灰度发布 监控运维APM Go语言 XXX语言 Java语言 服务契约 & OpenAPI SpringMVC JAX-RS RPC编程0 码力 | 16 页 | 1.45 MB | 1 年前3康彬-基于微服务的混合云和同城双活实践
大促的痛 机器准备周期长,紧急 情况无法应对 大促后机器闲置率高,资 源浪费巨大 混合云需求分析 机器资源按需 申请 01 接入层按url调 度流量 02 服务层set化的 路由策略 03 数据层读请求 上云,写请求 回自建idc 04 流量大户上云,顶住流量洪峰 机器器资源按需分配 接入层URL粒度流量调度 LB DNS app/browser Nginx-Proxy0 码力 | 47 页 | 6.09 MB | 1 年前3微服务架构及ServiceComb实践
[Github ] https://github.com/apache?q=servicecomb 微服务的其他组件 • 配置中心 a) 集中配置 b) 动态配置 c) 配置历史保留 d) 配置回滚 社区召集! e) 灰度发布配置 社区召集! • 认证鉴权 a) 认证 b) 鉴权 • Toolkit a) 契约 b) 脚手架 • 分布式日志 https://github.com/apache q=servicecomb Thank You. 欢迎关注 微服务蜂巢公众号 获取更多微服务技术干货、资讯文章 欢迎添加 ServiceComb小助手 加入微服务技术交流群,架构、设计、开 发、解BUG、调优,总有您感兴趣的话题0 码力 | 14 页 | 2.04 MB | 1 年前3ServiceComb介绍
Service Center • 基于Etcd⾼高性能,⾼高可⽤用服务注册中⼼心 • Saga • 微服务事务最终⼀一致性问题解决⽅方案 • 提供⼀一个集中式的事务协调器器,协调微服务之间的事务调⽤用,保证事务最终⼀一致性 https://github.com/apache?q=incubator-servicecomb ServiceComb Java Chassis的架构图 通信模型 Reactive Stream • ……. Process Event-Loop Process R R W W 线 程 池 分布式服务调⽤用追踪 • ⽀支持标准的分布式调⽤用追踪Zipkin V1,V2 • ⽀支持通过@span扩展⾃自定义调⽤用追踪 ServiceComb发展路路线图 http://www.aleanjourney.com/2016/05/5-steps-for Service Center Java Chassis 0.5.0 边缘服务 系统Metric 异步调⽤用API Saga 0.0.1 集中式Saga原型 Saga 0.0.2 Saga调⽤用⽀支持条件判断 2017年年6⽉月 2017年年8⽉月 2017年年10⽉月 2017年年9⽉月 2017年年12⽉月 ServiceComb 1.0.0-m2 新特性 • Java Chassis0 码力 | 16 页 | 877.58 KB | 1 年前3微服务的设计原则与⽣态系统 - 王磊
框 架 ⼯工 程 实 践 与 规 范 持 续 交 付 流 ⽔水 线 端 到 端 的 ⼯工 具 链 注册发现 监控 调⽤用链 路路由 授权认证 ⽇日志聚合 容错 集中配置 基础设施 业务层 - 聚合服务 - 基础服务 接⼊入层 • 流量量限制 • 调⽤用统计 • 安全认证 • 提供统⼀一接⼝口,封装内部变化 • 协议转换 API⽹网关 微服务⽣生态系统 API⽹网关/Edge 交付流⽔水线与⼯工程实践 CaaS/PaaS IaaS 微 服 务 开 发 框 架 ⼯工 程 实 践 与 规 范 持 续 交 付 流 ⽔水 线 端 到 端 的 ⼯工 具 链 注册发现 监控 调⽤用链 路路由 授权认证 ⽇日志聚合 熔断 集中配置 基础设施 接⼊入层 业务层 - 聚合服务 - 基础服务 • ⾯面向对象设计(名词/动词) • 可重⽤用的逻辑 • 资源密集型部分 交付流⽔水线与⼯工程实践 CaaS/PaaS IaaS 微 服 务 开 发 框 架 ⼯工 程 实 践 与 规 范 持 续 交 付 流 ⽔水 线 端 到 端 的 ⼯工 具 链 注册发现 监控 调⽤用链 路路由 授权认证 ⽇日志聚合 容错 集中配置 基础设施 接⼊入层 业务层 - 聚合服务 - 基础服务 注册发现 为什什么要注册发现 • 服务重启/升级后的IP地址变化0 码力 | 62 页 | 6.65 MB | 1 年前3ServiceComb java SDK详解
https://gitter.im/ServiceCombUsers/Lobby AGENDA • 设计演进及架构 • 服务发现 • 微服务调用 • Edge Service • Metrics • 性能调优 设计演进-初始 Transport RPC Servlet Rest Consumer 透明RPC RestTemplate Producer 透明RPC JAX-RS SpringMVC 以transport、调用结果两个维度进行分组,以operation为 单位输出tps、平均时延、最大时延、平均排队时间、最大排队 时间、业务逻辑平均执行时间、最大执行时间 TODO: cpu/mem/gc...... 性能调优 • 网络相关配置参数 – 系统参数比较保守,需要根据实际情况设置合适的参数 • Producer线程池 默认2个线程池,每个池中线程数等于cpu数 – 参考metrics统计结果 • cpu0 码力 | 21 页 | 1.15 MB | 1 年前3
共 16 条
- 1
- 2