领域驱动设计&中台/架构分层模型适配架构分层模型适配 吴雪峰@201811 — 有效防⽌止架构腐化实践 CONTENTS 01 DDD分层参考架构 02 严纪律律 防腐化 — 分层模型适配 03 分层模型适配实例例 DDD分层参考架构 DDD分层参考架构 给⽤用户提供界⾯面,关注⽤用户交互和体验 前端应⽤用 API服务 业务领域 基础设施 为前端应⽤用提供API服务,关注事务和分布式等技术性问题 领域模型和领域逻辑,关注业务概念。 事务管理理 • 认证 • 缓存 • ⽇日志 • 异常处理理 • 配置 • Session 技术⼈人员关注的层 腐化案例例: ⼤大量量业务逻辑堆积 模型: • View Object • Resource Model DDD分层参考架构 领域模型和领域逻辑,关注业务概念。 前端应⽤用 API服务 领域模型 基础设施 ⼲干系⼈人: 业务领域专家,业务领导 诉求: 表现业务概念和实现业务价值 表现业务概念和实现业务价值 要点: 业务建模和复杂性管理理 ⼯工作内容: • 建⽴立业务模型,并体现在代码上 • 管理理模型复杂度,适度拆分模块 • 实现业务逻辑 业务⼈人员关注的层 业务领域 腐化案例例: 亏空 ⼤大量量技术术语业务⼈人员完全看不不懂 模型: • 应⽤用服务 — 跨Bond Context DTO • 领域服务 — 跨聚合 • 聚合 实体 仓库0 码力 | 39 页 | 2.54 MB | 1 年前3
领域驱动设计&中台/演进式架构的平台化落地定义架构 约束条件 微服务架构设计 服务地图 设计 API设计 部署架构设计 微服务⼯工程创建 开发 框架 架构 ⻛风格 资源 配置 … 架构演进 服务 关系 分析 代码 质量量 分析 数据 库分 析 领域 模型 分析 运⾏行行资 源管理理 PaaS、 容器云资 源管理理 公共 部分 产品、⼈人 员维护 定义通⽤用 约束条件 定义服务 约束条件 推荐部署架构(远期规划) 微服务开发框架定制 代码架构⻛风格选择 资源配置 数据库版本管理理 是否⾃自动⽣生成API/ Dockerfile/流⽔水线 ⽣生成 代码 到GIT 仓库 架构分析- 从契约反向识别实现与模型差异 架构分析- 架构Fitness Function检查 代码质量量分析- 配置Sonar地址、展⽰示分析结果 数据结构分析- 测试环境的反向⼯工程可视化 测试环境的反向⼯工程可视化 数据结构分析- ⽣生产环境脚本导入可视化 领域模型- 基于代码守护的反向可视化 运⾏行行时部署架构可 视化 数据库 状态/版本显⽰示 创建系统 组建团队 我的系统 列列表 团队⼈人员⾓角⾊色 权限维护 外部系统维护 架构约束定 义维护 部署元素维护 代码引入ArchUnit/ log格式入⼿手 框架管理理 代码模版⽣生成 引擎 GIT插件通信0 码力 | 42 页 | 2.95 MB | 1 年前3
降级预案在同程艺龙的工程实践-王俊翔如 何实现的 • 缺乏UI、没有灵活的参数、策略略配置,没有预案制定管理理能⼒力力 业务保障平台建设之路路 业务保障平台建设之路路 服务管理理 策略略管理理 预案制定 线上演练 • 降级服务统⼀一注册管理理,通过降 级服务质量量数据从整体反映各应 ⽤用的降级点和可⽤用性保障措施 • 降级策略略集中管理理,通过参数 化、配置化、脚本化⽅方式实现线 上策略略的灵活调整 • 依据服务重要程度,从全局制定 规则表达式 熔断 降级 条件 计算 降级消息 数据 存储 实时告警 规则配置 开发 ⽇日志解析规则 控制中⼼心 ETCD 降级服务 降级处理理 流处理理集群(Flink) HBase ES Redis 落地存储 数据服务 数据平台 实时告警 告警策略略 指标查询 指标脚本开发 指标配置 产品化 开发 复合指标计算如何处理理 ServiceA ServiceB 策略略灵活调整,实时监控策略略运⾏行行状态 应⽤用 / 服务 降级代码管理理 • 线上代码开发、测试、发布 • 降级代码统⼀一管理理 • 脚本代码动态编译,对象管理理 业务保障平台应 SDK 线下开发 策略略配置 测试 发布 WEB IDE 线上开发 降级⽅方法使⽤用 Git 降级代码 线下代码管理理 脚本 降级服务如何⾃自动探测恢复 ⽅方法代理理 降级 正常流程 保护期窗⼝口 (10min)0 码力 | 26 页 | 18.67 MB | 1 年前3
声明式自愈系统——高可用分布式系统的设计之道-王昕设计和验证高可用分布式系统的工具与方法 Ø 设计和验证高可用分布式系统的案例分享 Ø 高可用系统的最佳实践总结 依据声明式自愈的理念设计系统 有一个统一的状 态持久化接口, 所有有状态模块 通过统一的接口 对应统一的对象 模型 配置模块对象只 需要包括 Desired State 每个领域的控 制器模块的逻 辑保证自己领 域独立自愈的 能力 改变状态的操作 必须是幂等的声 明式操作,没有 新声明时各模块 按照之前的声明 不可读写 目录 Ø 分布式系统面临的高可用问题 Ø 设计和验证高可用分布式系统的工具与方法 Ø 设计和验证高可用分布式系统的案例分享 Ø 高可用系统的最佳实践总结 一个分布式消息系统的概念模型 Producer X Topic A Queue A0 Queue A1 Server Group 0 Topic B Queue A2 Queue A0 Server Group Group 1 Producer Y Consumer A1 消费组A Consumer A2 Consumer B1 消费组B Consumer B2 Topic A 分布式消息系统的部署模型 Producer Discovery Service Cluster Consumer Consumer Consumer Producer Producer Server Group0 码力 | 44 页 | 2.47 MB | 1 年前3
唯品会调度系统的前世今生IP还支持消息模式) 统一配置、统一监控、统一管理 VIP弹性调度系统 -- Saturn 开源地址: Github.com/vipshop/Saturn 体系中的定位 服务化框OSP 开发框架Venus 唯品会基础架构体系 消息队列 VMS 全链路监控 Mercury 统一日志平台 dragonfly 任务调度平台 Saturn 统一配置中心 CfgCenter Salus 有女初张成 唯品会弹性调度系统的架构与功 能窥探 域 应用包 作业 执行节点 1 1 * 1 * * 创建 Binding 调度器 物理机 1 1 分片 1 * * 领域模型 Ready Running Stopping Stopped 启用 触发(手工, 时间或消息) 停用 执行完成 停用 执行完成 作业状态变迁 内部系统集成 ZK 执行结点 B 作业调度器 控制台UI 消息系统 控制、调度结果下发 作业控制 结点监听 作业调度 执行日志 监控日志 日志查询 消息订阅 告警信息 执行结果 统一认证 架构体系 部署模型(跨机房) IDC-A IDC-B 接入域-A 执行结点 作业实现 ZK saturn-zk-* saturn.vip.com 控制台集群 (Tomcat) ZK Observe0 码力 | 58 页 | 5.40 MB | 1 年前3
美团点评旅游推荐系统的演进•精确统计POI销量 •Deal -> POI •POI售卖数据不准 •客户端埋点 POI详情页 F_poiid DEAL详情页 F_poiid 下单页 F_poiid 用户画像 常驻 •模型 •LR:预测常驻城市与某维度城市相等的概率 •样本 •调查问卷 •特征 •注册城市 •注册手机号 •手机定位城市 •浏览城市 •消费城市:团购、电影、外卖 •接受短信手机号 用户历史行为强相关策略 Model h 线上工程 问题建模 •GBDT •非线性 •High Level特征多 •XGBoost •泰勒展开,利用了二阶导数信息 •对数据预排序,性能更高 •多模型融合 •GBDT模型+FFM模型 问题建模 •FFM •矩阵分解+回归 •Low Level特征多 •情景推荐 •发现特征关联关系 •用户画像 •上下文 •POI ID&属性 滑雪 age<25 46636 DISTANCE 0.651660 0.033357 0.948812 13447 662 0.950770 模型训练 •模型训练 •单机VS分布式 •目标函数:binary:logistic •过拟合VS欠拟合 •样本大小&树的棵数 •样本和特征随机采样 •模型复杂度:max_depth,min_child_weight •通用离线训练工具 •流程抽象化、组件化 •提供公共组件,支持定制组件0 码力 | 49 页 | 5.97 MB | 1 年前3
大规模分布式系统架构下调测能力构建之道无需修改应用代码,单元测试代码中也无需添加任何的mock语句。 服务 调用 Invoker … Remote Call 负载均衡 策略 Runtime Mock数据文件 远程服务 Mock配置 开关/策略… 路由 策略 … Mock过滤器 启 动 加 载 服务 调用 脚本引擎 Mock数据规范 格式规范: 1.静态匹配 2.动态匹配 3.多版本支持(服务版本) 管理规范: 线上数据 抓取过滤器 FilterN 抓取配置: 是否开启 抓取时长 抓取数量 落 盘 … … 导出 Mock文件A Mock文件B Mock文件C 应用服务直连调测 服务容器(Provider) 调用者 服务容器 提供者A 服务容器 服务注册中心 服务列表 …… 无需注册中心 不需要服务消费者注册,直接通过本地配置文件指定的IP地址来绕过“服务路由”及“负载均衡”机制。 服务提供者不能采用token验证模式 基于包名过滤服务 团队往往开发某类业务服务,这类服务一般都具有相同的包名,因此,可以通过配置包名和服务IP的映射关系, 让服务框架自动将一批服务和特定的IP关联到一起。 直连调测机制 提供者B 服务容器 提供者B 服务容器 本地配置文件 com.company.modelA.* 192.168.1.22 com.company.modelB.*0 码力 | 19 页 | 2.74 MB | 1 年前3
ServiceComb 开源微服务框架技术演进之路 巨震Config Center service Go chassis Registration & Discovery configuration SDK架构 编程模型 运行模型 通信模型 • Spring MVC • JAX-RS • POJO 服务发现 限流 熔断 负载均衡 跟踪 … OpenAPI • 序列化 • 传输协议 Service later • MutatingAdmissionWebhook开启 • Namespace, configmap, mutatingwebhookconfiguration访问权限 服务配置: • Pod Spec注解:sidecar.mesher.io/inject: "yes" • Namespace标签: kubectl label myns sidecar-injector=enabled Mesh生态,兼容 Istio,作为数据面代理运行 Mesher与ServiceCombSDK 治理互通,实现多语言支持 开放式微服务接口,支持接入开源 APM/Opentracing、动态配置生态 互通 互通 互通 SpringCloud Apollo 用户案例 PHP微服务应用 PHP微服务应用 Java微服务应用 Java微服务应用 ServiceComb0 码力 | 20 页 | 861.58 KB | 1 年前3
领域驱动设计&中台/可视化的遗留系统微服务改造•基础设施⾃自动化 •容错设计 •演进式设计 可视化能帮我们什什么 掌握系统业务 明确系统边界 ⼩小步改造系统 可视化的认识遗留留系统 C4模型、⽤用户画像、⽤用户旅程 C4模型系统架构可视化 国家级 省级 道路路级 市级 C4模型系统架构可视化 系统上 下⽂文图 容器器图 代码图 组件图 已可视化 ⽤用户画像和旅程系统功能⽤用户可视化 ⽤用户画像 ⽤用户旅程 已可视化 的⾏行行为放在别处。如 果你要修改某个服务 的⾏行行为,最好只在⼀一 处修改。 领域驱动设计 ‣领域驱动设计是⼀一种处理理⾼高度复杂域的设 计思想,试图分离技术实现的复杂性, 围 绕业务概念构建领域模型来控制业务的复 杂性,以解决软件难以理理解,难以演化等 问题。团队应⽤用它可以成功地开发复杂业 务软件系统,使系统在增⼤大时仍然保持敏敏 捷。 事件⻛风暴暴⼯工作坊 - Event St TW的很多团队实践验证后,于2015年年11⽉月进⼊入 ThoughtWorks技术雷雷达 ‣Powerful:可以让实践者在数⼩小时内理理解复杂的业务 模型 ‣Engaging:把带着问题的⼈人和拥有答案的⼈人共聚⼀一 堂构建模型 ‣Efficient:跟DDD的实现模型⾼高度⼀一致,并能快速发 现Aggregate和 Bounded Context ‣Easy:标记都很简单,没有复杂的UML ‣Fun0 码力 | 54 页 | 3.85 MB | 1 年前3
QCon北京2018-《美团配送系统架构演进实践》-阴永俊如何保证可用性 • 如何保证系统容量 • 如何提升计算能力 • 运营系统面临的问题 • 提升运营系统迭代效率 骑手网关 规模化阶段:核心领域细分 主数据平台 (核心模型) 账号权限 组织架构 核心数据模型 配送服务 配送运力 ⋯ 订单中心 (送什么) 品类 重量 支付状态 运单中心 (配送任务) 运单归属 配送状态 调度中心 (工程框架) 需求池 运力池 计算平台 HRM 移动办公 招募 IM 物料 薪资 培训 成长 快速起量,系统质量、研发效率问题凸显 合同 骑手网关 规模化阶段:核心领域细分 主数据平台 (核心模型) 账号权限 组织架构 核心数据模型 配送服务 配送运力 ⋯ 订单中心 (送什么) 品类 重量 支付状态 运单中心 (配送任务) 运单归属 配送状态 调度中心 (工程框架) 需求池 运力池 并行计算 快速起量,系统质量、研发效率问题凸显 合同 履约系统 • 如何解耦用户侧与骑手侧 • 调度系统如何设计 • 如何实现算法与工程结合 骑手网关 规模化阶段:核心领域细分 主数据平台 (核心模型) 账号权限 组织架构 核心数据模型 配送服务 配送运力 ⋯ 订单中心 (送什么) 品类 重量 支付状态 运单中心 (配送任务) 运单归属 配送状态 调度中心 (工程框架) 需求池 运力池 计算平台0 码力 | 31 页 | 15.26 MB | 1 年前3
共 26 条
- 1
- 2
- 3













