由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - vert.x 3.1月底发布,一个重要功能fiber
相关主题
真正对异步有需求的应该是游戏类服务器rxjava 1.0版本发布了
asynchronous vs non-blocking多线程,异步,并发冲突,fp和其它
同步编程真郁闷node.js错误求指点
dropwizard vs. vertxcoroutine comes to Java - Project Loom
Performance Comparison Between Node.js and Java EETypescript是不是实际上反 functional programming 的?
谁能说说同步/异步IO和阻塞/非阻塞IO的区别?异步通讯代码的简化
看了一下C#的async awaitmultiple io thread有用没用啊?
这年头async IO成了流行了类似Pinterest的网站,怎么计算图片的高度 (转载)
相关话题的讨论汇总
话题: fiber话题: thread话题: dropwizard话题: future话题: block
进入Programming版参与讨论
1 (共1页)
z****e
发帖数: 54598
1
就是vertx-sync
就是利用fiber构建一个轻量级的thread
which并不一一对应kernal thread
简单说,如果你block了fiber
并不会导致os的thread被blocked
通过这种方式,你就可以丢掉promise, rxjava以及更为糟糕的callback了
直接用你最熟悉的sync的方式编写异步代码
唯一的改变就是你把Future改成Message
然后随便用.get, .body,会block fiber但是没有关系,不会阻塞thread
类似goroutine,vert.x依赖的这个类似go的项目名字叫做quasar
http://docs.paralleluniverse.co/quasar/
然后vert.x就把quasar的api用它自己的api包装起来
就类似vert.x把akka的actor给抄了过来,然后用相对简单的api包装起来一样
3.1发布之前,对于这个需求的呼声相当高,这是链接
http://github.com/vert-x3/vertx-sync/blob/master/src/main/ascii
效率对比,quasar做了一个跟go还有erlang的简单对比,13年有一个blog
http://blog.paralleluniverse.co/2013/05/02/quasar-pulsar/
举个简单例子,比如这个
Future reply = awaitResult(h -> eb.send("someaddress", "ping", h));
System.out.println("Received reply " + reply.body());
到第二步,system.out的时候,会block当前thread
所以不适合把这段代码放到verticle中去,因为会把event loop给blocked
但是如果你换成了Message which使用了 fiber,代码就变成了这样
Message reply = awaitResult(h -> eb.send("someaddress", "ping", h));
System.out.println("Received reply " + reply.body());
就不会block thread,但是代码依旧会按照顺序执行,先执行完成第一步之后,再执行
第二步
实际上就是一个cb,只不过被放到了api level中去,对用户来说是透明的
因为不会block thread,所以尽管放到verticle中去运行,没有关系
不会block eventloop,写起来就简单很多
当然你还是可以用cb,promise,rx这些
从这点上看,异步就快白菜了,作为第一生产力的轮子快造好了
java轮子拯救世界
p***o
发帖数: 1252
2
python啥时候出来?

【在 z****e 的大作中提到】
: 就是vertx-sync
: 就是利用fiber构建一个轻量级的thread
: which并不一一对应kernal thread
: 简单说,如果你block了fiber
: 并不会导致os的thread被blocked
: 通过这种方式,你就可以丢掉promise, rxjava以及更为糟糕的callback了
: 直接用你最熟悉的sync的方式编写异步代码
: 唯一的改变就是你把Future改成Message
: 然后随便用.get, .body,会block fiber但是没有关系,不会阻塞thread
: 类似goroutine,vert.x依赖的这个类似go的项目名字叫做quasar

z****e
发帖数: 54598
3

应该要等明年了
python lang support那个法国佬在忙着写网站
和vert.x awesome的test cases
年底之前比较可能加上去的语言是极为小众的ceylon
其他都要继续等了,你可以主动申请去试试
他们好像会提供tutor,因为新语言支持都是通过cod gen来生成

【在 p***o 的大作中提到】
: python啥时候出来?
l******s
发帖数: 3045
4
好像就是.net的async+await关键字的feature.

