reactive-practice-at-taobao icon indicating copy to clipboard operation
reactive-practice-at-taobao copied to clipboard

♨️ Reactive @ 淘宝 | Reactive实践、推动、落地的记录与大会分享 | Flow Arch(流式架构)/Reactive Programming(RP/反应式编程)

Flow Arch(流式架构)/Reactive Programming(RP/反应式编程) Practice

知识共享协议(CC协议) Attribution-NonCommercial-ShareAlike CC BY-NC-SA
GitHub stars GitHub forks GitHub watchers

One way ticket and of life to live, pockets full of sunshine, lots of love to give. -- La La Love On My Mind, Ann Winsborn
体验生命的单程票,装满阳光口袋可以给你许许多多的爱。 —— La La Love On My Mind, Ann Winsborn

因为单程(one-way)的生命,所以我们才能并需要全力生活。

异步(async)的系统,像这首歌一样流畅的节奏停不下来(non-blocking)。

点了链接听听,摇起来~


  • 什么是 Reactive/反应式
  • 准备/学习/了解的资料/书籍
    • Java 8
    • RxJava
    • 函数式编程
  • 有哪些相关的类/库
    • 1. Java 8Stream
    • 2. ReactiveX(Rx)/RxJava
    • 3. Reactive Streams(RS)
  • Reactive Streams介绍
  • 在软件大会上自己做的主题分享
  • 相关资料

什么是 Reactive/反应式

Reactive说明了

  • 技术系统应用达成的 期望要求
  • 架构上的 思路理念
  • 技术上的 核心手段

即也是Reactive本身的定义。具体参见:

准备/学习/了解的资料/书籍

全异步化/流式架构 需要 捕捉操作并编排运行(延迟执行)。

  • 捕捉操作需要Java 8 Lambda语法的支持来精简表达。
  • 编排执行表达了业务逻辑。如何有效表达编排(即业务逻辑)对应了 FP上的思路做法。
    • OOP 有效表达了 业务概念(模型/数据)
    • FP 则有效表达了 业务逻辑(流程/转换)
    • 两者互为补充

Java 8

  • 《Java 8实战》:面向Java 8的技能升级,包括Lambdas、流和函数式编程特性。
    • 实战系列的一贯风格让自己快速上手应用起来。
    • Java 8支持的Lambda是精简表达在语法上提供的支持。
    • Java 8提供了Stream,学习和使用可以建立流式编程的认知。
  • 《Java 8函数式编程》
    • Java 8的函数式用法的入门佳作,非常薄148面,简直不敢相信这么小的篇幅讲了这么多内容。
    • 第9章讲并发程序编写,只短短10来面就广度了不少内容,
      几个关键点及其关联异同的讲解闪烁着思辨的光辉,很是精彩! 🌈

RxJava

函数式编程

  • 《函数式编程思维》:科普读物。
  • 《Java函数式编程》:讲的主题是函数式编程,用Java语言描述。
    • 包含:FP思维、FP基础类库的讲解,偏重思想和基础。有了思维和基础,实际的实践和应用就会举重若轻。
    • 讲解得平实、循序渐进,所以书有点厚500面
    • 基于Java语言描述、手把手的构建FP的基础运行时结构,极大地降低了深入理解FP的门槛和难度。
    • 书评/译序 http://qinghua.github.io/functional-programming-in-java/

有哪些相关的类/库

这里列的是比较广泛的相关。使用方式和思考方式是互通的,大家去学习和理解。

1. Java 8Stream

即包java.util.stream

2. ReactiveX(Rx)/RxJava

ReactiveXRx)是 Reactive eXtensionReactive扩展)的缩写。

提供了Reactive编程支持,提供配套设施/工具的实现。

3. Reactive Streams(RS)

Reactive StreamsRS)规范 简单了解 一下就好~
# 在Java中,即是Java9 Flow API。

Reactive的核心设计思路和底层模式,RS只提供的了API(4个接口)及规范(这个接口及其之间的实现契约),不包含实现。

  • 『核心』是指:全能、极简
  • 『底层』是指:比较原始,业务开发一般不会使用直接使用/实现这个API来编写业务逻辑。

Rx是业务开发使用的框架/库,而Reactive Streams是规范API。

Java中,RxJavaReactive Streams的关系,可以类比成:

  • Spring MVCServlet API
  • MyBatisJDBC API
  • 官网 http://www.reactive-streams.org/
  • RS规范的GitHub仓库,包含了
    • 规范概述 https://github.com/reactive-streams/reactive-streams-jvm#reactive-streams
    • 规范及其设计上的用意 https://github.com/reactive-streams/reactive-streams-jvm#specification
    • Java语言描述的
      • 接口代码
      • TCK(即 规范兼容测试套件)代码

Reactive Streams介绍

Reactive Stream的核心概念及其关系.

Reactive Stream的时序图.

在软件大会上自己做的主题分享

相关资料