领域驱动设计&中台/淘宝应用架构升级——反应式架构的探索与实践能达到这种效果? CONTENTS 01 架构升级的效果 02 架构升级的思考 03 架构升级的实践 架构升级的思考 现有架构的问题? 现有架构的问题 同步等待 • 现有同步模型,线程 多 load ⾼高 • 资源利利⽤用率 应⽤用本身的解决⽅方案? 并⾏行行度有限 • ⽆无法纯业务依赖并发 • 微服务化让问题更更凸 显 • RT 累积 RT 与 ⽤用户增⻓长 .map(Result::getData) .reduce(0, (acc, data) -> acc + data); 流 - 性能 全异步、流式 CPU数个业务线程 更更少的上下⽂文切换、更更少(⽆无)的竞争、更更低的LOAD 业务等效依赖的异步并发 更更⾼高效的资源利利⽤用率 Universal Scalability Law 系统流⽔水线并⾏行行处理理 缓存(Cache) 4. 消息(Queue) * 天然异步 * 已有集成,或集成成本低 5. DB(JDBC)(Block) * ⽤用 Ali JVM协程 异步集成 * 或⽤用线程池异步集成 6. 限流组件 7. 分布式跟踪系统 解决业务异步/回调 引⼊入的 上下⽂文传递 问题 8. iOS Objective-C 的 Rx 框架 实现 AliRxObjC0 码力 | 27 页 | 1.13 MB | 1 年前3
分布式 KV 存储系统 Cellar 演进之路req9 req8 reply Cellar—快慢队列 网络 线程 工作队列 工作 线程 问题: 共用队列&线程 线上慢请求:超时请求 1: 20 Cellar—快慢队列 网络 线程 读快队列 读快 线程 TP999延迟降低86% 读慢队列 写快队列 写慢队列 读慢 线程 写快 线程 写慢 线程 慢请求判断: • 耗时接口(range···) • value过大 •0 码力 | 34 页 | 1.66 MB | 1 年前3
付钱拉金融云系统架构演进和最佳实践APP2 APP3 APP1 APP2 APP3 APP1 APP2 APP3 DB 快速响应故障 QUICK RESPONSE FAILURE DB 我们解决了以下系统自身问题 线程数 数据库连接 数- mysql,redis 内存 慢SQL 最后的问题是什么? Java系统常见问题 JAVA SYSTEM FAQ CPU DO NOT FORGET THE 业务代码中所有SQL耗时打印耗时 2.业务代码中关键方法打印耗时 3.和第三方接口交互,需要设置连接超时和读取超时时间,避免同步线程阻塞 4.和第三方接口交互,需要考虑是否需要通过代理出网 5.和第三方接口交互,需要考虑是否要相互添加白名单 6.和第三方接口交互,需要考虑设置合适的work线程符合第三方并发数量限制 二 安全规范 1.页面请求参数严格限制或者校验处理,防止SQL注入 2.页面URL请求做细粒度的权限拦截,防止访问权限过大 预防页面被频繁请求,占用系统资源 9.预防API被频繁请求,占用系统资源 规范(续) SPECIFICATION (CONTINUED) 三 性能规范 1.常见OOM预防 2.禁止应用中显式创建线程,避免不可控出现unable to create new native thread 3.控制select/update/delete/insert的数据级和可变集合的size,避免随着业务增加0 码力 | 35 页 | 6.05 MB | 1 年前3
QCon北京2018-业务高速发展下的互联网金融系统架构演变-张现双+限流: max_connections(db) max_request+max_threads(middleware) 数据竞争� [NoSql方案示例] 内存操作 单线程原子操作 高可用保障 兜底策略 限流、熔断: maxclients(redis) max_request+max_threads(middleware) hystrix 多IDC,区域容灾,多ISP 集群,高可用,分片 本地缓存,防刷,流控 终端 域名 机房 LB / NG.. 网关 Cache 服务 抓大不能放小[细节决定成败] 线程阻塞>300 中间件内存管理、线程状态,连接状况 db的io,慢sql,索引,join等 代码review,数据结构,日志 GC TCP连接 第四部分 关于监控 如果没有监控… 盲 人0 码力 | 42 页 | 19.96 MB | 1 年前3
唯品会调度系统的前世今生操作继续执行 解决办法: 断线重连后要判断连接sessionid是否己发生改变,如果发生改变 ,则不再继续之前的操作 坑3-Quartz反复销毁重建导致OOM 解决办法: 自实现定时调度线程,一个作业一个线程调度器。 坑4-Treecache导致zk watch大量增长 TreeCache 300+watch! ZK FULL GC 解决办法: 避免在大量子结点的PATH使用treecache, 坑5-高IO导致STW发生 症状表象:不明原因的STW(GC时间都很短,但产生了STW) -XX:+PrintGCApplicationStoppedTime 坑5-高IO导致STW发生 其它进程/线程 JVM 写Perf文件 执行较大量文件IO操作(比如写日志) 进入安全点 执行GC 写GC日志 退出安全点 IO争用(page lock),可导致长时间无法返回!! STW/JVM暂停0 码力 | 58 页 | 5.40 MB | 1 年前3
降级预案在同程艺龙的工程实践-王俊翔后台实时监控应⽤用、服务,实时变更更降级策略略 proxy 服务质量量数据采集 业务数据采集 ⽇日志 ⽂文件 应⽤用数据采集 应⽤用数据 ⽅方法数据 执⾏行行结果 执⾏行行耗时 异常数据 … JVM内存 JVM线程 GC数据 业务数据 SDK数据 ⾃自定义数据 系统数据采集 容器器数据 CPU数据 内存数据 磁盘数据 … ⽹网络数据 采集 Agen t ⽇日志中⼼心 KAFKA 数据处理理 通 磁盘数据 … ⽹网络数据 采集 Agen t ⽇日志中⼼心 KAFKA 数据处理理 应⽤用数据采集 应⽤用数据 ⽅方法数据 执⾏行行结果 执⾏行行耗时 异常数据 … JVM内存 JVM线程 GC数据 业务数据 SDK数据 ⾃自定义数据 数据通道(⻓长链接单通道) 数据采集 Proxy • 单⼯工直连数据通道 • ⻓长链接,数据流⽅方式实时发送 • 本地多队列列轮循,数据缓冲,合并异步发送0 码力 | 26 页 | 18.67 MB | 1 年前3
海量用户推送后台系统架构实践-曾振波充分利用资源,减少请求等待时间,提升系统吞吐量 • 消息化请求 • MQ - RabbitMQ, RocketMQ • 模块间解耦 • IDC数据同步 • 异步RPC • ICE - 负载均衡,AMI,AMD,多线程 极光推送后台系统架构 02 并行化 • 横向扩展处理能力 • 数据分片存储 • 多节点+分片+多副本架构 • 数据读写动态路由 • 请求并行处理 • 模块级别并行 • 代码级别并行0 码力 | 23 页 | 1.26 MB | 1 年前3
高可用分布式流数据存储设计-李玥发送复制请求 IOThreads 收到复制响应 Pending Callbacks ResponseThreads 发送响应 Journal Cache Journal Files 线程模型 集群 · 架构 没有最好的架构,只有最合适的架构 取 · 舍 学会 ⽅得始终 取 舍 从实用角度出发,如何取舍? Consistency ⼀一致性 Availability0 码力 | 36 页 | 6.02 MB | 1 年前3
微服务和Service Mesh 在多个行业落地实践概览 知识 库 服务 告警 监控 大屏 账户 审计 粒度更细:可指定服务版本,类,方法级别 配置灵活:可配置检测粒度为每M毫秒N个请求P%的错误率 指标多样:RT值,错误率,线程池参数 熔断 粒度更细:可指定调用者和被调用者服务版本,支持failover、failfast、failback容 错机制。 配置灵活:支持自定义超时时间和重试次数。 可自行定制:通过暴0 码力 | 39 页 | 3.06 MB | 1 年前3
声明式自愈系统——高可用分布式系统的设计之道-王昕Middleware OS Virtualization Storage Networking Data 启动异常 进程被杀 服务器假死 断电 启动异常 超卖 进程死锁 负载均衡失效 业务线程池满 监控错误 流控不合理 心跳异常 缓存热点 缓存限流 数据库热点 数据库宕机 数据库延迟 CPU 抢占 内存抢占 内存错乱 上下文切换 磁盘满 磁盘坏 网络抖动 网卡慢 断网 DNS0 码力 | 44 页 | 2.47 MB | 1 年前3
共 10 条
- 1













