[翻译]Reactor Netty参考指南 - 2.入门指南

Posted immuthex

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[翻译]Reactor Netty参考指南 - 2.入门指南相关的知识,希望对你有一定的参考价值。

Reactor Netty参考指南目录


原文地址

这一章节包含的内容应该可以帮助到您开始使用Reactor Netty,包含内容如下:

  • 介绍Reactor Netty
  • 前提条件
  • 了解BOM和版本方案
  • 获取Reactor Netty

2.1.介绍Reactor Netty

适合于微服务架构,Reactor NettyHTTP(包括Websocket),TCPUDP提供了支持背压的网络引擎。

2.2.前提条件

Reactor Netty需要运行在Java 8及以上的版本上。

它需要依赖于以下组件:

  • Reactive Streams v1.0.3
  • Reactor Core v3.x
  • Netty v4.1.x

2.3.了解BOM和版本方案

Reactor NettyProject Reactor BOM的一部分(自从Aluminium发布以来)。将那些能更好的协同合作的artifacts分为一组,提供相关的版本,尽管这些artifacts中有可能有不同的版本方案。

版本方案在0.9.x到1.0.x之间(Dysprosium 和 Europium)改变了。

Artifacts遵循MAJOR.MINOR.PATCH-QUALIFIER的版本方案,而POM则受CalVer的启发使用YYYY.MINOR.PATCH-QUALIFIER的版本方案,其中:

  • MAJOR是当前一代的Reactor,每一代新的Reactor都可能会给项目结构带来根本性的变化(意味着可能会有很重大的迁移工作)。
  • YYYY是在给定发布周期中第一次发布GA版本的年份。(例如1.0.x的1.0.0)
  • .MINOR是从0开始,每次新的发布周期则递增的数字

    • 对于项目来说,一般会有比较大的改变,并且可能会有适度的迁移工作
    • 对于BOM来说,允许在两个同年首次发布的情况下区分发布周期
  • .PATCH是从0开始,每次服务发布的时候递增的数字
  • -QUALIFIER是一个文本修饰词,在GA版本中被省略掉了(见下文)

遵循这一惯例的第一发布周期是2020.0.x,代号Europium。该方案使用了以下限定词(注意使用破折号分隔),顺序如下:

  • -M1..-M9:里程碑(我们预计每次服务版本的发布不会超过9个)
  • -RC1..-RC9:候选版本(我们预计每次服务版本的发布不会超过9个)
  • -SNAPSHOT:快照
  • 没有GA版本发布的限定词
快照在以上类型中是最先发布的,因为在任何PATCH里他们永远是”最新的预发行版本“。尽管一个PATCH周期第一个部署的artifact永远是一个 -SNAPSHOT ,相似的名字,但是更多最新的快照也会在一个里程碑之后发布或者两个候选版本之间发布。

每个发布周期都有一个代号,延续之前的代号方案,可以在非正式的情况下使用(例如在讨论的时候,博客文章中等等)。这个代号代表着传统意义上的MAJOR.MINOR编号。他们(大多数)来自元素周期表,按字母顺序递增。

直到Dysprosium,BOM的版本发布方案都是按照一个代号后面加上一个修饰符的方式,并且限定词只是稍微有所不一样。例如:Aluminium-RELEASE (第一个GA版,现在应该是像YYYY.0.0这样的), Bismuth-M1, Californium-SR1 (服务发布现在应该是像YYYY.0.1这样的), Dysprosium-RC1, Dysprosium-BUILD-SNAPSHOT (每次打完补丁之后,我们都会回到相同的快照版本。现在应该是像YYYY.0.X-SNAPSHOT这样的,所以我们每个PATCH一个快照)

2.4.获取Reactor Netty

正如我们之前提到的,最简单的方式去使用Reactor Netty是去使用BOM并且在您的项目中添加相关的依赖。注意,当添加这种依赖关系的时候,不要指定版本,以便从BOM中获取版本。

当然,如果您想强制使用指定的版本,您可以在添加依赖的时候指定您想用的版本。您也可以不使用BOM的方式,直接使用指定版本的依赖。

2.4.1.Maven安装

Maven本身就支持BOM。首先,您需要在pom.xml添加以下配置来引入BOM。如果pom中已经有dependencyManagement节点了,则只需要直接在里面添加配置。

<dependencyManagement> <1>
    <dependencies>
        <dependency>
            <groupId>io.projectreactor</groupId>
            <artifactId>reactor-bom</artifactId>
            <version>Dysprosium-SR10</version> <2>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<1> 注意dependencyManagement节点。这个是在dependencies节点外面的。

