PingCAP-Infra-Meetup-104-反应式编程SpringWebflux

张锦文老师本次分享主要讲述了计算机由单核到多核的处理架构的变化,接着从理论出发指出多线程编程所面临的问题,并给出了解决方案,进一步详细介绍了反应式编程的由来及反应式编程宣言: •Responsive •Resilient •Elastic •Message-Driven 然后理论落地引出函数式编程并进一步讲述了其特点: •副作用 •不可变及幂等性 •惰性求职 •函数式一等公民 最后介绍了 Spring WebFlux 在反应式编程中的应用以及它的核心组件,并结合工程实践分享了项目中的踩坑过程。
展开查看详情

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

TiDB 是一款定位于在线事务处理/在线分析处理( HTAP: Hybrid Transactional/Analytical Processing)的融合型数据库产品,实现了一键水平伸缩,强一致性的多副本数据安全,分布式事务,实时 OLAP 等重要特性。