【在 z****e 的大作中提到】
: 就是vertx-sync
: 就是利用fiber构建一个轻量级的thread
: which并不一一对应kernal thread
: 简单说,如果你block了fiber
: 并不会导致os的thread被blocked
: 通过这种方式,你就可以丢掉promise, rxjava以及更为糟糕的callback了
: 直接用你最熟悉的sync的方式编写异步代码
: 唯一的改变就是你把Future改成Message
: 然后随便用.get, .body,会block fiber但是没有关系,不会阻塞thread
: 类似goroutine,vert.x依赖的这个类似go的项目名字叫做quasar

s***o
发帖数: 2191
5
Tim Fox:
Apparently folks, JavaEE is the future! (Or so people are telling me). What
do you think about that?
z****e
发帖数: 54598
6
jee是java成熟的规范的合集,vert.x越做越像jee,但是是脚本的jee,还有其它的,
跟jee是一个很好的互补,我不认为vert.x应该纳入jee,强迫要求一般的企业开发用
ruby等脚本没有意义,程序员不管会哪个轮子,学习另外一个都是很好的提升,不同的
东西,架构,理念都不一样

:Tim Fox:
:Apparently folks, JavaEE is the future! (Or so people are telling me).
What do you think about that?
s***o
发帖数: 2191
7
老赵理解错了,Tim Fox是在发牢骚。有可能是red hat 内部的JEE五毛诸如Arun
Guupta之流在搞vert.x的小动作

【在 z****e 的大作中提到】
: jee是java成熟的规范的合集,vert.x越做越像jee,但是是脚本的jee,还有其它的,
: 跟jee是一个很好的互补,我不认为vert.x应该纳入jee,强迫要求一般的企业开发用
: ruby等脚本没有意义,程序员不管会哪个轮子,学习另外一个都是很好的提升,不同的
: 东西,架构,理念都不一样
:
: :Tim Fox:
: :Apparently folks, JavaEE is the future! (Or so people are telling me).
: What do you think about that?

z****e
发帖数: 54598
8

嗯,有可能,vert.x的core developers很多以前都在red hat的jboss组
比如这位
http://www.linkedin.com/in/normanmaurer
不可能现在才说这些话,多半有人给他打了鸡血
感觉这几个人在vert.x, apple, red hat, apache这些组织里面串联过

【在 s***o 的大作中提到】
: 老赵理解错了,Tim Fox是在发牢骚。有可能是red hat 内部的JEE五毛诸如Arun
: Guupta之流在搞vert.x的小动作

t**r
发帖数: 3428
9
Looks interesting
z****e
发帖数: 54598
10
昨晚看了看,大概是这么一回事
这个东西主要是用来解决callback hell滴
也就是各种恶心的金字塔
让异步之后的处理变得更为flat
而不用担心被blocked
具体的做法是
1)把quasar的lib放入vert.x的lib文件夹下
2)更改extends的class
3)同时启动时候需要加参数
4)最后需要在你使用的方法上加入@Suspendable这个annotation
从这几点上看,还是略微折腾了点
离傻瓜化还有距离,不过anyway,千里之行
解决的问题呢,就是Future之后的future.get, body这些方法
调用的时候都不会block当前的thread,所以可以直接像Future例子一样用async
而不用担心被blocked
以前Future future = awaitResult...
然后future.get();这一步是blocked,如果要想不blocked
就需要callback which会制造出金字塔来
或者rxjava/promise这种publish/subscribe模式,但是略显得麻烦
用了这个之后,这一步就不是blocked
就不需要你再用callback, rxjava & promise了
虽然vert.x也还是支持这三种方式
大概就这么多,呼声很高
加入这个feature的呼声比做scala,python语言的支持呼声都要高
最后加入这个也是顺应了民意,另外一个是redeploy功能
最终的结果还是需要等月底发布之后试一下才知道
相关主题
谁能说说同步/异步IO和阻塞/非阻塞IO的区别?rxjava 1.0版本发布了
看了一下C#的async await多线程,异步,并发冲突,fp和其它
这年头async IO成了流行了node.js错误求指点
进入Programming版参与讨论
S*********t
发帖数: 78
11
试了一下 vertx.sync, 确实不错。
现在就可以用 3.1.0-SNAPSHOT了。vertx.core还用 3.0.0就可以。
代码写起来比 rxjava 容易太多了。代码也容易读懂,毕竟大家更习惯sync的思路。
需要注意的是 所有用到异步的地方都要加@Suspendable ,包括 interface。
这块搞了我好久。
f*********t
发帖数: 17
12
if using fiber why still sticking to Vert.x than use dropwizard
which is much simpler and more familiar to most

