Java Chassis通信处理详解 - 通信优化实践
Java Chassis通信处理详解 通信优化实践 议题 问题不挑战 整体线程模型 Consumer Producer 问题不挑战 消费者 编程 模型 透明 RPC Spring MVC Transport Highway Vertx REST Servlet REST 生产者 编程 模型 透明 业务线程 Vertx Message Buffer Connection.send -> Socket.write(buf) Consumer Highway client-优化单连接模型 Eventloop TcpClientConnecton 业务线程 …… 业务线程 Vertx Message Buffer CAS Message Queue Socket.write(composite buffer) TPS Latency(ms) CPU Consumer Producer 优化前 81986 1.22 290% 290% 优化后 145369 0.688 270% 270% Connection.send Consumer Highway client-多连接模型 Eventloop0 码力 | 17 页 | 2.22 MB | 1 年前3庖丁解牛:华为云微服务工具解放开发者
庖丁解牛:华为云微服务工具解放开发者 部门:应用平台服务 作者:王启军 日期:20190920 Security Level: 目录 1. 微服务拆分工具 2. 契约管理工具 Huawei Confidential 3 微服务架构的优势 因素 单体架构 微服务架构 交付速度 较慢 较快 故障隔离范围 线程级 进程级 整体可用性 较低 更高 架构持续演进 困难 简单 沟通效率 产品创新复杂度 困难 容易 一致性实现成本 低 高 时延 低 高 资源成本 低 高 关联查询复杂度 简单 复杂 远程调用 不涉及 涉及 服务治理 不涉及 涉及 对开发人员的要求 低 高 对工具的依赖 较低 较高 运维复杂度 低 高 Huawei Confidential 4 微服务架构的第一大问题——如何拆分微服务? •影响因素 >团队大小 >交付周期 >业务方向 >故障范围 >现有数据规模 >服务数量爆炸,运维复杂 >服务数量太少,不够灵活 >一个user story影响众多服务 >接口频繁变更 >大量关联查询 >系统架构复杂度提升 Huawei Confidential 6 通过微服务拆分工具解放开发者 支撑活动 方法论 • ThoughtWorks五步十一阶 • DDD聚合 • 事件源Event Sourcing • 命令查询责任分离CQRS 现有做法 业务改造 投入大0 码力 | 14 页 | 1.54 MB | 1 年前3NTTDATA 汽车行业数字营销平台微服务化实践
布全渠道 内容及数字资产,形成企业数字资产沉淀,统一企业对外形象 及标准化化运营 活动数据,消费者数据,媒体 数据,车联网数据等,全渠道 数据收集追踪,建立数据分析 模型,辅助业务的决策优化 大数据分析 及应用 线上数字化布局 线下数字化布局 车联网及线下店端消费者旅程与线上消费 者旅程相结合,设计多种跨渠道跨屏互动, 引导进店消费者通过扫码,配车,留资等 行为整合线上数据 打造集中化、标准化、智能化、便利化的汽车品牌数字营销平台 支持数字营销快速、多样、变化的业务场景,避免系统分散重复,将技术投资回报最大化。 以智能化,可持续发展思路,打造车企C2B2C用户体验优化闭环。 可配置适应业务生长,帮助企业更快速、灵活地应对不断变化的市场需求,随时调整业务模式快速配置,以最低成本适应弹性的数据需求。 • 主机厂/经销商、线上/线下线索管 理集中化 • 线索/会员/车主服务集中化 内容管理 活动管理 …… 线索管理 客户管理 渠道管理 活动工具管理 公众号矩阵管理 标签管理 个性化推荐引擎 工单管理 线索管理 销售助手 权限管理 客服 中台 电话客服 在线客服 业务 分析 主数据管理 …… 用户行为分析 销售转化分析 活动分析 客服分析 …… 业务智能核心,C2B2C闭环持续优化 第三方 媒体 邮件 车联网 微博 渠 道 数据沉淀-分析-驱动0 码力 | 11 页 | 2.25 MB | 1 年前3ServiceComb在华为消费者云的亿级用户微服务实践
API描述:无论Rest API,或者RPC Highway API,统一使用Swagger YAML定义API 微服务代码生成:服务端和客户端都基于API定义,通过 ServiceComb提供的工具生成不同语言的类库,客户端可以不导入服务 端的类库定义,双方互相解耦 微服务接口测试:测试基于流水线的API定义生成自动化测试用例, 防止开发本地随意修改API 微服务API依赖关系:通过微服务流水线编译、打包和系统集成 极大的提升了消费者云业务研发效率 需求的研发和交付周期缩短,业务更敏捷应对变化 可独立交付和升级的服务越来越多,业务之间逐步解耦,可独立演进 服务之间的接口契约可视化、可度量和管控,架构看护和优化更有章可循 服务无状态,微服务数据自治,天生的弹性伸缩架构,高效支撑业务快速发展 提供微服务维度的监控大盘和细粒度的治理措施,运维更得心应手 个人级、微服务团队级、项目级三级微服务流水线体系,基础设施自动化0 码力 | 15 页 | 1.15 MB | 1 年前3使用微服务架构快速开发万级TPS高可用电商系统
更适合小团队(个人)开发管理 • 更容易实验和采纳新的技术。 强大: • 使大型的复杂应用程序可以持续的交付和持续的部署。 • 更容易测试 • 更容易对已有大型系统进行修改和扩展 • 容易进行的性能优化 • 更高的可用性 • 更容易的进行性能伸缩性 适合同学们学习 Demo也可以作为生产系统的一部分 [社区网站] http://servicecomb.apache.org [Github 背景:因为竞争的加剧,电商系统越来越复杂,无论电商系统的规模大小,微服务几乎是事实标准。 12306网站 15年 峰值 1032 单/s 11.7w PV 电商“抢购”“场景中企业中遇到的困难 1. 性能要求不断优化,和不能引入Bug之间的矛盾。 2. “变态”级别的高可用性要求。 3. 声誉和法律风险。 4. 抢购体验 à 商家的技术能力 à 产品质量。 [社区网站] http://servicecomb.apache [社区网站] http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb 步骤2 优化 先关注数据层的优化 1. 锁资格 - (锁库存-下订单) CP MySQL-MGR 高带宽 NvmeSSD-持久化配置 索引-加 锁 update-where 2. 库存缓存 AP Codis 30 码力 | 15 页 | 1.46 MB | 1 年前3Metrics in ServiceComb Java Chassis 1.0.0-m1 让微服务运行状态清晰可见
Center Java Chassis 0.2.0 加入Zuul支持, Spring Boot starter 服务中心优化 Service Center Java Chassis 0.3.0 Zipkin支持 支持自定义Span Sample示例优化 Service Center Java Chassis 0.4.0 服务中心升级 Service Center Java 支持ServiceMesher 服务实例Cache优化支 持黑白名单 Service Center Java Chassis 1.0.0-m1 支持Dev开发模式 集成外部配置中心 Metrics 监控支持 异步编程模型支持 ZipkinV2版本支持 Service Center Java Chassis 1.0.0-m2 提升etcd弹性伸缩 边缘服务网关优化 支持文件流上传下载 用户自定义访问日志 Center Java Chassis 1.0.0 正式稳定版本发布 自动生成脚手架工程 支持Http2协议 自定义ping机制 Saga 0.1.0 分布式Pack原型 Pack 0.3.0 优化后台性能 支持多种分布式协调机制 多语言框架Omega 2017年12月 2018年3月 2018年8月 2018年6月 2018年10月 ServiceComb(Apache之旅) Saga0 码力 | 18 页 | 3.12 MB | 1 年前3微服务架构及ServiceComb实践
更适合小团队(个人)开发管理 • 更容易实验和采纳新的技术。 强大: • 使大型的复杂应用程序可以持续的交付和持续的部署。 • 更容易测试 • 更容易对已有大型系统进行修改和扩展 • 容易进行的性能优化 • 更高的可用性 • 更容易的进行性能伸缩性 适合同学们学习 Demo也可以作为生产系统的一部分 [社区网站] http://servicecomb.apache.org [Github 背景:因为竞争的加剧,电商系统越来越复杂,无论电商系统的规模大小,微服务几乎是事实标准。 12306网站 15年 峰值 1032 单/s 11.7w PV 电商“抢购”“场景中企业中遇到的困难 1. 性能要求不断优化,和不能引入Bug之间的矛盾。 2. “变态”级别的高可用性要求。 3. 声誉和法律风险。 4. 抢购体验 商家的技术能力 产品质量。 [社区网站] http://servicecomb.apache [社区网站] http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb 步骤2 优化 先关注数据层的优化 1. 锁资格 - (锁库存-下订单) CP MySQL-MGR 高带宽 NvmeSSD-持久化配置 索引-加 锁 update-where 2. 库存缓存 AP Codis 30 码力 | 14 页 | 2.04 MB | 1 年前3ServiceComb介绍
Center Java Chassis 0.2.0 加⼊入Zuul⽀支持, Spring Boot starter 服务中⼼心优化 Service Center Java Chassis 0.3.0 Zipkin⽀支持 ⽀支持⾃自定义Span Sample示例例优化 Service Center Java Chassis 0.4.0 服务中⼼心升级 Service Center ServiceComb 1.0.0-m2 新特性 • Java Chassis • 全⾯面⽀支持⽂文件上传与下载 • 监控指标模块优化 • 提供优雅下线功能 • 提供Maven Archetype创建⼯工程代码 • Service Center • 前端UI与服务中⼼心整合 • 优化微服务实例例统计信息 • Saga 0.2.0 • ⽀支持Spring Boot 2, Java 9, Java 100 码力 | 16 页 | 877.58 KB | 1 年前3ServiceComb雄关漫道
Center Java Chassis 0.2.0 加入Zuul支持, Spring Boot starter 服务中心优化 Service Center Java Chassis 0.3.0 Zipkin支持 支持自定义Span Sample示例优化 Service Center Java Chassis 0.4.0 服务中心升级 Service Center Java 0-m1 新特性 • Java Chassis • 支持 CompletableFeature 异步调用接口 • 监控指标模块优化,支持与prometheus对接 • 支持通过携程的Apollo配置中心来动态配置实例 • Service Center • 优化Service Center性能,修复Bug • Saga 0.1.0 • 支持通过Annotation在应用代码事务 • Pa0 码力 | 20 页 | 4.00 MB | 1 年前3ServiceComb 的前世今生
生成工具 框架 代码 框架 代码 框架 代码 接口 文档 接口 文档 接口 文档 生成 生成 • 面向契约而不是逻辑 • 解耦服务提供者和消费者的开发顺序 • 契约定义为语言中立 • 规范化系统接口,让实现与文档的同 步成为必须 • 通过工具简化整个过程 API First 增速微服务开发 --- 工具支持 OpenAPI OpenAPI (Swagger) 定义 编辑器:在线编辑,语法提示, 错误检查 文档生成器:生成HTML与符合 华为规范文档 Mock生成器:生成Mock工具, 用于测试微服务 现有代码提取 OpenAPI工具 与RPC的IDL互 转工具 protobuf3 多语言多框架代 码生成器 多语言Protobuf3对象 编码库 Java 微服务编程框架 Go 框架 ServiceMesh 容 错 & 熔 断 限 流 降 级 服 务 隔 离 容 量 预 测 微 服 务 安 全 工具链生态 契约开发 工具 代码自动 生成 文档自动 生成 自动测试 工具 本地远程 调试 微服务 流水线 资源管理 容器编排 & 调 度 应用管理 弹性伸缩 灰度发布 监控运维APM Go语言0 码力 | 16 页 | 1.45 MB | 1 年前3
共 28 条
- 1
- 2
- 3