NTTDATA 汽车行业数字营销平台微服务化实践
时调整业务模式快速配置,以最低成本适应弹性的数据需求。 • 主机厂/经销商、线上/线下线索管 理集中化 • 线索/会员/车主服务集中化 • 数据集中化 集中化 • 用户体验能力标准化 • 外部接口标准化 • 营销能力标准化、营销形式个性化 标准化 • 线索清洗评分智能化、智能分流 • 自动化个性精准营销 • 自动化投放追踪 • 营销内容自动分发 • 智能客服 智能化 • 移动端优先、用户体验优先 客户和线索 数据库 工单 数据库 系统管理 数据库 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庖丁解牛:华为云微服务工具解放开发者
Confidential 8 微服务拆分工具 单体应用 单体数据库 微服务数据库 A库 B库 服务A 服务B 步骤1:通过SQL的关联程 度、使用次数等,识别出 相关性最高的表划分成一 个微服务 微服务数据库 A库 B库 服务A 服务B 步骤2:通过表结构调整, 将不同的数据库进行解耦, 防止一个微服务跨库访问 (反范式、服务重构等) 微服务数据库 A库 B库 服务A 服务B 步骤3:大表水平拆分,实 2 8 20 2 2 22 5 2 4 4 3 6 6 39 5 5 2 2 2 2 2 4 从左到右分别是拆分出来的商品库、模板库,最后一些离散表是系统为了关联外部系统而引入的表,独立成库 Huawei Confidential 11 案例2:存量系统2微服务拆分分析-图搜索拆分微服务 从左到右分别是拆分出扩展属性服务、模型/模型实例服务、目录服务以及离0 码力 | 14 页 | 1.54 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 年前3Metrics in ServiceComb Java Chassis 1.0.0-m1 让微服务运行状态清晰可见
Saga 0.0.2 Saga调用支持条件判断 2017年6月 2017年8月 2017年10月 2017年9月 2017年12月 开发者基本都是华为员工, 邮件列表活跃度 每月10 封, 外部用户 2 家 16 github.com/apache?q=servicecomb servicecomb.apache.org Service Center Java Chassis 1 0 支持K8s部署 支持ServiceMesher 服务实例Cache优化支 持黑白名单 Service Center Java Chassis 1.0.0-m1 支持Dev开发模式 集成外部配置中心 Metrics 监控支持 异步编程模型支持 ZipkinV2版本支持 Service Center Java Chassis 1.0.0-m2 提升etcd弹性伸缩 边缘服务网关优化 2018年3月 2018年8月 2018年6月 2018年10月 ServiceComb(Apache之旅) Saga 0.2.0 Spring Boot 2.x 支持 外部长期贡献者10 + , 邮件列表活跃度 每月180 封, 外部用户 20家 2018年12月 2019年4月 Pack 0.4.0 Alpha Cluster支持 Omega动态获取Alpha信息 完善TCC支持 Service0 码力 | 18 页 | 3.12 MB | 1 年前3微服务架构与领域驱动设计 - 王磊
⼀一个对象通过ID被唯⼀一标识 Value Object - 值对象 • 通过值确定对象的等价性 Domain Services - 业务逻辑 Aggregate - 聚合(根) • ⼀一组实体对象和值对象的集合 • 外部对聚合的访问通过聚合根 Factories - 对象⼯工⼚厂 Repository - 存储机制 Tactical-战术建模 领域驱动设计的架构 �16 Domain Model • • 将命令写在蓝⾊色即时贴上 • 将命令贴在所产⽣生的事件旁边 • 有的命令可能产⽣生多个事件 • 识别出触发命令的外部系统和⻆角⾊色 注意要点: • ⽤用户从UI界⾯面进⾏行行的操作 • 外部系统触发 • 定时任务 什什么是命令? • 命令代表了了外部系统或者⽤用户触发的动作、以及内部的定时⾏行行为 业务流梳理理 寻找事件 寻找命令 寻找聚合 划分⼦子域&界限上下⽂文 统⼀一语⾔言0 码力 | 28 页 | 1.84 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华为云分布式事务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 年前3ServiceComb 微服务框架
是一个微服务数据一致性解决方案。 ServiceComb的开放性设计 •Provider与Consumer具有完全 一致的开发体验 •通信模型与编程模型隔离,适 应不同业务场景需求 •运行模型支持灵活扩展,便于 对接外部系统 特性介绍: Service Center • 服务注册/服务发现 • 微服务元数据与依赖管理0 码力 | 11 页 | 668.81 KB | 1 年前3
共 20 条
- 1
- 2