文档结构  
翻译进度:已翻译     翻译赏金:0 元 (?)    ¥ 我要打赏

Ratpack是一套方便快捷,高效,可进化和完善的测试HTTP应用程序的 Java 库。它建立在Netty(一个高性能、高效的网络事件驱动引擎)框架之上。

虽然Netty提供无阻塞的网络I/O基础功能,但这在web应用程序架构中起不到太大作用。

Ratpack提供异步的API用于处理网络数据(包含HTTP)。

关键点

  • Ratpack 提供基于Netty的,无阻塞的Http客户端应用程序
  • 可用于集成外部RESTful服务
  • 服务端采用相同的事件循环机制,因此资源会被合适的使用
  • 提供强大的API满足各式各样的编程需求场景
  • 遵循十二要素应用的环境派生配置项为建立微服务提供强大支持!!
  • 通过ratpack- hystrix 模块支持NetflixOSS Hystrix
  • 远程服务调用允许容错
  • 提供将Hystrix指标导向Hystrix Dashboard的能力为构建微服务提供强大支持
  • Ratpack的约定API实现了Reactive Stream规范
  • Ratpack-rxjava模块提供了Ratpack Promise与RxJava观察者模式的桥接器
  • Ratpack-反应器模块提供响应式编程并允许数据使用项目反应器处理数据
第 1 段(可获 2.4 积分)

Ratpack 是一个纯运行时的 Java 库。

为了构建 Ratpack 应用,你需要使用 JVM 构建工具,Ratpack 项目可以通过插件来支持 Gradle 构建。

Ratpack 项目目标

  1. 快速、可伸缩以及高效
  2. 允许开发复杂的应用
  3. 利用非堵塞编程来降低成本
  4. 可以灵活的与其他工具和库集成
  5. 方便进行测试

Ratpack 不能实现的目标

  1. Ratpack 不是一个全栈解决方案
  2. 每一个功能封装在一个单一的模块中
  3. 提供业务逻辑架构或者框架
第 2 段(可获 1.44 积分)

什么时候使用Ratpack?

  • 微服务
  • 高吞吐量应用
  • 轻量级应用
  • 云端部署

架构

Ratpack是强类型的.除了它是使用Java这个强类型语言实现的,它的API也拥抱了类型.

Ratpack的核心是一个基于事件(即非阻塞)的HTTP IO引擎和一套易于组织响应逻辑的API.非阻塞给"传统"、阻塞的Java API带来了另一种API风格----在这种风格中,API必须是异步的。

Ratpack旨在为HTTP应用极大简化这种异步编程风格。它支持构建异步代码和使用创新的方式将请求处理构造成自建的,异步遍历的,图形化的函数。

RatpackServer 类型是Ratpack的入口点。你可以使用该AP编写启动你自己程序的主类。

端口方法使得你可以设置连接服务器使用的端口。如果不设置,默认值为5050.

Ratpack设计来进行“异步”“非阻塞”请求处理.它的内部IO(也就是HTTP请求和响应传输)全都是使用的非阻塞方式.这种方式带来了更高的吞吐量,更少的资源使用,而且重要的是,负载下的行为更容易预测.

由于Node.js平台,这种的编程模型近来变得越来越流行.Ratpack以和Node.js一样的非阻塞,事件驱动模型构建.

 

第 3 段(可获 2.76 积分)

如下两个关键点使得Ratpack本质上是异步的

  1.  HTTP IO是事件驱动/非阻塞的
  2. 请求处理被组织为一些列异步函数的管道.

当使用Ratpack时,HTTP IO的事件驱动对用户很大程度上是透明的.Netty为此做了很多工作.

在Spring Boot应用中使用Ratpack

ratpack-spring-boot扩展提供了与Spring Boot的集成.在这个扩展库中主要有两个功能:一个允许Ratpack服务器注册表可以从Spring ApplicationContext中创建,  另一个允许Ratpack可以自己嵌入Spring Boot应用(使得ApplicationContext自动成为服务器注册表的一部分).

第 4 段(可获 1.25 积分)

作为在Ratpack应用中嵌入Spring(作为注册项)的替代方式,你可以做相反的事情:把Ratpack作为服务端嵌入Spring Boot----Ratpack可以很好的替代Spring Boot支持的Servlet容器.这个功能的核心设置是一个@EnableRatpack注解----为了启动Ratpack,你要讲它添加到Spring配置类.
提示: Ratpack会自动为类路径“/public”或“/static”下的静态内容注册处理器(就像一般Spring Boot应用做的那样).

如果Ratpack嵌入进Spring应用中,它可以帮助重用现有的Guice模块,例如模板渲染.要想做到这点,只需要引入@Bean类型的模块.例如,引入ThymeleafModule以获得Thymeleaf支持

第 5 段(可获 1.55 积分)

基本示例

Image title

Async 示例:

Image title

SpringBoot 示例

Image title

SpringBoot with Thymeleaf 示例

Image title

详细代码请看我的 GitHub: My Sandbox

这里还有一些代码 示例

Ratpack 比 Vert.x 强在哪里?

  1. 模板化 - 完全支持异步渲染和使用 Groovy 2.1 的静态编译
  2. 500 错误处理
  3. 404 错误处理
  4. 路由 - Vert.x 已经有了,但是 Ratpack 支持 404 和 500 的错误处理(并且可以在运行时替换)
  5. Vert.x 更强大的静态文件服务,并支持 HTTP 缓存头设置
  6. Session 支持
  7. 运行时重载
  8. 更高级的抽象,如 Request 和 Response
  9. 构建工具支持 (Gradle)

示例代码请看 ratpack.io.

第 6 段(可获 1.66 积分)

文章评论