Java高并发框架Quasar

来源:互联网 发布:东华软件股份公司官网 编辑:程序博客网 时间:2024/06/01 23:00

Java在高并发场景下相对Go和Erlang等语言来说具有较大劣势,原因就是Java几乎只有线程池一条路好走。假设有个场景,一个业务需要Http从第三方获取数据,平均获取时间是500ms,如果用线程池解决,假设线程最多是500,那么每秒并发最大也就1000,大部分时间在IO等待。继续增加线程,会导致系统CPU切换、内存使用成本迅速上升,最后导致性能无法提高。


有一个办法是采用异步网络模型NIO,如Netty等框架,性能可以得到极大提升。缺点是方法调用得写成异步回调的,代码将比较难以读懂。


Quasar出现就是为了解决这个问题。按照他官方文档 http://docs.paralleluniverse.co/quasar/ 。他是一种轻量级线程,称之为”Fiber“,Fiber的写法几乎和线程一模一样,代码逻辑非常容易懂。

new Fiber<V>() {  @Override  protected V run() throws SuspendExecution, InterruptedException {        // your code    }}.start();

但Fiber不是由OS管理的。所需要的CPU和内存代价都极小,每个Fiber需要的内存是400个字节!相比线程1M字节来说,是1/2500。因此,Quasar强烈建议你不要害怕开Fiber的数量太多,可以开成千上万甚至上百万都没有问题。


当然Fiber也有一些限制,比如对同步快的使用一般是禁止的,也不能用线程的Block。


目前版本还处于0.7.*,似乎也没有大厂关注,倒是很奇怪的事儿。有人测试过他的大并发性能,大约是Go的一半,不过也是很客观的提升了。

0 0
原创粉丝点击