flyzb
2015-09-29 00:37

前段时间研究过spring boot ,发现使用Embed的jetty或tomcat都有一个严重性能问题,一个空rest调用竟然要消耗几百毫秒,让人难以接受。其他框架比如Qbit的rest性能也差不多,而Ratpack的rest性能基本在10ms左右。

tecentID6034F
2016-05-06 11:11

板桥,有没有入门资料

banq
2016-05-07 11:04

2016-05-06 11:11 "@tecentID6034F"的内容
板桥,有没有入门资料 ...

Ratpack最好和RxJava一起使用,因为Ratpack的执行模型是串行异步,不是并行异步,另外在微服务中通过RxJava可以将Ratpack的Promise模型隐藏起来,代码不会再严重依赖Ratpack。

在其他系统中,“异步”和”并行“是可交换的,同时具备的,比如你发出3个异步GET请求,三个请求都好像是同时发出的,也就是说:在任何一个请求得到回应之前,其他两个请求肯定是已经也发出了。

但是Ratpack并不是这么工作的,你发出异步3个GET请求,Ratpack 会等待第一个完成后再发出第二个。

Ratpack Executions: Async + Serial, Not Parallel一文详细解释这种机制。

在一个执行过程ratpack实现所有工作都是在同一个线程,,这种工作方式是充分串行的. 这就暗示:如果你使用ratpack对后端微服务进行Http请求,你的请求将是一个挨着一个发出的,即使你使用的是完整非堵塞http API。

为了实现真正异步+并发,使用RxJava的Observable工作在Ratpack的Execution模型之上。

关于Ratpack使用方式,提供两个参考:

Ratpack’s execution model

在一个Stream中使用Akka Streams, Ratpack, Reactor 和RxJava的代码:

https://github.com/smaldini/ReactiveStreamsExamples/blob/master/src/main/java/org/reactivestreams/examples/Interop101.java

Lesson learned with Ratpack and RxJava

[该贴被banq于2016-05-07 11:16修改过]

2Go 上一页 1 2