声明式自愈系统——高可用分布式系统的设计之道-王昕所有有状态模块 通过统一的接口 对应统一的对象 模型 配置模块对象只 需要包括 Desired State 每个领域的控 制器模块的逻 辑保证自己领 域独立自愈的 能力 改变状态的操作 必须是幂等的声 明式操作,没有 新声明时各模块 按照之前的声明 继续工作 控制器模块对象 包括Desired State 和 Realized State 声明式自愈系统的控制器协调循环 Observe 也是合法状态 最佳实践分享 有关分布式系统统一 API 的设计 Ø 所有API应该是声明式的 Ø 高层API以操作意图为基础设计 Ø 低层 API 根据高层 API 的控制需要设计 Ø API 对象是彼此互补而且可组合的 Ø 尽量避免简单封装,不要有隐藏的内部 API Ø API 操作复杂度与对象数量成正比 Ø API 对象状态不依赖于连接状态 Ø 针对全局状态设计自愈容错机制 最佳实践分享 有关遵循快速回复的原则 Ø 快速报错 Fail Fast Ø 复杂操作拆分成简单原子操作,在界面和 CLI 做组合 Ø 注意设置超时 Ø 尽量避免用全局事物 Ø 注意慢操作可能造成的客户端冲突问题 最佳实践分享 有关缓存的使用 Ø 缓存的内容:服务发现应答,DNS 结果,元数据, 数据,之前的请求 Ø 逻辑正确性不能依赖缓存,写操作服务端必须有校 验而且幂等,没有缓存情况下系统仍可服务0 码力 | 44 页 | 2.47 MB | 1 年前3
QCon北京2018-业务高速发展下的互联网金融系统架构演变-张现双+接口版本控制 业务前置控制 Ng+ LUA 流量调度 降级 限流 灰度 接口分发 运营活动动态配置,接口重新编排 热点功能前置,网关分发许可限流,保护底层 接口req/resp重写,透明操作 全功能API配置,热加载 方案: nginx、 istio spring-gateway、linkerd、zuul 移动服务C 接入层 服务A 服务B -------Joe Armstrong 关键点 分而治之,缩小竞争面 加速资源交换,更快响应 共享资源串行操作 数据一致性(脏读,丢失更新等) 业务纵向拆分,化整为零 资源拆分,横向扩展 cache,index,partition parallel non-blocking sync、lock,cas 限流: max_connections(db) max_request+max_threads(middleware) 数据竞争� [NoSql方案示例] 内存操作 单线程原子操作 高可用保障 兜底策略 限流、熔断: maxclients(redis) max_request+max_threads(middleware) hystrix0 码力 | 42 页 | 19.96 MB | 1 年前3
演进式架构:数字化世界"进化论" 肖然Javascript. 适应度方程 Fitness Function Atomic 原子的 Holistic 全局的 Batch 批次的 Continuous 持续的 适应度方程 Fitness Function Batch 批次的 Atomic 原子的 适应度方程 Fitness Function Batch 批次的 Holistic Holistic 全局的 适应度方程 Fitness Function Atomic 原子的 Continuous 持续的 适应度方程 Fitness Function Continuous 持续的 Holistic 全局的 工程卓越 —— 演进的基础 没有任何实践可以代替交流沟通 “The measure of intelligence is the ability0 码力 | 22 页 | 2.14 MB | 1 年前3
领域驱动设计&中台/架构分层模型适配资源模型: 应⽤用想要⼀一把查询获取所有信息,⼀一个操作做完业务 前端应⽤用 API服务 业务领域 基础设施 业务模型: 精确表达⼀一个业务概念,分治管理理复杂度 存储模型: 性能最优化 DDD分层架构 不不同模型适配(动词) HTTP⽅方法: POST GET PUT DELETE 前端应⽤用 API服务 业务领域 基础设施 业务操作: 注册 注销 登录 退出 修改 撤销 存储动作: DDD分层架构治理理 HTTP⽅方法: POST GET PUT DELETE 前端应⽤用 API服务 业务领域 基础设施 业务操作: 注册 注销 登录 退出 修改 撤销 存储动作: INSERT UPDATE DELETE 资源模型: 应⽤用想要⼀一把查询获取所有信息,⼀一个操作做完业务 业务模型: 精确表达⼀一个业务概念,分治管理理复杂度 存储模型: 性能最优化 不不同层级的模型坚决隔离, 基础设施 业务操作: 注册 注销 登录 退出 修改 撤销 查看 查询 验证码 激活 存储动作: INSERT UPDATE DELETE 动词翻译映射 create retrieve update delete save find DDD分层架构治理理 前端应⽤用 API服务 业务领域 基础设施 名词翻译映射 资源模型: ⽤用户想要⼀一把查询获取所有信息,⼀一个操作做完业务 业务模型:0 码力 | 39 页 | 2.54 MB | 1 年前3
《58到家技术架构快速规划与落地》 - 沈剑误区:监控是运维的事情 58集团技术专场 2. 监控平台- 最佳实践 � 单维度正常,能说明系统正常吗? � 什么是立体化监控? � 怎么个多维度法? (1)机器、操作系统 (2)进程、端口 (3)日志 (4)接口 58集团技术专场 机器、操作系统监控 58集团技术专场 2. 监控平台-进程/端口/JVM • 两类思路:分发/汇总 • 分发类实现Tips (1)易扩展的配置 (2)远端接口探测,命令执行 3. 调用链跟踪-效果 58集团技术专场 3. 调用链跟踪-效果 58集团技术专场 4. 守望者平台 � 服务信息量化管理 (1)上游 (2)下游 (3)缓存 (4)数据库 (5)操作系统 (6)… 58集团技术专场 4. 守望者平台-上游 58集团技术专场 4. 守望者平台-下游 58集团技术专场 4. 守望者平台-DB/Cache 58集团技术专场 4. 守望者平台-JVM/OS/其他 58集团技术专场 强调:统一组件真的很重要! 58集团技术专场 三、总结 58集团技术专场 总结-初创公司技术体系怎么玩 � 服务化:统一框架,统一数据访问,解耦组件 � 监控平台:机器/操作系统,进程/端口,日志,接口 � 调用链跟踪:修改点,串联/时序/深度,数据收集,可视化 � 守望者平台:应用视角,上下游,数据收集,统一展现 统一组件 快速落地 58集团技术专场 Q&A0 码力 | 42 页 | 1.52 MB | 1 年前3
领域驱动设计&中台/淘宝应用架构升级——反应式架构的探索与实践• ⼀一个流是顺序串串⾏行行执⾏行行的 • 多个流之间才可能是并⾏行行的 Your Mouse is a Database! — Erik Meijer 流定义 • ⾯面向数据 • 操作、组合 ⾯面向流 • 业务逻辑 → 数据变换 • 数据变换 → 业务逻辑 数据 vs 逻辑 ⾯面向流编程是 ⾯面向数据编程 流式架构 流 分布式 性能 并发控制 业务编写 window / scan / flatMap / groupBy 组合 merge / concat / startWith / zip / switch* ⼤大量量强⼤大的操作符 声明式表达 完备、更更⾼高级、更更快捷 requestFlow .buffer(10, MILLISECONDS, 16) .flatMap(service::batchOps) 架构治理理能⼒力力加强: • 回压 • 三⻆角模式透传 • 业务快速截⾯面创新 • … 流的概念分层 业务编程框架(⾯面向业务) • 核⼼心概念:流 • 业务涉及的⼤大量量/强⼤大操作 • 流程编排、全异步化 规范(⾯面向系统底层) • 核⼼心:4个接⼝口 + 7个⽅方法 • 远程化、业务框架对接规范 • 业务开发底层规范 理理念(⾯面向系统架构) • 系统应有的能⼒力力0 码力 | 27 页 | 1.13 MB | 1 年前3
全球架构师峰会2019北京/量子计算/量子计算及其潜在应用&mdash华为HiQ Fermion: 一站式量子化学模拟计算解决方案 核心技术体现 HiQ Fermion 是针对近期NISQ量子器件的杀手级应用量子化学模拟开 发的一套软件包。它包括数据结构和工具用以获取和操作费米子哈密 顿量、并将之转化为量子-经典混合架构可以实现的量子态制备、演化 和测量、以及优化参数更新等全套工具。HiQ Fermion 可以在华为云 上提供一站式量子化学模拟解决方案。 1.全面的初态 量子芯片的挑战 外围测控设备的问题 量子计算能否实现,需要增加 量子比特的数量同时提高比特 的 质量。 量子比特动力学调控非常复 杂,加上复杂的环境因素, 精度和稳定性要求极高。如 何提高比特操作精度,是当 前研究的核心。 另外,在实验室我们同时面对温度的 大跨度变化,导致信号畸变和多路控 制信号串扰(crosstalk),接近量子 物理极限的信号放大。 量子调控:利用外场控制量子系统的 library 华为HiQ Pulse: 全面的云上脉冲设计平台方案 品质 基于开环和闭环控制,改进优化算法,性能大幅提升 量子优化控制算法 品质 采用HiQ Pulse算法库优化单比特量子门操作, 保真度可达~99.7% 华为HiQ Pulse: 全面的云上脉冲设计平台方案 动态迭代 优化脉冲 布洛赫球 量子调控主要利用优化算法优化脉冲波形,精准操控实 际量子芯片;在当前嘈杂中型量子(NISQ)发展阶段,0 码力 | 34 页 | 5.57 MB | 1 年前3
数字货币交易系统架构 Python实现 黄毅能睡个好觉(数据持久化,数据最终一致性,容错) • 设计简单,运维方便 交易系统架构设计-关键点 • 内存撮合服务的状态持久化和高可用 • 消息处理顺序的保证 • 异步服务之间消息传送的可靠性 • K线:实时的分组聚合操作 • 高效利用关系数据库 交易系统架构设计-架构图 撮合 资金清算 行情推送 K线计算 历史成交 订单状态 PG Redis 下单 交易系统架构设计-撮合服务 • C++实现的Redis results) pg.execute(‘update task_offset set offset=%s’, [offset]) 交易系统架构设计-关系数据库批量操作 insert into trades values (1, …) (2, …) … psycopg2.extras.execute_values( cur, ‘insert data ) stream = io.StringIO() # 往stream写csv格式的数据 cur.copy_from(stream, ‘trades’) 交易系统架构设计-关系数据库批量操作 with tmp(id, amount) as ( values (1, …), (2, …), (3, …)) update orders set amount=tmp0 码力 | 24 页 | 799.65 KB | 1 年前3
唯品会调度系统的前世今生Executor-A Executor-B ZK断线 接管分片1 分片1的zk数据被修改 执行分片1 ZK重连成功 断线前未完成的ZK 操作继续执行 解决办法: 断线重连后要判断连接sessionid是否己发生改变,如果发生改变 ,则不再继续之前的操作 坑3-Quartz反复销毁重建导致OOM 解决办法: 自实现定时调度线程,一个作业一个线程调度器。 坑4-Treecache导致zk watch大量增长 症状表象:不明原因的STW(GC时间都很短,但产生了STW) -XX:+PrintGCApplicationStoppedTime 坑5-高IO导致STW发生 其它进程/线程 JVM 写Perf文件 执行较大量文件IO操作(比如写日志) 进入安全点 执行GC 写GC日志 退出安全点 IO争用(page lock),可导致长时间无法返回!! STW/JVM暂停 解决办法: 1.将GC日志保存到ramfs,比如:0 码力 | 58 页 | 5.40 MB | 1 年前3
微服务和Service Mesh 在多个行业落地实践监控 大屏 账户 审计 注册,发现,调用都提供鉴权 认证鉴权 接口文档统一维护 文档与运行时一致 减少调用沟通成本 知识库 根据平台、租户、项目三个层次区分权限作用域 操作记录,审计日志,事件查询 账户审计 微服务框架负责服务之间的调用——企业级特性 www.163yun.com 某证券公司 持续集成 中台化 容器化 注册发现 www com • 两阶段提交XA——中间件DDB • TCC——中间件 Dubbo + DTS • Try 预留 + Confirm 提交 + Cancel 还预留 • Try 操作 + Confirm 无操作 + Cancel 补偿 • 事务消息——中间件 TMC 网易分布式事务的实现机制 www.163yun.com 事务发起者、事务参与方 分支事务用事务id做幂等0 码力 | 39 页 | 3.06 MB | 1 年前3
共 18 条
- 1
- 2