【在 S*********t 的大作中提到】
: 试了一下 vertx.sync, 确实不错。
: 现在就可以用 3.1.0-SNAPSHOT了。vertx.core还用 3.0.0就可以。
: 代码写起来比 rxjava 容易太多了。代码也容易读懂,毕竟大家更习惯sync的思路。
: 需要注意的是 所有用到异步的地方都要加@Suspendable ,包括 interface。
: 这块搞了我好久。

z****e
发帖数: 54598
13

不觉得vert.x更难,我觉得dropwizard的上手难度要高不少
这两个用的库有不少重合的,但是dropwizard更传统一点
用的主要还是jee那些东东,做了一个集成
相比之下,vert.x对于udp, nosql, polyglot这些支持要强过dropwizard
而且vert.x主要优势在于kernal绑定的threads数量,eventloop的搞法
其他都是thread pool,从效率上说,应该vert.x会更强一点
不过如果都用了quasar,本质上的threads数量应该是一样的
另外一个就是,其他大部分框架,包括dropwizard,servlet,spring
集成都要自己折腾,需要倒腾comsat integration
比如comsat-dropwizard
vert.x就有官方帮忙搞,所以会更傻瓜一点

【在 f*********t 的大作中提到】
: if using fiber why still sticking to Vert.x than use dropwizard
: which is much simpler and more familiar to most

z****e
发帖数: 54598
14
31snapshot在哪下?还是mvn package?

【在 S*********t 的大作中提到】
: 试了一下 vertx.sync, 确实不错。
: 现在就可以用 3.1.0-SNAPSHOT了。vertx.core还用 3.0.0就可以。
: 代码写起来比 rxjava 容易太多了。代码也容易读懂,毕竟大家更习惯sync的思路。
: 需要注意的是 所有用到异步的地方都要加@Suspendable ,包括 interface。
: 这块搞了我好久。

f*********t
发帖数: 17
15
dropwizard is just a bundle of jersey, jetty, hibernate(optional)
people don't even need to learn it, assuming most have already used these
adding fiber to dropwizard is just a minor change

【在 z****e 的大作中提到】
: 31snapshot在哪下?还是mvn package?
z****e
发帖数: 54598
16

是啊,这些东西都略微heavy了一点
而且不够灵活
比如udp,nosql,支持就不好了
udp怎么看都需要netty系的产品,比如netty, vert.x这些
nosql怎么看也都不怎么需要orm

【在 f*********t 的大作中提到】
: dropwizard is just a bundle of jersey, jetty, hibernate(optional)
: people don't even need to learn it, assuming most have already used these
: adding fiber to dropwizard is just a minor change

1 (共1页)
进入Programming版参与讨论
相关主题
类似Pinterest的网站,怎么计算图片的高度 (转载)Performance Comparison Between Node.js and Java EE
如何快速处理大量网上xml文件?谁能说说同步/异步IO和阻塞/非阻塞IO的区别?
Node.js 并发模型相关:closure 中 access mutable variable看了一下C#的async await
尼玛 callback 真是反人类这年头async IO成了流行了
真正对异步有需求的应该是游戏类服务器rxjava 1.0版本发布了
asynchronous vs non-blocking多线程,异步,并发冲突,fp和其它
同步编程真郁闷node.js错误求指点
dropwizard vs. vertxcoroutine comes to Java - Project Loom
相关话题的讨论汇总
话题: fiber话题: thread话题: dropwizard话题: future话题: block