分布式异地多活架构实践之路专线费用高; 专线不稳定 跨机房专线问题 依赖小服务,有一 定改造成本; 依赖外部服务 服务依赖问题 减少对业务开发影响; 需要封装屏蔽细节 业务开发影响 如何精准调度; 如何合理调度 流量调度 存储系统自带同步 不成熟; 自研组件之间同步 数据同步 大纲 • 产品发展中遇到的问题 • 异地多活存在哪些技术挑战 • 讯飞输入法异地多活解决方案 • 实际应用效果 • 未来规划 混合模式 (多点写,单点读, 单点写,多点读) 非核心业务 老版本兼容服务、运营活动、配置、管 理平台、官网、论坛等 N/A 本地模式 (单点读写) 设计思路 核心业务异地多活 精准流量调度 数据同步 多元化 最终一致性 依赖关系优化 配套系统支撑 主 从 多 主 汇 聚 混 合 场景区分 封装屏蔽细节 容量合理规划 当前总体架构 合肥 北京 广州 HTTPDNS 法快速容灾 精准流量调度-全局 HTTPDNS LocalDNS 智能DNS 合肥IDC 北京IDC 广州IDC 弱依赖,可控 SDK封装: 重点域名预解析 缓存域名解析结果(sp、 wifi名) 出错或快过期异步解析 合法IP动态下发 IP请求结果统计 多级兜底容错 解析IP合法,IP请求 解析IP不合法,固定IP请求 GSLB HTTPDNS 精准流量调度-用户 智能DNS0 码力 | 36 页 | 1.66 MB | 1 年前3
领域驱动设计&中台/淘宝应用架构升级——反应式架构的探索与实践可以⼿手⼯工切 Scheduler (subscribeOn / observeOn) 业务顺序编写 并发⽅方式执⾏行行 • 不不同的流 • ⽆无依赖 • 切过 Scheduler 就可以⾃自动并发 多流并发 • 业务按照语义顺序编写 • 更更友好的控制并发 维护性 和 性能 更更优! 优雅控制 processors.flatMap(processor -> processor map(Result::getData) .reduce(0, (acc, data) -> acc + data); 流 - 性能 全异步、流式 CPU数个业务线程 更更少的上下⽂文切换、更更少(⽆无)的竞争、更更低的LOAD 业务等效依赖的异步并发 更更⾼高效的资源利利⽤用率 Universal Scalability Law 系统流⽔水线并⾏行行处理理 流 - 分布式 出现较晚(3年年) Spring 加持,有发展前景 Scala,⽤用户基础 少、普及难度⼤大 稳定性 ? ? ? 普及性 ? ? ? 切换成本 业务框架不不会锁定 :有 Reactive Streams 规范 / 不不同业务框架可互通 后期业务框架切换成本不不⾼高 : 不不同业务框架之间互相模仿 / 使⽤用和概念上差别不不 ⼤大 中间件升级 1. 服务框架(RPC) 流式⽀支持会在0 码力 | 27 页 | 1.13 MB | 1 年前3
领域驱动设计&中台/可视化的遗留系统微服务改造微服务架构的九⼤大特征 •通过服务进⾏行行组件化 •围绕业务能⼒力力组织 •做产品⽽而不不是做项⽬目 •智能端点与傻⽠瓜管道 •去中⼼心化地治理理技术 •去中⼼心化地管理理数据 •基础设施⾃自动化 •容错设计 •演进式设计 可视化能帮我们什什么 掌握系统业务 明确系统边界 ⼩小步改造系统 可视化的认识遗留留系统 C4模型、⽤用户画像、⽤用户旅程 C4模型系统架构可视化 国家级 被其他模块依赖 package A class X { public void foo(){} } 独⽴立存在 Structure101代码依赖分析 可视化代码地图 ⾃自动分析每⼀一层级 包/类之间的依赖⽣生 成可视化表格 Structure101代码依赖分析 具体依赖细节 Structure101代码依赖分析 可以将包/类进⾏行行 ⾃自由组合,形成 第⼆二式: 1. 在现存订单模块中添加新的 ⽅方法,提供给⽤用户模块使⽤用, 删除⽤用户模块直接使⽤用订单 模块的数据表 2. 对⽤用户模块和商品模块做同 样的事情 3. 需要在改动点添加⾃自动化测 试保证功能正确 4. 将数据库的join推到代码应⽤用 层⾯面,势必会⽐比原来慢,需 要关注性能问题。考虑添加 缓存,数据库索引,甚⾄至调 整服务划分来解决 降⻰龙⼋八步第三式 ⽤用户0 码力 | 54 页 | 3.85 MB | 1 年前3
微服务和Service Mesh 在多个行业落地实践Calico, OVS 存储 Ceph 滚动更新 弹性伸缩 日志中心 基础设施监控 开 发 集 群 测 试 集 群 生 产 集 群 API网关 (流量接入层) 路由 路由 插件 分流 流量 镜像 维护 开关 API 监控 认证 鉴权 治理 文档 报表 微服务框架 (服务治理) 服务 目录 注册 发现 限流 熔断 降级 容错 路由 署 手 动 触 发 代码到线上全流程管理 互联网化接口测试,场景测试 灵活执行集:冒烟,日常,回归 定时测试,MOCK测试 测试,生产镜像仓库分离,自 动同步 开发测试环境自动部署,生产 环境手动触发 持续集成 www.163yun.com 微服务框架 (服务治理) 服务 目录 注册 发现 限流 熔断 降级 容错 路由 负载 均衡 参数 分流 某物流企业 www.163yun.com 线上 系统A API网关 (流量接入层) 路由 路由 插件 分流 流量 镜像 维护 开关 API 监控 认证 鉴权 治理 文档 报表 线上 系统B 预发 环境 新上 线服 务 99% 1% 灰度发布 A/B测试 流量镜像 测试预发 新上服务 定时开关 接口文档统一维护 文档与运行时一致0 码力 | 39 页 | 3.06 MB | 1 年前3
分布式 KV 存储系统 Cellar 演进之路节点高可用和异地容灾 • 服务可用性提升 • Cellar规划 目录 存储节点Failover,越快越好? • 数据补全对业务影响 • 机器宕机五分钟,数据补全两小时 节点升级,先切走流量再操作? • 节点流量只能切到有其他副本的节点 • 升级后的节点缺少升级期间的写入 Cellar—节点高可用 Cellar—节点高可用 • 秒级容灾 无数据迁移 • 节点静默升级 中心节点 A节点 ··· • Cellar起源 • 中心节点架构演进 • 节点高可用和异地容灾 • 服务可用性提升 • Cellar规划 目录 系统研发 • 异地多活 • 跨机房自动容灾 • 磁盘粒度容灾 • 数据迁移优化 可运维性 • 容器化 • 自动扩缩容 Cellar规划 谢谢0 码力 | 34 页 | 1.66 MB | 1 年前3
降级预案在同程艺龙的工程实践-王俊翔降级服务如何⾃自动探测恢复 ⽅方法代理理 降级 正常流程 保护期窗⼝口 (10min) 窗⼝口期 探测期窗⼝口 (5min) 探测流量量分配 窗⼝口期外 窗⼝口期外 降级⽅方法 熔断 降级流程 恢复探测 探测 开启 开启 未降级 已降级 关闭 窗⼝口期 指标计算 降级触发/恢复 • 降级保护期窗⼝口内,不不进⾏行行恢复试探 • 流量量分配的⽅方式实施恢复探测,百分⽐比、总量量 流量量分配的⽅方式实施恢复探测,百分⽐比、总量量 • 实时计算探测流量量指标,指标恢复关闭降级 ⽅方法调⽤用 百分⽐比策略略 总量量策略略 ⾃自定义策略略 降级预案 运营:明天要做活动, 希望降级不不重要的服务 运营 开发 开发:不不清楚这样的业务 场景有哪些次要服务需要 降级 • 预案分级 从全局建⽴立服务重要程度评估模型 • 蓝⾊色预警 - ⼩小规模⾮非核⼼心服务降级 • ⻩黄⾊色预警0 码力 | 26 页 | 18.67 MB | 1 年前3
声明式自愈系统——高可用分布式系统的设计之道-王昕自我介绍 王昕,阿里中间件技术团队高级技术专家,阿里云开放云平台布道师。具有10多年软件 系统开发和架构经验,在分布式系统领域经验丰富,长期参与高可用中间件系统、云平 台基础管理系统和云原生自动运维系统的构建。在国内外有10多项授权和在审软件技术 发明专利,并多次受邀出席技术会议,做技术专题分享。 目录 Ø 分布式系统面临的高可用问题 Ø 设计和验证高可用分布式系统的工具与方法 Ø 控制器的设计理念 控制逻辑应该只依赖于当前状态 假设任何错误的可能,并做容错处理 尽量避免复杂状态机,逻辑不要依赖无法监控的内部状 态 每个模块都可以在必要时优雅地降级服务 每个模块都可以在出错后自动恢复 假设任何命令都可能被任何调用对象拒绝,甚至返回错 误结果 声明式自愈系统的现有框架——Kubernetes 声明式自愈系统设计理念的回顾 统一接口 和对象模 型 自愈 能力 幂等操 断电 启动异常 超卖 进程死锁 负载均衡失效 业务线程池满 监控错误 流控不合理 心跳异常 缓存热点 缓存限流 数据库热点 数据库宕机 数据库延迟 CPU 抢占 内存抢占 内存错乱 上下文切换 磁盘满 磁盘坏 网络抖动 网卡慢 断网 DNS 故障 系统单点 异步阻塞 依赖超时 内存溢出 不可读写 目录 Ø 分布式系统面临的高可用问题 Ø 设计和验证高可用分布式系统的工具与方法0 码力 | 44 页 | 2.47 MB | 1 年前3
大规模分布式系统架构下调测能力构建之道“负载均衡”机制。 服务提供者不能采用token验证模式 基于包名过滤服务 团队往往开发某类业务服务,这类服务一般都具有相同的包名,因此,可以通过配置包名和服务IP的映射关系, 让服务框架自动将一批服务和特定的IP关联到一起。 直连调测机制 提供者B 服务容器 提供者B 服务容器 本地配置文件 com.company.modelA.* 192.168.1.22 com.company Mock 通过本地JVM自带BlockingQueue队列模拟分布式队列, 提供消息的发布、暂存、订阅、消费处理能力 代理门面 将MQ的调用用代理模式做一层封装。 开关机制 支持多级开关切换 消息预取 通过消息预判定,解决找不到消费者导致消息被抛弃 的问题。 优势:能用极低的资源损耗实现单机环境下对分布式 MQ服务的仿真模拟 分布式MQ服务 Producer2 ….0 码力 | 19 页 | 2.74 MB | 1 年前3
QCon北京2018-业务高速发展下的互联网金融系统架构演变-张现双+从事过研发、运维、dba等工作,在应对互联网系统流 量、并发、安全、一致性问题等方面有一些经验。 翻译出版专著:《可伸缩架构:面向增长应用的高可用》 大纲� 01 宜人贷发展历程 02 移动后台架构演进 03 流量应对策略 04 关于监控 第一部分 宜人贷发展历程 宜人贷发展历程 2011.12 宜人贷成立 2012.3 网站上线 2013.9 移动APP上线 2015 业务前置配置 日志 配置系统 安全控制 拦截、校验 接口签名 加解密 防刷 攻击类 接口缓存 接口重写 热点活动支持 热点功能前置 接口版本控制 业务前置控制 Ng+ LUA 流量调度 降级 限流 灰度 接口分发 ??� FNS Fund 宜睿 P2P BASE Other … … 剥离到网关 部分功能前置 统一接口标准 措施:剥组件[深度定制网关] 业务前置配置 日志 配置系统 安全控制 拦截、校验 接口签名 加解密 防刷 攻击类 接口缓存 接口重写 热点活动支持 热点功能前置 接口版本控制 业务前置控制 Ng+ LUA 流量调度 降级 限流 灰度 接口分发 运营活动动态配置,接口重新编排 热点功能前置,网关分发许可限流,保护底层 接口req/resp重写,透明操作 全功能API配置,热加载 方案:0 码力 | 42 页 | 19.96 MB | 1 年前3
刘道平-从0到1,移动政务应用小程序系统架构演化小程序? 对比项 微信小程序 政务APP 统一身份认证 无需注册直接登录,提供活体检测、人脸核身 需要注册,使用密码和手机盾认证 推广传播 下载成本低、通过微信裂变传播 下载成本高、推广难、占流量、占内存 开发成本 只需开发一套,组件丰富 每个端都得开发,标准化组件少 版本更新 无感知,轻量级更新 更新麻烦,审核周期长 服务触达 利用微信载体,消息通知更简单 APP消息,打扰多,用户遗漏概率大 •从功能导航为中心,转变以个人为中心 •不再按横向具体部门和纵向省、市、县层级设计,用户感受到的是一个不分部 门、不分层级的整体型政府。统一页面设计、统一使用体验 •充分发挥微信平台用户使用高粘度及流量优势,聚焦高频民生服务。 •三大板块:电子证照 ,高频服务, 专题、不同群体服务 ---- 参考《【To G设计赋能】重塑政务服务体验设计初探:粤省事小程序设计总结》 http://www.woshipm0 码力 | 35 页 | 15.60 MB | 1 年前3
共 18 条
- 1
- 2













