庖丁解牛:华为云微服务工具解放开发者
Confidential 8 微服务拆分工具 单体应用 单体数据库 微服务数据库 A库 B库 服务A 服务B 步骤1:通过SQL的关联程 度、使用次数等,识别出 相关性最高的表划分成一 个微服务 微服务数据库 A库 B库 服务A 服务B 步骤2:通过表结构调整, 将不同的数据库进行解耦, 防止一个微服务跨库访问 (反范式、服务重构等) 微服务数据库 A库 B库 服务A 服务B 步骤3:大表水平拆分,实 algorithm (greedy/clustering/…) output 数据拆分 建议文件 解析代码,搜集sql语句 开发时预处理:通过 Antlr4工具生成java可识 别的解析规则的对象, 埋入源码 生成sql语句集(Mysql 或其他DB的方言) mysql/oracle 的规则文件 生成表关联关系list 计算权重,生成图 输出权重图, 选择、调用 指定算法 贪婪/谱聚类算法0 码力 | 14 页 | 1.54 MB | 1 年前3Metrics in ServiceComb 1.0.0-m1
• Metrics应该具备的特性: • Comparative(可对比):指标能够在不同的微服务或同一个微服务的多 个实例之间比较; • Understandable(易理解):指标所衡量的对象、计算方法和输出的结果 值都是容易理解的; • Ratio(理想的比例):理想结果可预见,可以立即用于比较。 最常见的Metrics • 衡量Metrics实现 优劣的标准: _ metrics_producer_executionTime_total 0.0 • 经过权衡,我们最后决定发挥ServiceComb契约的优势,直接返回 RegistryMetric实体对象 使用固定统计周期 劣势: • 由于是预设,很有可能与查询(抓取)间隔不同。例如你设置了统 计间隔为15秒,但是使用Prometheus作为监控系统设置抓去间隔为 5秒,那么Prome 使用多周期适应不同的场景需求 支持Health Check • 通过Health Check让微服务支 持检查依赖组件的状态并返 回,可以用于制定策略,也 可以用于Dashboard展现 • 微服务很可能依赖数据库、其 它微服务或中间件,这些组件 状态正常是微服务能够正常提 供服务的前提; • 相比Metrics返回一个状态值, Health Check的返回更丰富, 可以附带额外信息,例如详细 的错误Trace。0 码力 | 18 页 | 938.89 KB | 1 年前3微服务的设计原则与⽣态系统 - 王磊
康威定律律:组织产⽣生的设计成果等同于组织内的协作结构 微服务架构的设计原则 • 竞争能⼒力力平衡 • 围绕业务构建 • “去”中⼼心化 • ⾃自动化“⼀一切” 去“中⼼心化” - ⽤用合适的技术解决问题 数据库作为集成点 去“中⼼心化” - 业务持有数据 ⽤用户会话 Redis 会话服务 上下⽂文 购物⻋车 购物⻋车 产品数据 Mongo 产品服务 上下⽂文 上下⽂文 Redis 端 到 端 的 ⼯工 具 链 注册发现 监控 调⽤用链 路路由 授权认证 ⽇日志聚合 熔断 集中配置 基础设施 接⼊入层 业务层 - 聚合服务 - 基础服务 • ⾯面向对象设计(名词/动词) • 可重⽤用的逻辑 • 资源密集型部分 • 领域驱动设计 • 数据访问⽅方式 服务设计与拆分 44 Node.js Java 基础服务实现 聚合服务实现 Proxy0 码力 | 62 页 | 6.65 MB | 1 年前3NTTDATA 汽车行业数字营销平台微服务化实践
客户和线索 数据库 工单 数据库 系统管理 数据库 CCC + 客服 数据库 更多新业务 服务实例 #N (SpringBoot + 华 为云CSE) UAT和PROD使用CSE企业版; 本地开发和SIT使用本地轻量级CSE服务 服务中心 (>Eureka) 配置中心 (etcd增强) 治理中心 (Hystrix+Rib bon增强) 新业务 数据库 华为云CSE介绍 X-API_KEY HTTPS/HTTP 服务注册 数据库 API调用 (ACCESS_TO KEN) 9 github.com/apache?q=servicecomb servicecomb.apache.org 微服务化数据逻辑设计CRM接口库. 接口数据库 <营销活动工具> 营销活动工具 数据库 CRM ETL Server (kettle) CRM业务库 0 码力 | 11 页 | 2.25 MB | 1 年前3微服务场景下的数据一致性解决方案 - 殷湘
•断 方案选择建议 离 数据一致性的起因 单体应用 • 单体应用由于所有模块(A/B/C)使用同一个数据库 • 数据一致性通过数据库事务保证 A B C commit rollback 微服务场景 MySQL MongoDB Cassandra 数据一致性无法完全通过数据库保证 离 独立进程 独立部署 独立技术 独立团队 合 数据一致性的解决方案 T1 T2 T3 C2 car rental saga T T' time 断 一致性方案的选择建议 ? ??? ???? ? ?? ? ? ? ?? 一致性方案的选择建议 • 微服务内:聚合通过数据库事务保证强一致 内刚 • 微服务间:最终一致 外柔 微服务架构与领域驱动设计 • if our service boundaries align to the bounded contexts 聚合内:强一致 跨聚合:最终一致 聚合边界:强一致边界 一致性方案选择建议 • 微服务:限界上下文 • 聚合边界:强一致边界 • 限界上下文 -> 1 .. N 聚合 微服务内:聚合通过数据库事务保证强一致 微服务间:最终一致 如果需要分布式强一致,先考虑设计是否合理而非追求最新技术 合理的设计能大大减少技术复杂度和商业成本 总结 • 起因:离 • 方案:Saga 222 • 选择建议:内刚0 码力 | 31 页 | 4.28 MB | 1 年前3张波-虎牙直播在微服务改造中的实践
应用层探活 数据库故障 恢复时间长 服务故障牵 引慢,流量 接入生效时 间长 DNS生效慢 内部服务无 就近接入能 力 服务性能下 降流量不摘 除 实 例 切 换 能 力 秒 级 流 量 牵 引 能 力 D N S 就 近 接 入 能 力 异 常 摘 除 能 力 dmx dns-f app nacos M S write read DNS-F在数据库场景的落地 背景 背景 在数据库服务切换时效率低,依赖 业务方修改配置,时效不确定,通 常需要10分钟以上; 目标 数据库切换秒级生效; 技术特点-DNS-F M S S S M1.mysql S1.mysql S2.mysql S3.mysql if M1 down and M1 is master: choose newest slave: S1 or S2, compare slave IO/SQL 分布式高可用最小集群数量 Config2+Admin3+Portal*2+Mysql =8 Nacos*3+MySql=4 配置格式校验 支持 支持 通信协议 HTTP HTTP 数据一致性 数据库模拟消息队列,Apollo定时 读消息 HTTP异步通知 单机读(tps) 9000 15000 单机写(tps) 1100 1800 技术选型 • Dubbo生态产品, Nacos源于阿里内部服务的开源实现;0 码力 | 27 页 | 1.03 MB | 1 年前3微服务架构与领域驱动设计 - 王磊
Anti-Corruption Layer Entity - 实体对象 • ⼀一个对象通过ID被唯⼀一标识 Value Object - 值对象 • 通过值确定对象的等价性 Domain Services - 业务逻辑 Aggregate - 聚合(根) • ⼀一组实体对象和值对象的集合 • 外部对聚合的访问通过聚合根 Factories - 对象⼯工⼚厂 Repository - 存储机制 Tactical-战术建模 利利⽤用聚合定义进⾏行行确认 • 识别出分布在时间轴不不同位置的同⼀一个聚合 • 对聚合使⽤用⼤大的⻩黄⾊色即时贴进⾏行行标记 什什么是聚合? 聚合是⼀一组相关领域对象的集合。 • 聚合内相关对象保证数据⼀一致性 • 只能通过聚合根修改边界内的对象 • 聚合根有唯⼀一的全局标识 业务流梳理理 寻找事件 寻找命令 寻找聚合 划分⼦子域&界限上下⽂文 统⼀一语⾔言 ① ② ③ ④ ⑤ ⑥0 码力 | 28 页 | 1.84 MB | 1 年前3华为云分布式事务DTM最佳实践
DTM-Client (参与者) Service B DTM-Server 配置中心 运维中心 Database A DTM-Client (参与者) Database A 业务数据库A 业务数据库B 事务数据库 用户侧 系统侧 管理面 数据面 TCC实现 TCC实现 8 github.com/apache?q=servicecomb servicecomb.apache.org0 码力 | 15 页 | 3.10 MB | 1 年前3微服务架构及ServiceComb实践
返回当前天气 数据库 API 任务 内容 getWeatherTask 从OpenWeatherMap定期 查询天气数据 定时任务 [社区网站] http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb 最简单的微服务 – 微服务的基本组件 组件 • 1个服务(应用+数据库) • 服务注册中心 http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb 服务间的通信 背景:为什么服务间通信重要? • 每个微服务有自己的数据库(层) • 服务架构应用的质量很大程度取决于服务的拆分的高内聚,低耦合,不了解服务间通信,无法做出高质量的拆分。 不同的业务,涉及的不同的服务间通信有不同的要求 1. 关注事务性要求(ACID)0 码力 | 14 页 | 2.04 MB | 1 年前3使用微服务架构快速开发万级TPS高可用电商系统
房资格的对应信息(验资,诚意金等) id, customer_id, sale_id, comments 1…..* 接口 内容 customers CRUD qualifications CRUD 数据库 API git clone https://github.com/apache/servciecomb-samples cd servicecomb-samples/houserush/script/docker http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb 最简单的微服务 组件 • 1个服务(应用+数据库) • 服务注册中心 a) https://github.com/apache/servicecomb-center 服务注册中心 b) 核心服务注册表 |---服务名---|---服务实例UI http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb 服务间的通信 背景:为什么服务间通信重要? • 每个微服务有自己的数据库(层) • 服务架构应用的质量很大程度取决于服务的拆分的高内聚,低耦合,不了解服务间通信,无法做出高质量的拆分。 不同的业务,涉及的不同的服务间通信有不同的要求 1. 关注事务性要求(ACID)0 码力 | 15 页 | 1.46 MB | 1 年前3
共 19 条
- 1
- 2