分布式异地多活架构实践之路
分布式日志收集等 写多读少 汇聚模式 (多点写,单点读) 内容统计指标获取、内容榜单等 读写均衡 混合模式 (多点写,单点读, 单点写,多点读) 非核心业务 老版本兼容服务、运营活动、配置、管 理平台、官网、论坛等 N/A 本地模式 (单点读写) 设计思路 核心业务异地多活 精准流量调度 数据同步 多元化 最终一致性 依赖关系优化 配套系统支撑 主 从 多 主 LocalDNS 智能DNS (权威域名 服务器) root域名服 务器 com域名服 务器 合肥IDC 北京IDC 广州IDC GSLB 获取服务IP IP请求 DNS劫持严重 用户设置DNS服务器 DNS各级缓存 DNSTTL不遵循 EDNS普及缓慢 根据用户IP来 进行运营商区 域的调度 结果:无法就近返回最优的机房IP、机房之间负载不均衡、机房异常后无法快速容灾 精准流量调度-全局 智能DNS 路由服务 路由服务 路由服务 北京 IDC 合肥 IDC 广州 IDC 用户与用户数据 机房对应关系, 注册后首次生成 GSLB 漫游到其他机房统 计,满足一定条件 重新设置用户数据 机房 数据同步多元化 CRSync CRSync CRSync Service Service Service 专线/公网 专线/公网 尽可能减少数据同步 控制同步的大小 专线与公网互相容灾0 码力 | 36 页 | 1.66 MB | 1 年前3声明式自愈系统——高可用分布式系统的设计之道-王昕
Ø 设计和验证高可用分布式系统的案例分享 Ø 高可用系统的最佳实践总结 依据声明式自愈的理念设计系统 有一个统一的状 态持久化接口, 所有有状态模块 通过统一的接口 对应统一的对象 模型 配置模块对象只 需要包括 Desired State 每个领域的控 制器模块的逻 辑保证自己领 域独立自愈的 能力 改变状态的操作 必须是幂等的声 明式操作,没有 新声明时各模块 按照之前的声明 Fast Ø 背压模式 Backpressure 最佳实践分享 有关遵循快速回复的原则 Ø 快速报错 Fail Fast Ø 复杂操作拆分成简单原子操作,在界面和 CLI 做组合 Ø 注意设置超时 Ø 尽量避免用全局事物 Ø 注意慢操作可能造成的客户端冲突问题 最佳实践分享 有关缓存的使用 Ø 缓存的内容:服务发现应答,DNS 结果,元数据, 数据,之前的请求 Ø 逻辑正确性不能依赖缓存,写操作服务端必须有校 错误回复缓存,过期时间不能太长,而且有清晰的 修复建议 Ø 数据库更新与缓存失效的策略 最佳实践分享 有关配置文件 Ø 集群使用统一的配置来源 Ø 定义正常的默认配置,满足读取不到配置的正 常运行 Ø 支持可扩展的配置命令格式 Ø 尽量支持更改配置不需要重启服务 Ø 注意配置项之间的关联性 欢迎与我交流 王昕个人微信 欢迎与我交流 王昕个人微信0 码力 | 44 页 | 2.47 MB | 1 年前3降级预案在同程艺龙的工程实践-王俊翔
如 何实现的 • 缺乏UI、没有灵活的参数、策略略配置,没有预案制定管理理能⼒力力 业务保障平台建设之路路 业务保障平台建设之路路 服务管理理 策略略管理理 预案制定 线上演练 • 降级服务统⼀一注册管理理,通过降 级服务质量量数据从整体反映各应 ⽤用的降级点和可⽤用性保障措施 • 降级策略略集中管理理,通过参数 化、配置化、脚本化⽅方式实现线 上策略略的灵活调整 • 依据服务重要程度,从全局制定 规则表达式 熔断 降级 条件 计算 降级消息 数据 存储 实时告警 规则配置 开发 ⽇日志解析规则 控制中⼼心 ETCD 降级服务 降级处理理 流处理理集群(Flink) HBase ES Redis 落地存储 数据服务 数据平台 实时告警 告警策略略 指标查询 指标脚本开发 指标配置 产品化 开发 复合指标计算如何处理理 ServiceA ServiceB 策略略灵活调整,实时监控策略略运⾏行行状态 应⽤用 / 服务 降级代码管理理 • 线上代码开发、测试、发布 • 降级代码统⼀一管理理 • 脚本代码动态编译,对象管理理 业务保障平台应 SDK 线下开发 策略略配置 测试 发布 WEB IDE 线上开发 降级⽅方法使⽤用 Git 降级代码 线下代码管理理 脚本 降级服务如何⾃自动探测恢复 ⽅方法代理理 降级 正常流程 保护期窗⼝口 (10min)0 码力 | 26 页 | 18.67 MB | 1 年前3付钱拉金融云系统架构演进和最佳实践
技术债积累期 团队规模不过百 数据规模日交易量不过千万 配置繁琐 调用混乱 组装困难 协议单一 当前架构的 适用范围 微服务迁移 继续前行 MOVE ON 统一API网关 规范 SPECIFICATION 一 编程规范 1.业务代码中所有SQL耗时打印耗时 2.业务代码中关键方法打印耗时 3.和第三方接口交互,需要设置连接超时和读取超时时间,避免同步线程阻塞 4.和第三 和第三方接口交互,需要考虑是否需要通过代理出网 5.和第三方接口交互,需要考虑是否要相互添加白名单 6.和第三方接口交互,需要考虑设置合适的work线程符合第三方并发数量限制 二 安全规范 1.页面请求参数严格限制或者校验处理,防止SQL注入 2.页面URL请求做细粒度的权限拦截,防止访问权限过大 3.部署在公网的应用做好防止XSS攻击的防范措施 4.和第三方系统交互需要互加白名单确保安全0 码力 | 35 页 | 6.05 MB | 1 年前3领域驱动设计&中台/化繁为简--DDD驱动复杂业务软件架构的演进
指标管理上 下文 三维模型转换 上下文 CAD翻模上下 文 模型检查上下 文 平法模型上下 文 截面钢筋模型 上下文 土建计算上下 文 钢筋计算上下 文 土建计算设置 上下文 钢筋计算设置 上下文 做法上下文 登录与授权 上下文 指标定制上 下文 限界上下文协作关系 报表子域 模型转换子域 CAD翻模上下 文 三维模型转换 上下文 D D ACL/C 文 D U U U D S C 平法模型上下 文 截面钢筋模型 上下文 D D C C S S ACL/C 钢筋计算上下 文 计算子域 土建计算设置 上下文 钢筋计算设置 上下文 U U D D C S C S 土建计算上下 文 U D S C 模型检查上下 文 • 识别真实依赖关系 • 确定上下文物理边界 • 业务演化的趋势0 码力 | 33 页 | 1.25 MB | 1 年前3领域驱动设计&中台/物联网平台的反应式设计
Tenant & User Certificate 为什什么需要反应式架构 设备影⼦子业务说明 1. 设备上报状态 2. 将上报状态持久化到数据库 3. 应⽤用查询上报的状态 4. 应⽤用设置期望的状态 6. 期望状态和上报状态的 差异 (delta) 同步⾄至设备 7. 设备上报新的状态 8. 将新的上报状态持久化到数据库 5. 将期望状态持久化到数据库 { } }, “version”: 10 } 设备影⼦子业务说明 1. 设备上报状态 2. 将上报状态持久化到数据库 3. 应⽤用查询上报的状态 4. 应⽤用设置期望的状态 6. 期望状态和上报状态的 差异 (delta) 同步⾄至设备 7. 设备上报新的状态 8. 将新的上报状态持久化到数据库 5. 将期望状态持久化到数据库 { } }, “version”: 11 } 设备影⼦子业务说明 1. 设备上报状态 2. 将上报状态持久化到数据库 3. 应⽤用查询上报的状态 4. 应⽤用设置期望的状态 6. 期望状态和上报状态的 差异 (delta) 同步⾄至设备 7. 设备上报新的状态 8. 将新的上报状态持久化到数据库 5. 将期望状态持久化到数据库 {0 码力 | 18 页 | 1.81 MB | 1 年前3海尔实时计算平台技术选型与实践
更强大易用的报表设计器 改造后的zeppelin报表设计器 字段 控制区 行列控制区 数据执行区 标记卡 控制区 图表辅助 设置区 1、图表参数设置 2、图内筛选器 3、图表辅助线 4、图表预警 4、图表坐标轴控制 5、图表图例显示控制 1、字段设置 2、添加计算字段 3、字段分组 1、多层钻取 2、双轴异图支持 3、高级计算:同比、环比 4、度量维度排序 1、图表颜色分组0 码力 | 41 页 | 3.21 MB | 1 年前3领域驱动设计&中台/淘宝应用架构升级——反应式架构的探索与实践
并⾏行行度有限 • ⽆无法纯业务依赖并发 • 微服务化让问题更更凸 显 • RT 累积 RT 与 ⽤用户增⻓长 RT 累积带来成本 • 过早引⼊入 cache • 每个服务都在设置超 时 维护成本、业务实现复 杂化 天⽣生异步的架构 流 Stream / Flow / Flux 什什么是流 • ⼀一个流是顺序串串⾏行行执⾏行行的 • 多个流之间才可能是并⾏行行的 ��� �� �� 解决⽅方案⽀支持 — 执⾏行行治理理(2018双11) •线程模型(执⾏行行治理理):业务应⽤用 极简⾼高效 的线程模型,统⼀一线程池 • RPC、缓存等中间件 线程池设置⼊入⼝口,由应⽤用架构统⼀一管控 • 整个应⽤用 CPU数个业务线程 • 涉及线程池:EventLoop / Provider / Consumer / 阻塞操作 的线程池 • 进⼀一步提升性能0 码力 | 27 页 | 1.13 MB | 1 年前3QCon北京2018-业务高速发展下的互联网金融系统架构演变-张现双+
2pizza团队,系统单体制约 商城 核心服务 业务 网贷 保险 基金 商城 财富圈 健康财富 加密 验签 拦截 校验 安全 性能 并发 幂等 交易 缓存 基础服务 消息 监控 配置 报警 MIS OpenAPI 微信 财富圈 移动后台 商城MIS WAP … … Android/ios/h5/php/openApi 积分系统 基础服务 优惠券 宜人币 基金服务 标签 用户 管理平台 产品 理财单 渠道 版本 5G 措施:剥组件,拆单体,合冗余 移动后台打散 轻业务上浮 重业务下沉 API接入 指标监控 配置管理 业务前置配置 日志 配置系统 安全控制 拦截、校验 接口签名 加解密 防刷 攻击类 接口缓存 接口重写 热点活动支持 热点功能前置 接口版本控制 业务前置控制 Ng+ LUA 流量调度 措施:剥组件[深度定制网关] API接入 指标监控 配置管理 业务前置配置 日志 配置系统 安全控制 拦截、校验 接口签名 加解密 防刷 攻击类 接口缓存 接口重写 热点活动支持 热点功能前置 接口版本控制 业务前置控制 Ng+ LUA 流量调度 降级 限流 灰度 接口分发 运营活动动态配置,接口重新编排 热点功能前置,网关分发许可限流,保护底层0 码力 | 42 页 | 19.96 MB | 1 年前3微服务和Service Mesh 在多个行业落地实践
缓存为中心 www.163yun.com 设计要点七:消息队列与异步化 www.163yun.com 设计要点八:熔断,限流,降级 www.163yun.com 设计要点九:配置中心 www.163yun.com 设计要点十:日志中心 www.163yun.com 设计要点十一:全链路监控 www.163yun.com 设计要点十二:全链路压测 www API 监控 认证 鉴权 治理 文档 报表 微服务框架 (服务治理) 服务 目录 注册 发现 限流 熔断 降级 容错 路由 负载 均衡 参数 分流 拓扑 依赖 配置 中心 服务 监控 服务 告警 认证 鉴权 统计 概览 知识 库 APM (应用运行期监控) 运行时 拓扑 性能 监控 服务 筛选 调用 链 调用 栈 持续集成 www.163yun.com 微服务框架 (服务治理) 服务 目录 注册 发现 限流 熔断 降级 容错 路由 负载 均衡 参数 分流 拓扑 依赖 配置 中心 服务 监控 服务 告警 认证 鉴权 统计 概览 知识 库 服务 告警 监控 大屏 账户 审计 注册,发现,调用都提供鉴权 认证鉴权 接口文档统一维护0 码力 | 39 页 | 3.06 MB | 1 年前3
共 23 条
- 1
- 2
- 3