《2018年淘宝应用架构升级反应式架构的探索与实践.pdf》由会员分享,可在线阅读,更多相关《2018年淘宝应用架构升级反应式架构的探索与实践.pdf(25页珍藏版)》请在三个皮匠报告上搜索。
1、淘宝应用架构升级 反应式架构的探索与实践CONTENTS01架构升级的效果02架构升级的思考03架构升级的实践CONTENTS01架构升级的效果02架构升级的思考03架构升级的实践 架构升级的效果我的淘宝 RT 降低 40%+QPS 提升 30%猜你喜欢 QPS 提升 90%+LOAD下降 70%+到底是怎样的架构升级 能达到这种效果?CONTENTS01架构升级的效果02架构升级的思考03架构升级的实践 架构升级的思考现有架构的问题?现有架构的问题同步等待现有同步模型,线程多 load 高 资源利用率应用本身的解决方案?并行度有限无法纯业务依赖并发 微服务化让问题更凸显 RT 累积RT 与
2、用户增长RT 累积带来成本过早引入 cache 每个服务都在设置超时 维护成本、业务实现复杂化 天生异步的架构流Stream/Flow/Flux 什么是流一个流是顺序串行执行的 多个流之间才可能是并行的Your Mouse is a Database!Erik Meijer流定义面向数据 操作、组合面向流业务逻辑 数据变换 数据变换 业务逻辑数据 vs 逻辑面向流编程是 面向数据编程 流式架构流分布式性能并发控制业务编写 流-业务编写创建 just/from*/range/repeat/interval/timer 过滤 filter/take/skip/distinct sample/deb
3、ounce/throttle 转换 map/buffer/window/scan/flatMap/groupBy 组合 merge/concat/startWith/zip/switch*大量强大的操作符声明式表达 完备、更高级、更快捷requestFlow .buffer(10,MILLISECONDS,16).flatMap(service:batchOps)流-并发控制切过 Scheduler是指:远程调用已经异步化,所以是已经且过 Scheduler 可以手工切 Scheduler(subscribeOn/observeOn)业务顺序编写 并发方式执行不同的流 无依赖 切过 Sched
4、uler 就可以自动并发多流并发业务按照语义顺序编写 更友好的控制并发 维护性 和 性能 更优!优雅控制processors.flatMap(processor-processor.process(request).filter(Result:isSuccess).map(Result:getData).reduce(0,(acc,data)-acc+data);流-性能 全异步、流式CPU数个业务线程 更少的上下文切换、更少(无)的竞争、更低的LOAD业务等效依赖的异步并发更高效的资源利用率Universal Scalability Law系统流水线并行处理 流-分布式?)?(?P?I?A?
5、流引用可被远程化系统级的流式贯通架构治理能力加强:回压三角模式透传业务快速截面创新 流的概念分层业务编程框架(面向业务)核心概念:流 业务涉及的大量/强大操作 流程编排、全异步化规范(面向系统底层)核心:4个接口+7个方法 远程化、业务框架对接规范 业务开发底层规范理念(面向系统架构)系统应有的能力 架构上思路 技术上的手段理念 Reactive规范 Reactive Stream业务编程框架 Rx*/Reactor/为什么现在可以做升级语言的支持:Java 8 普及*lambda 支持*业务开发人员对 lambda 的接受度大大提高 Reactive 业务框架成熟*Github 上 RxJa
6、va Star 36k+,Java 语言 Star No.2 项目 业界拥抱 Reactive 理念*Reactive Stream 已经转正已经纳入在 Java 9 的 java.util.concurrent.Flow 中*Spring5、Spring Boot 2 拥抱 Reactivegithub 11月份数据 CONTENTS01架构升级的效果02架构升级的思考03架构升级的实践 应用技术架构图CacheTairDBTDDLRPCDubboJVM CoroutineQueueMetaQEagleEye?Rx AOPAli Rx Util?(MT