<2> 截至写该文档的时候,Dysprosium-SR10是最新的BOM版本。访问 https://github.com/reactor/re... 检查更新。

接下来,在相关的响应式项目中添加依赖,像往常一样(除了没有<version>节点),如下:

<dependencies>
    <dependency>
        <groupId>io.projectreactor.netty</groupId>
        <artifactId>reactor-netty-core</artifactId> <1>
        <2>
    </dependency>
</dependencies>
<dependencies>
    <dependency>
        <groupId>io.projectreactor.netty</groupId>
        <artifactId>reactor-netty-http</artifactId>
    </dependency>
</dependencies>

<1> 添加Reactor Netty依赖

<2> 没有version节点

2.4.2.Gradle安装

从Gradle 5版本开始支持BOM。下面是引入BOM并且添加Reactor Netty依赖的例子:

dependencies {
    // import a BOM
    implementation platform(\'io.projectreactor:reactor-bom:Dysprosium-SR10\') <1>

    // define dependencies without versions
    implementation \'io.projectreactor.netty:reactor-netty-core\' <2>
    implementation \'io.projectreactor.netty:reactor-netty-http\'
}

<1> 截至写该文档的时候,Dysprosium-SR10是最新的BOM版本。访问 https://github.com/reactor/re... 检查更新。

<2> 这里没有第三部分:版本是单独的部分。从BOM中获取。

2.4.3.里程碑和快照

里程碑和开发者预览版是通过Spring Milestones仓库而不是Maven Central来分发的。要将其添加到您的构建配置文件中,请使用以下代码段:

Milestones in Maven

<repositories>
    <repository>
        <id>spring-milestones</id>
        <name>Spring Milestones Repository</name>
        <url>https://repo.spring.io/milestone</url>
    </repository>
</repositories>

如果是Gradle,请使用以下代码段:

Milestones in Gradle

repositories {
    maven { url \'https://repo.spring.io/milestone\' }
    mavenCentral()
}

2.5.支持和政策

以下条目的镜像请访问 https://github.com/reactor/.g...

2.5.1.您是否还有问题?

首先在Stack Overflow中查看问题,如果有必要则开始讨论

如果您不确定为什么没有效果,或者想知道是否有更好的方式去实现,请先在Stack Overflow上查看问题,如果有必要则开始讨论。使用如下的相关的标签:

  • reactor-netty关于reactor-netty的问题
  • project-reactor关于一般的响应式问题

如果您更喜欢实时讨论的话,我们也有几个Gitter 频道

  • reactor历史上最活跃的一个,大多数社区都可以在这里提供帮助
  • reactor-core针对内部代码库更高级的精确讨论
  • reactor-netty针对netty相关的问题

参考每个项目的README文件来获取其他的信息来源。

我们通常不鼓励通过创建GitHub issue来问问题,建议使用以上两种方式来问问题。

2.5.2.我们的弃用政策

在弃用的处理上,例如一个版本A.B.C,我们会确保:

  • A.B.0版本中弃用的部分不会在A.B+1.0版本之前被删除
  • A.B.1版本中弃用的部分不会在A.B+2.0版本之前被删除
  • 我们会努力在废弃的javadoc中提及如下内容:

    • 被删除的最低版本
    • 指明这个不推荐使用的方法的替代方法
    • 方法被标记为弃用的版本
    本政策自2021年1月起正式实施,适用于2020.0 BOMs和更新版本中的所有模块,以及Dysprosium-SR15之后的Dysprosium版本。

    删除弃用不是硬性承诺,并且被弃用的方法可能会比那些最小的GA版本存在的更久(意思是:只有问题最严重的被弃用的方法才会被及时删除)。

    也就是说,被弃用的代码过了需要被删除的最小版本之后,可能会在后续的任何版本中被删除(包括补丁版本,也就是服务版本),并且不会在进行通知。所以使用者还是应该尽早的修改自己的代码。

Suggest Edit to "Getting Started"


Reactor Netty参考指南目录


版权声明:如需转载,请带上本文链接、注明来源和本声明。否则将追究法律责任。https://www.immuthex.com/posts/reactor-netty-reference-guide/getting-started

以上是关于[翻译]Reactor Netty参考指南 - 2.入门指南的主要内容,如果未能解决你的问题,请参考以下文章

[翻译]Reactor Netty参考指南 - 1.关于这个文档

[翻译]Reactor Netty参考指南 - 3.TCP服务端

6.netty线程模型-Reactor

reactor模式以及reactor模式在netty中的应用

Reactor模式的.net版本简单实现--DEMO

Netty系列二Netty原理篇