- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
PingCAP-Infra-Meetup-104-反应式编程SpringWebflux
展开查看详情
1 .反应式编程 Spring Webflux
2 .⾃自我介绍 张锦⽂文,⾦金金数据主任⼯工程师,前ThoughtWorks⾼高级咨询师,AWS助理理架构 师,《Scala编程实战》合译者。 专注且不不限于后端,⾼高性能⾼高并发等有趣的技术问题。
3 .问题场景 ⼀一套包含100个模板的主题,⽤用户选⽤用后,为⽤用户在数据库创建相 应的100个模板表单。
4 .解决⽅方案 并⾏行行化
5 .问题场景 判断⼤大的质数
6 .问题分类 1. IO密集型 2. 计算密集型
7 .阿姆达尔定律律(Amdahl) S(N) = T(1) / T(N) = N/(1 + a(N - 1)) T(N)是使⽤用N个线程时所需要的时间 N是可以⽤用的线程数 a是程序串串⾏行行部分所占的⽐比例例
8 . 50%并⾏行行 75%并⾏行行 90%并⾏行行 95%并⾏行行 20 15 10 5 0 1 2 16 128 1024 8192
9 .通⽤用伸缩法则 S(N) = T(1) / T(N) = N/(1+ a(N - 1) + bN(N - 1)) b为⼀一致性因⼦子
10 .那么问题来了了 ⽆无⼀一致性成本 0.2%⼀一致性成本 0.5%⼀一致性成本 1%⼀一致性成本 5%⼀一致性成本 20 15 10 5 0 1 10 100 1000 10000
11 .反应式编程 简单的讲,对于Java来说 可以理理解为⼀一种⾮非阻塞的基于时间流的编程范 式。
12 . Jinwen Zhang Thu 11:40 PM 反应式编程历史(1) 函数式编程的特点: 不不可变性 引⽤用透明性 1980s 爱⽴立信发明Erlang语⾔言,第⼀一⻔门使 得Actor模型成为主流的编程语⾔言。 1995-2008年年,函数式编程的中世纪 Jinwen Zhang Thu 11:37 PM Jinwen Zhang Thu 11:39 PM ⽤用于打造AXD 301型电话交换机的9个 函数式编程最早可追溯到1930s的 9系统,100年年只宕机3秒 lambda演算,以及70年年代的scheme等
13 .反应式编程历史(2) 对反应式设计的兴起 Java的绿⾊色线程,Event-Loop Future/Promise Rx系列列 Actor模型 Jinwen Zhang Thu 11:37 PM 最后在2012年年各⼤大⼯工程师组成 Reactive联盟,发表Reactive Manifesto
14 .反应式编程历史(3) 反应式宣⾔言: 1. Responsive 2. Resilient 3. Elastic 4. Message-Driven
15 .Responsive
16 .Resilient
17 .Elastic
18 .Message-Driven
19 .Reactive Programming 既然有了了Future,为什什么需要CompletableFuture,⼜又为什什么需要 Spring Weblufx/Reactor?
20 .Reactive Programming • Observable + Subscriber + Subscription • Functional Programming • BackPressure • Lazy
21 .Reactive Programming
22 .Spring WebFlux • Mono • Flux
23 .Spring WebFlux Publisher
24 .Spring WebFlux Subscriber
25 .Spring WebFlux - Overflow策略略 • Ignore • Error • Drop • Latest • Buffer
26 .Spring WebFlux
27 .Spring WebFlux
28 .Spring WebFlux • publishOn() • subscribeOn() • parallel() • runOn()
29 .Spring WebFlux & MVC 性能⽐比对 Processor: 2,3 GHz Intel Core i5 模拟2500个⽤用户 Memory: 16 GB 2133MHz LPDDR3