 NTTDATA 汽车行业数字营销平台微服务化实践时调整业务模式快速配置,以最低成本适应弹性的数据需求。 • 主机厂/经销商、线上/线下线索管 理集中化 • 线索/会员/车主服务集中化 • 数据集中化 集中化 • 用户体验能力标准化 • 外部接口标准化 • 营销能力标准化、营销形式个性化 标准化 • 线索清洗评分智能化、智能分流 • 自动化个性精准营销 • 自动化投放追踪 • 营销内容自动分发 • 智能客服 智能化 • 移动端优先、用户体验优先 客户和线索 数据库 工单 数据库 系统管理 数据库 CCC + 客服 数据库 更多新业务 服务实例 #N (SpringBoot + 华 为云CSE) UAT和PROD使用CSE企业版; 本地开发和SIT使用本地轻量级CSE服务 服务中心 (>Eureka) 配置中心 (etcd增强) 治理中心 (Hystrix+Rib bon增强) 新业务 数据库 华为云CSE介绍 服务注册 数据库 API调用 (ACCESS_TO KEN) 9 github.com/apache?q=servicecomb servicecomb.apache.org 微服务化数据逻辑设计 NTTDATA 汽车行业数字营销平台微服务化实践时调整业务模式快速配置,以最低成本适应弹性的数据需求。 • 主机厂/经销商、线上/线下线索管 理集中化 • 线索/会员/车主服务集中化 • 数据集中化 集中化 • 用户体验能力标准化 • 外部接口标准化 • 营销能力标准化、营销形式个性化 标准化 • 线索清洗评分智能化、智能分流 • 自动化个性精准营销 • 自动化投放追踪 • 营销内容自动分发 • 智能客服 智能化 • 移动端优先、用户体验优先 客户和线索 数据库 工单 数据库 系统管理 数据库 CCC + 客服 数据库 更多新业务 服务实例 #N (SpringBoot + 华 为云CSE) UAT和PROD使用CSE企业版; 本地开发和SIT使用本地轻量级CSE服务 服务中心 (>Eureka) 配置中心 (etcd增强) 治理中心 (Hystrix+Rib bon增强) 新业务 数据库 华为云CSE介绍 服务注册 数据库 API调用 (ACCESS_TO KEN) 9 github.com/apache?q=servicecomb servicecomb.apache.org 微服务化数据逻辑设计- CRM接口库. 接口数据库 <营销活动工具> 营销活动工具 数据库 CRM ETL Server (kettle) CRM业务库 1. 系统管理 CRM业务库 2 0 码力 | 11 页 | 2.25 MB | 1 年前3
 Metrics in ServiceComb Java Chassis 1.0.0-m1 让微服务运行状态清晰可见Apache孵化器 • 进入ASF孵化的步骤 – 提起孵化提案 – 寻找Champion 和Mentor – 发起投票 – 投票通过在孵化器建立项目 – 签署SGA, CLA, iCLA文件 – 代码库迁移,建立邮件列表, wiki,JIRA – 商标检索转移工作 – 清理代码,修改包名 – 按照ASF的要求准备第一个release 13 github.com/apache?q=servicecomb 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弹性伸缩 边缘服务网关优化0 码力 | 18 页 | 3.12 MB | 1 年前3 Metrics in ServiceComb Java Chassis 1.0.0-m1 让微服务运行状态清晰可见Apache孵化器 • 进入ASF孵化的步骤 – 提起孵化提案 – 寻找Champion 和Mentor – 发起投票 – 投票通过在孵化器建立项目 – 签署SGA, CLA, iCLA文件 – 代码库迁移,建立邮件列表, wiki,JIRA – 商标检索转移工作 – 清理代码,修改包名 – 按照ASF的要求准备第一个release 13 github.com/apache?q=servicecomb 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弹性伸缩 边缘服务网关优化0 码力 | 18 页 | 3.12 MB | 1 年前3
 庖丁解牛:华为云微服务工具解放开发者Step1:提取系统所有SQL Step2:逐条根据SQL创建语法树 Step3:在每棵语法树上分析表的关联关系并汇集 成表关联关系加权图 Step6:采用图切割算法并配合启发式规则将表分 割到不同库中 原则:低耦合,高内聚 耦合度:微服务划分后,微服务与微服务连接的边的权重之和 内聚度:微服务划分后,微服务内部表与表之间的边权重之和 采用图搜索算法划分微服务的启发式规则(规则可自定义): 8 微服务拆分工具 单体应用 单体数据库 微服务数据库 A库 B库 服务A 服务B 步骤1:通过SQL的关联程 度、使用次数等,识别出 相关性最高的表划分成一 个微服务 微服务数据库 A库 B库 服务A 服务B 步骤2:通过表结构调整, 将不同的数据库进行解耦, 防止一个微服务跨库访问 (反范式、服务重构等) 微服务数据库 A库 B库 服务A 服务B 步骤3:大表水平拆分,实 8 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 庖丁解牛:华为云微服务工具解放开发者Step1:提取系统所有SQL Step2:逐条根据SQL创建语法树 Step3:在每棵语法树上分析表的关联关系并汇集 成表关联关系加权图 Step6:采用图切割算法并配合启发式规则将表分 割到不同库中 原则:低耦合,高内聚 耦合度:微服务划分后,微服务与微服务连接的边的权重之和 内聚度:微服务划分后,微服务内部表与表之间的边权重之和 采用图搜索算法划分微服务的启发式规则(规则可自定义): 8 微服务拆分工具 单体应用 单体数据库 微服务数据库 A库 B库 服务A 服务B 步骤1:通过SQL的关联程 度、使用次数等,识别出 相关性最高的表划分成一 个微服务 微服务数据库 A库 B库 服务A 服务B 步骤2:通过表结构调整, 将不同的数据库进行解耦, 防止一个微服务跨库访问 (反范式、服务重构等) 微服务数据库 A库 B库 服务A 服务B 步骤3:大表水平拆分,实 8 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
 张波-虎牙直播在微服务改造中的实践虎牙基础保障部中间件团队负责人 2019.8.11 Service Mesh Meetup #6 广州站 微服务改造事项 DNS-F在数据 库场景的落地 名字服务在负 载均衡场景的 落地 DNS-F在微服 务场景的落地 应用层探活 数据库故障 恢复时间长 服务故障牵 引慢,流量 接入生效时 间长 DNS生效慢 内部服务无 就近接入能 力 服务性能下 降流量不摘 除 实 例 入 能 力 异 常 摘 除 能 力 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 分布式高可用最小集群数量 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 张波-虎牙直播在微服务改造中的实践虎牙基础保障部中间件团队负责人 2019.8.11 Service Mesh Meetup #6 广州站 微服务改造事项 DNS-F在数据 库场景的落地 名字服务在负 载均衡场景的 落地 DNS-F在微服 务场景的落地 应用层探活 数据库故障 恢复时间长 服务故障牵 引慢,流量 接入生效时 间长 DNS生效慢 内部服务无 就近接入能 力 服务性能下 降流量不摘 除 实 例 入 能 力 异 常 摘 除 能 力 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 分布式高可用最小集群数量 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
 微服务架构与领域驱动设计 - 王磊⼀一个对象通过ID被唯⼀一标识 Value Object - 值对象 • 通过值确定对象的等价性 Domain Services - 业务逻辑 Aggregate - 聚合(根) • ⼀一组实体对象和值对象的集合 • 外部对聚合的访问通过聚合根 Factories - 对象⼯工⼚厂 Repository - 存储机制 Tactical-战术建模 领域驱动设计的架构 �16 Domain Model • • 将命令写在蓝⾊色即时贴上 • 将命令贴在所产⽣生的事件旁边 • 有的命令可能产⽣生多个事件 • 识别出触发命令的外部系统和⻆角⾊色 注意要点: • ⽤用户从UI界⾯面进⾏行行的操作 • 外部系统触发 • 定时任务 什什么是命令? • 命令代表了了外部系统或者⽤用户触发的动作、以及内部的定时⾏行行为 业务流梳理理 寻找事件 寻找命令 寻找聚合 划分⼦子域&界限上下⽂文 统⼀一语⾔言0 码力 | 28 页 | 1.84 MB | 1 年前3 微服务架构与领域驱动设计 - 王磊⼀一个对象通过ID被唯⼀一标识 Value Object - 值对象 • 通过值确定对象的等价性 Domain Services - 业务逻辑 Aggregate - 聚合(根) • ⼀一组实体对象和值对象的集合 • 外部对聚合的访问通过聚合根 Factories - 对象⼯工⼚厂 Repository - 存储机制 Tactical-战术建模 领域驱动设计的架构 �16 Domain Model • • 将命令写在蓝⾊色即时贴上 • 将命令贴在所产⽣生的事件旁边 • 有的命令可能产⽣生多个事件 • 识别出触发命令的外部系统和⻆角⾊色 注意要点: • ⽤用户从UI界⾯面进⾏行行的操作 • 外部系统触发 • 定时任务 什什么是命令? • 命令代表了了外部系统或者⽤用户触发的动作、以及内部的定时⾏行行为 业务流梳理理 寻找事件 寻找命令 寻找聚合 划分⼦子域&界限上下⽂文 统⼀一语⾔言0 码力 | 28 页 | 1.84 MB | 1 年前3
 ServiceComb 微服务框架是一个微服务数据一致性解决方案。 ServiceComb的开放性设计 •Provider与Consumer具有完全 一致的开发体验 •通信模型与编程模型隔离,适 应不同业务场景需求 •运行模型支持灵活扩展,便于 对接外部系统 特性介绍: Service Center • 服务注册/服务发现 • 微服务元数据与依赖管理0 码力 | 11 页 | 668.81 KB | 1 年前3 ServiceComb 微服务框架是一个微服务数据一致性解决方案。 ServiceComb的开放性设计 •Provider与Consumer具有完全 一致的开发体验 •通信模型与编程模型隔离,适 应不同业务场景需求 •运行模型支持灵活扩展,便于 对接外部系统 特性介绍: Service Center • 服务注册/服务发现 • 微服务元数据与依赖管理0 码力 | 11 页 | 668.81 KB | 1 年前3
 微服务场景下的数据一致性解决方案 - 殷湘•断 方案选择建议 离 数据一致性的起因 单体应用 • 单体应用由于所有模块(A/B/C)使用同一个数据库 • 数据一致性通过数据库事务保证 A B C commit rollback 微服务场景 MySQL MongoDB Cassandra 数据一致性无法完全通过数据库保证 离 独立进程 独立部署 独立技术 独立团队 合 数据一致性的解决方案 T1 T2 T3 C2 C1 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 微服务场景下的数据一致性解决方案 - 殷湘•断 方案选择建议 离 数据一致性的起因 单体应用 • 单体应用由于所有模块(A/B/C)使用同一个数据库 • 数据一致性通过数据库事务保证 A B C commit rollback 微服务场景 MySQL MongoDB Cassandra 数据一致性无法完全通过数据库保证 离 独立进程 独立部署 独立技术 独立团队 合 数据一致性的解决方案 T1 T2 T3 C2 C1 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
 ServiceComb在华为消费者云的亿级用户微服务实践Motan LB 内置LB: 客户端负载均 衡 外置LB: Nginx、 Ribbon SLB 注册中心 配置服务:  Zookeeper  etcd 缓存方案:  Redis 数据库方案:  DB + MQ 服务治理 服务治理: 超时、流控、 降级等 运维KPI:  ELK  Zabbix 调用链:  zipkin 选择ServiceComb的原因: 实践- API Highway API,统一使用Swagger YAML定义API  微服务代码生成:服务端和客户端都基于API定义,通过 ServiceComb提供的工具生成不同语言的类库,客户端可以不导入服务 端的类库定义,双方互相解耦  微服务接口测试:测试基于流水线的API定义生成自动化测试用例, 防止开发本地随意修改API  微服务API依赖关系:通过微服务流水线编译、打包和系统集成 Gitter: https://gitter.im/ServiceCombUsers/Lobby 业务按需配置ServiceComb的类库依赖,基于standalone轻量级部署 开发态:按照业务实际需要配置ServiceComb的 maven 依赖,只加载需要的类库: 如果需要使用ServiceComb的流控再配置 如果需要使用私有RPC协议时才需要配置依赖 JVM Vert.X ServiceComb0 码力 | 15 页 | 1.15 MB | 1 年前3 ServiceComb在华为消费者云的亿级用户微服务实践Motan LB 内置LB: 客户端负载均 衡 外置LB: Nginx、 Ribbon SLB 注册中心 配置服务:  Zookeeper  etcd 缓存方案:  Redis 数据库方案:  DB + MQ 服务治理 服务治理: 超时、流控、 降级等 运维KPI:  ELK  Zabbix 调用链:  zipkin 选择ServiceComb的原因: 实践- API Highway API,统一使用Swagger YAML定义API  微服务代码生成:服务端和客户端都基于API定义,通过 ServiceComb提供的工具生成不同语言的类库,客户端可以不导入服务 端的类库定义,双方互相解耦  微服务接口测试:测试基于流水线的API定义生成自动化测试用例, 防止开发本地随意修改API  微服务API依赖关系:通过微服务流水线编译、打包和系统集成 Gitter: https://gitter.im/ServiceCombUsers/Lobby 业务按需配置ServiceComb的类库依赖,基于standalone轻量级部署 开发态:按照业务实际需要配置ServiceComb的 maven 依赖,只加载需要的类库: 如果需要使用ServiceComb的流控再配置 如果需要使用私有RPC协议时才需要配置依赖 JVM Vert.X ServiceComb0 码力 | 15 页 | 1.15 MB | 1 年前3
 微服务架构及ServiceComb实践返回当前天气 数据库 API 任务 内容 getWeatherTask 从OpenWeatherMap定期 查询天气数据 定时任务 [社区网站] http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb 最简单的微服务 – 微服务的基本组件 组件 • 1个服务(应用+数据库) • 服务注册中心 apache.org [Github ] https://github.com/apache?q=servicecomb 服务间的通信 背景:为什么服务间通信重要? • 每个微服务有自己的数据库(层) • 服务架构应用的质量很大程度取决于服务的拆分的高内聚,低耦合,不了解服务间通信,无法做出高质量的拆分。 不同的业务,涉及的不同的服务间通信有不同的要求 1. 关注事务性要求(ACID) Codis 3. 收藏数据 AP Codis 用户发请 求查库存 里列表 读缓存的 库存的列 表返回 用户对有库存 的房子发起下 单请求 再次查 询缓存 列表 锁定 资格 下单 (减库 存) 减 资 格 有库存 无库存 有资格 无 有库存 无 Codis MySQL-MGR 微服务层的优化 1. SeviceComb优异的异步通讯模型,REST over Vertx。0 码力 | 14 页 | 2.04 MB | 1 年前3 微服务架构及ServiceComb实践返回当前天气 数据库 API 任务 内容 getWeatherTask 从OpenWeatherMap定期 查询天气数据 定时任务 [社区网站] http://servicecomb.apache.org [Github ] https://github.com/apache?q=servicecomb 最简单的微服务 – 微服务的基本组件 组件 • 1个服务(应用+数据库) • 服务注册中心 apache.org [Github ] https://github.com/apache?q=servicecomb 服务间的通信 背景:为什么服务间通信重要? • 每个微服务有自己的数据库(层) • 服务架构应用的质量很大程度取决于服务的拆分的高内聚,低耦合,不了解服务间通信,无法做出高质量的拆分。 不同的业务,涉及的不同的服务间通信有不同的要求 1. 关注事务性要求(ACID) Codis 3. 收藏数据 AP Codis 用户发请 求查库存 里列表 读缓存的 库存的列 表返回 用户对有库存 的房子发起下 单请求 再次查 询缓存 列表 锁定 资格 下单 (减库 存) 减 资 格 有库存 无库存 有资格 无 有库存 无 Codis MySQL-MGR 微服务层的优化 1. SeviceComb优异的异步通讯模型,REST over Vertx。0 码力 | 14 页 | 2.04 MB | 1 年前3
 消费者云CSE微服务实践微服务框架技术选型-灵活和轻量级架构  当前业务服务端都是非Web应用,所以丌需要运行在Web容器中, 需要类似Main函数可以直接拉起来的Standalone模式  服务框架要足够轻量级,可以按需加载类库,防止不当前业务的 三方库发生冲突  启停速度要快(秒级弹性伸缩)、资源占用要合理 微服务框架技术选型-微服务安全  有些业务场景对微服务调用安全要求较高,需要微服务框架支持 SSL传输、API鉴权和认证等  无论Rest API,戒者RPC Highway API,统一使用Swagger YAML定义API  服务端和客户端都基于API定义,通过CSE提供的工具生成丌同语言的类库, 客户端可以丌导入服务端的类库定义,双方互相解耦  始终以在线的API定义为准,防止服务端私自修改接口代码(例如增减字段、 修改字段类型)  每日微服务流水线构建,及时发现接口丌兼容问题 CSE0 码力 | 22 页 | 1.39 MB | 1 年前3 消费者云CSE微服务实践微服务框架技术选型-灵活和轻量级架构  当前业务服务端都是非Web应用,所以丌需要运行在Web容器中, 需要类似Main函数可以直接拉起来的Standalone模式  服务框架要足够轻量级,可以按需加载类库,防止不当前业务的 三方库发生冲突  启停速度要快(秒级弹性伸缩)、资源占用要合理 微服务框架技术选型-微服务安全  有些业务场景对微服务调用安全要求较高,需要微服务框架支持 SSL传输、API鉴权和认证等  无论Rest API,戒者RPC Highway API,统一使用Swagger YAML定义API  服务端和客户端都基于API定义,通过CSE提供的工具生成丌同语言的类库, 客户端可以丌导入服务端的类库定义,双方互相解耦  始终以在线的API定义为准,防止服务端私自修改接口代码(例如增减字段、 修改字段类型)  每日微服务流水线构建,及时发现接口丌兼容问题 CSE0 码力 | 22 页 | 1.39 MB | 1 年前3
共 30 条
- 1
- 2
- 3













