分布式异地多活架构实践之路kafka Web Web 专线/公网 容量合理规划 客户端 北京 50% 合肥 50% 广州 50% 1 1 2 冗余机器与其他系统复用,弹性伸缩 配套系统支撑 测试场景覆盖 灰度发布上线 机房流量调度 监控覆盖 故障模拟演练 数据恢复 配置平台 服务化平台 日常运维 大纲 • 产品发展中遇到的问题 • 异地多活存在哪些技术挑战 • 讯飞输入法解决方案 • 实际应用效果0 码力 | 36 页 | 1.66 MB | 1 年前3
微服务和Service Mesh 在多个行业落地实践(流量接入层) 路由 路由 插件 分流 流量 镜像 维护 开关 API 监控 认证 鉴权 治理 文档 报表 线上 系统B 预发 环境 新上 线服 务 99% 1% 灰度发布 A/B测试 流量镜像 测试预发 新上服务 定时开关 接口文档统一维护 文档与运行时一致 减少调用沟通成本 可自行定制:路由插件,可开发插件拦截请求,进行定制化 API网关负责流量接入0 码力 | 39 页 | 3.06 MB | 1 年前3
QCon北京2018-业务高速发展下的互联网金融系统架构演变-张现双+安全控制 拦截、校验 接口签名 加解密 防刷 攻击类 接口缓存 接口重写 热点活动支持 热点功能前置 接口版本控制 业务前置控制 Ng+ LUA 流量调度 降级 限流 灰度 接口分发 ??� FNS Fund 宜睿 P2P BASE Other … … 剥离到网关 部分功能前置 统一接口标准 措施:剥组件[深度定制网关] API接入 安全控制 拦截、校验 接口签名 加解密 防刷 攻击类 接口缓存 接口重写 热点活动支持 热点功能前置 接口版本控制 业务前置控制 Ng+ LUA 流量调度 降级 限流 灰度 接口分发 运营活动动态配置,接口重新编排 热点功能前置,网关分发许可限流,保护底层 接口req/resp重写,透明操作 全功能API配置,热加载 方案: nginx、0 码力 | 42 页 | 19.96 MB | 1 年前3
领域驱动设计&中台/如何让DDD落地如何把需求拆解成⽤用户故事,然后如何把⽤用户故事转变成领 域故事,最后领域故事⼜又如何变成为代码。 02 从需求到代码 京⻄西商城的需求 ‣ 产品运营⼈人员可以添加新的商品,编辑产品库存,并发布到京⻄西商城,⽤用户 可以进⾏行行购买; ‣ 京⻄西商城的买家可以查看产品可购买的库存数量量,并⽣生成购买订单,买家可 以撤单,查看订单的状态,对订单进⾏行行⽀支付(⽀支付宝)。⽀支付成功后,仓储 如果商品库存不不⽀支持订单数量量,返回出错结果和原因给订单API适配器器 3.创建订单服务收到命令后,会把创建订单命令转换成订单,然后调⽤用订单仓库进⾏行行 保存,保存成功后会让事件发布器器发布订单已创建事件 4.事件发布器器会根据事件类型把订单已创建事件转发给商品库存订阅者, 5.商品库存订阅者收到事件以后会根据事件中的商品ID和订单数量量创建锁定商品库存 命令,然后给锁定商品库存服务进⾏行行库存锁定 命令,然后给锁定商品库存服务进⾏行行库存锁定 6.锁定商品库存服务收到命令后,会把根据命令中的商品ID从商品库存仓库中获取商 品库存,然后根据让商品库存锁定订单数量量,之后调⽤用商品库存仓库进⾏行行保存,最后 让事件发布器器发布商品库存已锁定事件 ……. 领域故事中的主要对象 领域对象 类型 命名 订单API控制器器 Adapter OrderController 创建订单命令 Command CreateOrderCommand0 码力 | 32 页 | 3.25 MB | 1 年前3
刘道平-从0到1,移动政务应用小程序系统架构演化三、政务服务小程序平台研发过程 四、政务服务小程序平台架构演化 五、政务服务系统架构小结与思考 目录 1、当前政务移动应用APP发展情况 1、功能单一 大多政务服务APP功能单一,仍以政务信息发布为主,缺乏实用的网上办事和便民服务。 仅有15%的政务APP提供办事服务,存在“信息有余、服务不足”的问题。 2、下载APP成为负担 政务APP盲目开发泛滥,用户为了办事需要下载多个APP,成为一种负担。 限流保护已有系统、提升访问安全性 • 1.业务应用A 向网关申请接入,网关分配paasid、token给业务应用; • 2.业务应用A 使用paasid、token,接入网关,网关进行鉴权;业务应用A在网关上发布服务,或申请授权访问其他服务; • 3.前端小程序向网关请求业务应用A 的接口服务,网关请求业务应用A提供的服务,返回给前端小程序。 11、后台服务 -- 构建分布式微服务框架 1.采用etcd 作商项目的开发管理, 均使用TAPD( www.tapd.cn) 2.使用功能包括:需求管理、文档管理、缺陷管理、Wiki、Gitlab源码、企业微信集成等 3.配置了自定义的发布流程,每次版本发布都走TAPD的发布评审流程 22、对小程序技术架构演进的思考 1、小程序将无处不在,手机、车载、PC、带屏设备 2、小程序、APP、公众号的无缝集成 3、弱中心化、到强中心化 4、开放的更多公共能力、云能力、AI能力0 码力 | 35 页 | 15.60 MB | 1 年前3
领域驱动设计&中台/可视化的遗留系统微服务改造仓库库存 已占⽤用 商品 已创建 订单 已撤销 商城库存 已增加 出库单已 ⽣生成 出库单已 发货 投诉单 已创建 投诉单已 处理理 商城库存 已编辑 商品 已发布 商品销售 价格已编辑 订单 已发货 补货申请 单已创建 补货申请 单已审批 ⼊入库单 已创建 ⼊入库单 已⼊入库 订单 已签收 订单已 确认收货 仓库库存 已扣减 仓库库存 已占⽤用 商品 已创建 订单 已撤销 商城库存 已增加 出库单已 ⽣生成 出库单已 发货 投诉单 已创建 投诉单已 处理理 商城库存 已编辑 商品 已发布 商品销售 价格已编辑 订单 已发货 补货申请 单已创建 补货申请 单已审批 ⼊入库单 已创建 ⼊入库单 已⼊入库 订单 已签收 订单已 确认收货 仓库库存 已扣减 已创建 ⼊入库单 已⼊入库 仓库库存 已增加 添加 商品 ⽀支付宝 回调 超过1⼩小时 未⽀支付 ⏱ 编辑 商品 产品运 营⼈人员 编辑库存 编辑销售 价格 发布商品 创建订单 扣减库存 创建 出库单 占⽤用库存 发货 扣减库存 发货 收货 撤销订单 增加库存 创建 退货单 审核 退货单 创建 ⼊入库单 ⼊入库 增加库存 买家 系统 系统 系统0 码力 | 54 页 | 3.85 MB | 1 年前3
领域驱动设计&中台/化繁为简--DDD驱动复杂业务软件架构的演进Facade模式 解决: 接口不规范,多套接口 外部接口深入到上游的业务逻辑 限界上下文解耦-发布订阅机制 钢筋模型 上下文 建模模型 上下文 调度中心 平法模型 上下文 发布 解决: 上游模型变化,下游模型联动 发布-订阅机制 架构演进 1 2 3 领域拆分 架构分层 构建领域模型 架构分层 持久化层 领域层 CAD图纸管理 DDD在研发中落地 统一语言 需求实例化 持续集成 接口测试 DDD落地与研发融合 架构演进驱动产品与研发 • 降低了整体业务的耦合,各业务独立演化; • 简化了集成关系,降低了集成成本,实现各业务的独立发布; • 驱动组织按领域边界拆分了7~9个特性团队,实现并行研发; 限界上下文的拆分 + 领域模型+ 接口设计/测试 • 支撑产品转型,快速实现业务服务化; • 提升业务逻辑的可复用性,新业务快速扩展0 码力 | 33 页 | 1.25 MB | 1 年前3
降级预案在同程艺龙的工程实践-王俊翔Netflix开源的一款容错框架,支持多种降级熔断技术 资源隔离 断路路器器 降级操作 请求合并 请求缓存 实践过程中遇到的问题 • 业务改造成本⾼高,代码耦合,维护成本增⾼高 • 固化策略略,需线下修改代码,测试,发布,线上应急策略略响应不不 友好 • ⽆无法⽀支撑多系统的复合指标计算,业务降级⽀支持不不友好 • ⼤大量量应⽤用各⾃自实现降级熔断,代码散落在各应⽤用,没有统⼀一的管 理理和治理理。久⽽而久 离、延迟处理理 • 策略略灵活调整,实时监控策略略运⾏行行状态 应⽤用 / 服务 降级代码管理理 • 线上代码开发、测试、发布 • 降级代码统⼀一管理理 • 脚本代码动态编译,对象管理理 业务保障平台应 SDK 线下开发 策略略配置 测试 发布 WEB IDE 线上开发 降级⽅方法使⽤用 Git 降级代码 线下代码管理理 脚本 降级服务如何⾃自动探测恢复 ⽅方法代理理0 码力 | 26 页 | 18.67 MB | 1 年前3
领域驱动设计&中台/演进式架构的平台化落地演进接⼝口 (forward compatible) Production 微服务研发平台落地 落地优秀实践,守护架构,降低微服务 研发学习成本 企业研发⼯工具链⽣生态 敏敏捷协作平台 部署发布 平台 持续交付流⽔水线平台 ⾃自动测试 平台 微服务系统设计,研发与运维管理理 微服务 /API设 计 代码 ⽣生成 契约 服务 架构 演进 微服务 运维治 理理 关联变更更到需求 需求 查看需求 我的任务 对接外部 系统 前台 后台/⽀支持 为MVP包含的功能范围 服务地图 产品服务 ⽤用户 产品 容器器 云 PaaS ELK 监控 发布 平台 运维服务 服务实例例 资源池 运⾏行行架构 175 ⽤用户认证服务 鉴权 会话 微服务设计服务 微服务 服务地 图 API 契约 外部系 统 部署架构服务 架构约0 码力 | 42 页 | 2.95 MB | 1 年前3
大规模分布式系统架构下调测能力构建之道应用服务综合mock能力 在实际应用场景中,应用所依赖的服务往往很分散: 一部分依赖服务从本机的Runtime环境即可获取, 一部分需要从协同团队的远程开发机上临时获取(联调模式), 一部分服务可能还未完成开发并发布,需要通过mock机制进行模拟。 我们需要综合利用前面所介绍的各种调测机制来保障日常开发中对应用服务的正常调测: 服务调用 本地服 务? 调用本地服务 是 是否直 连? 否 RPC远程直连 Group1 Broker1 Topic1-q1 Topic2-q3 Topic3-q2 Producer1 MQ Mock 通过本地JVM自带BlockingQueue队列模拟分布式队列, 提供消息的发布、暂存、订阅、消费处理能力 代理门面 将MQ的调用用代理模式做一层封装。 开关机制 支持多级开关切换 消息预取 通过消息预判定,解决找不到消费者导致消息被抛弃 的问题。 优势:0 码力 | 19 页 | 2.74 MB | 1 年前3
共 13 条
- 1
- 2













