Java Chassis通信处理详解 - 通信优化实践
通信优化实践 议题 问题不挑战 整体线程模型 Consumer Producer 问题不挑战 消费者 编程 模型 透明 RPC Spring MVC Transport Highway Vertx REST Servlet REST 生产者 编程 模型 透明 RPC JAX-RS Spring MVC RPC还是REST,传输方式决定编程模型 2. 丌同开发人员熟悉丌同的编程模型 3. RPC、REST的治理如何迚行 4. REST性能低 5. Reactive还是同步 ServiceComb的同步 仅仅是指编程模型上的同步,跟网络通信无关 因为所有场景下网络操作都是异步的 •Producer •Consumer 整体线程模型 Producer Consumer Highway client-原始单连接模型 Eventloop TcpClientConnecton 业务线程 …… 业务线程 Vertx Message Buffer Connection.send -> Socket.write(buf) Consumer Highway client-优化单连接模型 Eventloop TcpClientConnecton0 码力 | 17 页 | 2.22 MB | 1 年前3微服务架构与领域驱动设计 - 王磊
什什么是领域驱动设计 领域驱动设计 �8 领域驱动设计解决的两个核⼼心问题: 1.业务架构如何合理理的设计划分? 2.技术架构与业务架构保持⼀一致? 领域驱动设计是⼀一种设计⽅方法,围绕业务概念构建领域模型, 并通过分离技术实现的复杂性,从⽽而控制软件演化的复杂度。 Tacking Complexity in the heart of software �9 微服务架构与领域驱动设计? �10 微服务架构与领域驱动设计 • 能有效指导服务的设计与划分 基于领域驱动设 计,能有效识别 业务模型/业务上 下⽂文。从业务⻆角 度指导服务拆分。 微服务架构与DDD 01 领域驱动设计的核⼼心 02 基于事件⻛风暴暴的DDD实践 03 领域驱动设计的核⼼心 1.建⽴立统⼀一语⾔言 2.建⽴立领域模型 3.识别依赖关系 4.细分界限上下⽂文 将业务架构和系统架构对应起来,建⽴立针对业务变化的⾼高响应⼒力力架构 定义领域模型的应⽤用范围和其上下⽂文 Context Mapping - 上下⽂文映射 • 负责不不同上下⽂文之间的协作 • Shared Kernel • Anti-Corruption Layer Entity - 实体对象 • ⼀一个对象通过ID被唯⼀一标识 Value Object - 值对象 • 通过值确定对象的等价性 Domain Services - 业务逻辑 Aggregate0 码力 | 28 页 | 1.84 MB | 1 年前3微服务的设计原则与⽣态系统 - 王磊
Complexity • Performance • Testability 微服务架构的设计原则 • 竞争能⼒力力平衡 • 围绕业务构建 • “去”中⼼心化 • ⾃自动化“⼀一切” • 业务领域模型(Domain) • 通⽤用语⾔言(Ubiquitous language) • 界限上下⽂文(Bundle context) 围绕业务-构建团队 围绕业务-构建团队 VS 服务A 开发 注册发现 监控 调⽤用链 路路由 授权认证 ⽇日志聚合 熔断 集中配置 基础设施 接⼊入层 业务层 - 聚合服务 - 基础服务 • ⾯面向对象设计(名词/动词) • 可重⽤用的逻辑 • 资源密集型部分 • 领域驱动设计 • 数据访问⽅方式 服务设计与拆分 44 Node.js Java 基础服务实现 聚合服务实现 Proxy Chained Shared (OpenAPI) 通信模型 (序列列化、传输协 议) 编程模型 (同步、异步、 Reactive…) 服务发现 熔断 负载均衡 配置 跟踪 … 运⾏行行模型 编程模型 - 使⽤用OpenAPI的⽅方式定义契约 运⾏行行模型 - 服务发现/熔断/负载均衡/跟踪 通信模型 - ⾼高效的序列列化机制/传输协议0 码力 | 62 页 | 6.65 MB | 1 年前3庖丁解牛:华为云微服务工具解放开发者
事件源Event Sourcing • 命令查询责任分离CQRS 现有做法 业务改造 投入大 + 应用上云 + IaaS 应用微服务改造 + PaaS 业务创新 如AI 拆表 拆界面及业务逻辑 微服务化改造典型流程 挑战:强业务相关, 必须业务+微服务专 家介入,投入大、时 间长; 关键技术:应用微服 务化改造工具套件 根据sql、日志、代码实现微服务拆分,并修改相关代码。 Huawei Huawei Confidential 11 案例2:存量系统2微服务拆分分析-图搜索拆分微服务 从左到右分别是拆分出扩展属性服务、模型/模型实例服务、目录服务以及离散表独立成的服务,其中离散表中标红部分概念上应该划分到模型/模型实例服 务中,但实际的sql,却并未体现其和模型/模型实例的关联关系,因此被自动划分到独立服务中 Huawei Confidential 12 微服务架构下,API管控的挑战0 码力 | 14 页 | 1.54 MB | 1 年前3微服务创新新品发布
语言进行开 发部署 使能多微服 务技术栈开 发的微服务 应用之间协 同工作和共 同治理 使能满足第三 方认证被广泛 采纳的趋势下 认证鉴权的性 能和安全的要 求 帮助企业用 户达成业务 模型和数据 集成标准统 一 通过易于理 解的数据和 入口,管理 复杂的分布 式系统配置 分布式系统配置中心 服务中心异构通信 多语言运行环境 微服务鉴权 微服务契约工具 Apache ServiceComb 契约提取 代码生成 文档制作 契约校验 ServiceComb SpringCloud …… ServiceComb toolkit 划分微服务 (含依赖关系) 定义契约 (接口和模型) 发布契约 ServiceComb 契约开发工具 开发微服务 测试微服务 客户+集成商 软件开发商 部署微服务 契约仓库 微服务 运行环 境 验收微服务 协同企业遗留系统微服务化 提供契约、代码、文档相互转换和校验的能力,帮助用户快速构建基于流行微服务框架和编程模型 的微服务工程,降低微服务学习成本,使能用户聚焦业务开发,提升遗留系统重构、开发效率。 • 契约生成微服务工程:一键生成基于ServiceComb/SpringCloud的微服务工程。 • 代码提取契约:一键从基于SpringMVC/POJO/JAX-RS编程模型开发代码提取OpenAPI契约。 • 契约校验:一键校验实际代码的实现是否与约定契约一致性。0 码力 | 12 页 | 2.96 MB | 1 年前3Apache ServiceComb 微服务创新项目解读
语言进行开 发部署 使能多微服 务技术栈开 发的微服务 应用之间协 同工作和共 同治理 使能满足第三 方认证被广泛 采纳的趋势下 认证鉴权的性 能和安全的要 求 帮助企业用 户达成业务 模型和数据 集成标准统 一 通过易于理 解的数据和 入口,管理 复杂的分布 式系统配置 多语言运行环境 服务中心异构通信 微服务鉴权 分布式系统配置中心 微服务契约工具 Apache ServiceComb Toolkit Toolkit - 遵循OpenAPI的微服务开发、改造工具 提供遵循OpenAPI规范的API、代码、文档相互转换和校 验的能力,帮助用户快速构建基于流行微服务框架和编程 模型的微服务脚手架工程,提升遗留系统重构、开发效率 • 项目地址 https://github.com/apache/servicecomb-toolkit • 开发计划 - 支持API生成Spring toolkit 划分微服务 (含依赖关系) 定义契约 (接口和模型) 发布契约 ServiceComb 契约开发工具 开发微服务 测试微服务 客户+集成商 软件提供商 部署微服务 契约仓库 微服务 运行环 境 验收微服务 协同实现基于契约(API)的数据、服务标准化管控 划分微服务 (含依赖关系) 定义契约 (接口和模型) 发布契约 微服务 运行环 境 验收微服务 基于OpenAPI规范0 码力 | 13 页 | 1.24 MB | 1 年前3ServiceComb 的前世今生
Go 服务 契约 生成工具 框架 代码 框架 代码 框架 代码 接口 文档 接口 文档 接口 文档 生成 生成 • 面向契约而不是逻辑 • 解耦服务提供者和消费者的开发顺序 • 契约定义为语言中立 • 规范化系统接口,让实现与文档的同 步成为必须 • 通过工具简化整个过程 API First 增速微服务开发 ServiceComb 开发框架 通信模型 (序列化、传输协 议) 编程模型 (同步、异步、 Reactive…) 服务契约 (OpenAPI) 服务发现 熔断 负载均衡 配置 跟踪 … 运行模型 还远远不止这些… 部署/启 动 日志/监0 码力 | 16 页 | 1.45 MB | 1 年前3张波-虎牙直播在微服务改造中的实践
connection and so on.), i.e: S3 if group is MySQL 5.7: find all slave on S1:S3 change master to M1 done 切换逻辑 名字服务在负载均衡场景的落地 xxx.huya.com 华南IDC 华中IDC 华北IDC Nginx Nginx Nginx Web server 专线 背景 负载均衡变更需要更新配置发布后 30s内 故障屏蔽实效 之前10分钟 1分钟内 为什么选择Nacos 对比项目\注册中心 Spring Cloud Nacos Spring Cloud Eureka CAP模型 支持AP和CP模型 AP模型 客户端更新服务信息 使用注册+DNS-f+健康检查模式。 DNS-F客户 端使用监听模式push/pull拉取更新信息 客户端定时轮询服务端获取其他服务ip信息并对 比,相比之下服务端压力较大、延迟较大0 码力 | 27 页 | 1.03 MB | 1 年前3《Saga分布式事务解决⽅案与实践》演讲者/姜宁
ral/2018/03/22/microxchg-sagas.html 如何应对隔离性问题 • 隔离的本质是控制并发,防⽌止并发事务操作相同资源⽽而引起结果错乱 • 在应⽤用层⾯面加⼊入逻辑锁的逻辑。 • Session层⾯面隔离来保证串串⾏行行化操作。 • 业务层⾯面采⽤用预先冻结资⾦金金的⽅方式隔离此部分资⾦金金。 • 业务操作过程中通过及时读取当前状态的⽅方式获取更更新。 TaskConsumer request graph events SagaTask SagaRequest Compensation Transaction 集中式Saga – 基于Actor模型 requests { T1:[a,b], C1:[c,d], ... } Caller 1 2 3 Saga Log Saga Started T1 Started T10 码力 | 33 页 | 2.38 MB | 1 年前3《Saga分布式事务解决⽅案与实践》演讲者/姜宁
ral/2018/03/22/microxchg-sagas.html 如何应对隔离性问题 • 隔离的本质是控制并发,防⽌止并发事务操作相同资源⽽而引起结果错乱 • 在应⽤用层⾯面加⼊入逻辑锁的逻辑。 • Session层⾯面隔离来保证串串⾏行行化操作。 • 业务层⾯面采⽤用预先冻结资⾦金金的⽅方式隔离此部分资⾦金金。 • 业务操作过程中通过及时读取当前状态的⽅方式获取更更新。 TaskConsumer request graph events SagaTask SagaRequest Compensation Transaction 集中式Saga – 基于Actor模型 requests { T1:[a,b], C1:[c,d], ... } Caller 1 2 3 Saga Log Saga Started T1 Started T10 码力 | 39 页 | 2.78 MB | 1 年前3
共 33 条
- 1
- 2
- 3
- 4