z****e 发帖数: 54598 | 1 still difficult to use
vert.x is much much more easier than akka
akka like ejb
vert.x is spring |
|
|
z****e 发帖数: 54598 | 3 vert.x尽量兼容node.js是为了拥有node.js所有的一切
但是同时,还有很多东西是node.js所不具备的
比如java那一堆类库,java的类库是迄今为止,类库最多的一个community
我才不希望把自己的世界局限在node.js这么狭小的一个范围之内呢
node.js之外的世界大太多了
vert.x努力做到的是把ruby, python, js, clojure这些社区合起来
成为一个超集,而不是把自己局限在那么狭小的一个范围之内
工具当然是适用范围越广越好 |
|
|
|
z****e 发帖数: 54598 | 6 我用得很好呀
上线了几个项目
没有问题
大概是2-3个clj mods
rxjava刚开始用,大概2个mods
scala只有一个mod,跟spark做接口
dart转译成js,然后包装成一个mod做web
传统java有一个thymeleaf做template的mod
最大的问题不是productivity的问题
因为vert.x可以跟任何项目做对接
你实在不行的话,直接把vert.x变成secondary component也就是一分钟的事
但是目前还没有发现有类似的问题,一直作为一个司令部一样的存在
而且内置bus,很顶用呀
最大的问题是ide的支持,eclipse麻痹的不支持多个语言同时存在
你比如建一个.py和.rb文件同时放在eclipse的目录下
eclipse是没有办法同时给你各种高亮伺候的
所以每个mod还是要分开,除此之外,没有其他大的问题
楼上的都没用过,都在瞎bb |
|
z****e 发帖数: 54598 | 7 最新一个升级是换走javascript engine
因为rhino是firefox那拨人做的,效率不行
换red hat自己做的js engine
当然api是不变的,跟我的现有代码木有任何关系
看个热闹,本质上跟linux,jvm升级是一样的
用vert.x现在五六个ide一起上
很搞笑,经常这个写完,好累
关掉,换另外一个ide,打开继续写
vert.x什么时候能让eclipse直接支持这所有语言就好了
省得换来换去 |
|
z****e 发帖数: 54598 | 8 vert.x重要,也不重要
重要得是因为所有mods都依赖它
不重要是因为几乎所有的业务都跟它没啥关系
它只是一个中继站,关键是你选择的其他项目的产品是否顶用
vert.x本身不能做很多事,是一个minimum轮子
你讨论性能的时候估计都会忽略它的存在
说再多也木有用
你试试吧,好坏自知
小马过河 |
|
z****e 发帖数: 54598 | 9
vertx
vert.x应该能够直接替换掉akka,两个理念接近
上面帖子链接有个回答,你可以看看
不stupid,自己动手搭建的框架,想拆就拆,想加就加,不会受制于人
多好的事,如果要弄一个html server的话,偷懒就直接找个tomcat,用web service连
起来
你的vert.x不是有web service接口嘛?如果不偷懒
就慢慢建设,比如html template engine,比如session management,用redis
自己做更容易理解原理,我是自己弄的,出啥问题我都很清楚,不像以前弄tomcat
经常不知道哪里出问题,我更喜欢细小的模块的拼凑,不喜欢塞给我一大坨 |
|
z*******3 发帖数: 13709 | 10 比如做web经常遇到的
要弄一个session manager
akka可不管这个,你要自己去集成
麻烦,而且代码可读性不强
找第三方类库也不容易,vert.x有自己的repo
可以直接下下来用
play也没有repo,也需要自己去集成
容易出各种狗血的问题
还有一个就是对于ide的支持
akka和play的插件都做得一般般
vert.x有eclipse的支持,这个看好
说到底就是一个兼容性和eco的差异
akka和play更像是一个module的framework
而不是整个项目的framework |
|
z*******3 发帖数: 13709 | 11 vert.x就是server的java
java统一了所有的os
vert.x会统一所有的语言和其他产品
官方还提供了jca接口,这个就是跟传统j2ee对接的部分
mongo的module早就有了,还照顾到了必需同步的部分
比如jdbc,有一个worker module
这样基本上原来有什么legacy system,我都有办法直接重用
而不用重写代码,这其实很重要
对于backend来说 |
|
z*******3 发帖数: 13709 | 12 把链接点开来看看
是因为tim fox认为它们用的版本太低,用的是2.1m好像,现在都冲3去了
不能反映真实的benchmark,所以让它们把结果给remove了
之前还在的时候,测试结果是头几个
vert.x的实际benchmark就比netty略低一点
这个应该很容易理解,毕竟vert.x用了netty
看netty就大概有idea了 |
|
z****e 发帖数: 54598 | 13 你做得很好啊
就应该这样做
至于大量的serialize/deserialize
这个你没有办法
因为现阶段,异步和同步本质是冲突的
同步会导致block,which异步是不能接受的
现阶段木有很好的办法予以解决
除非你弃用orm也就是db那些
或者尝试着用rxjava那个rxjava-jdbc
这样的话,你就可以不用worker了
另外就是,那个bus是你内部bus,远比网络要快得多
也就是比你监听port的那个mod的io要快速高效得多
所以除了内存用得多点以外,理论上不会有啥太大问题
内存现在便宜得跟啥一样,我觉得你不用在乎
用cloud的话,这些都很cheap了
另外,vert.x的运行效率秒杀node.js
你可以随手google vert.x vs node.js
tim fox那篇文章目前为止还是无人反驳得了的
面 |
|
z****e 发帖数: 54598 | 14 用dart写ui,然后编译成js,放到template mod里面去
dart我只用来写ui,替代js,后端包括web server还是用vert.x来做
dart的web server社区还不完善,刚开始弄没多久
vert.x做的话,因为框架都是自己架的,有啥问题也清楚 |
|
|
z****e 发帖数: 54598 | 16 session的控制压根不是vert.x该做的事
这个应该是web独有的东西,vert.x本身并不是一个web framework
如果你需要web framework,你需要额外的plugin
load balance自己写一个就好了,很容易的
其实session management也很容易 |
|
z****e 发帖数: 54598 | 17 对比啥呀
groupon都用vert.x了
二爷没说吗?
groupon的logo赫然在vert.x 3的网页上 |
|
z****e 发帖数: 54598 | 18 1)你没有用rxjava,which在vert.x里面很强调使用的东西,不用rxjava,你是很难写
出优雅代码的,这个是用vert.x的常识,甚至可以说是java程序员的常识,这种东西压
根不值得拿来做例子
2)这个是匿名类,which是java8以前的东西,写swing的话,这种东西到处都是,这就
是为啥我讨厌callback hell的主因,后来发现js居然把这种垃圾给捡过去了,我都快
吐了
3)异步要谨慎使用,除了会导致callback hell以外,还会让原本同步的操作变成
callback hell,邯郸学步
4)java本身没有办法阻止你写出callback hell,因为你在用fp的方式用oop,而且还
是比较旧版的java,如果你真的要用fp,就别用java好了,因为java根本不让你用fp,
好吧,部分可以,这个其实是fp的问题,不是java的问题,java已经把你往oop上去引
导了,你却非要迕逆java的引导,我能说啥?
5)你可以自己动手解决这个问题,看看rxjava怎么做的,其实原理不难,只要理解了
reflection,publish/subscribe模... 阅读全帖 |
|
p*****2 发帖数: 21240 | 19
有没有rxjava跟vert.x配合的代码例子?
另外vert.x的async库感觉很不成熟呀,用户量很少。 |
|
z*******3 发帖数: 13709 | 20 http://vertx.io/
3.0,目前支持四种语言,java,groovy,ruby和javascript
上次看说打算3.0一开始只支持java和javascript
但是这次出来多了另外两个,哦也
几个重要的features
1)官方web framework,可以直接当web server用了
2)rx和rx stream的支持,streaming的支持很重要
3)jdbc支持,现在不用为jdbc是同步的烦恼了,可以直接连db了
4)mongo和redis的支持,c*支持还在制作中
5)docker的支持,qa和operation应该喜欢这个
6)去掉了对gradle以及maven的依赖,不再需要这两个生成模板
可用可不用,对于不会用maven和gradle的笨蛋来说,是一个福音
7)去掉了对eclipse等ide的依赖,用vi一样可以可以很容易hello world
是不会用eclipse笨蛋的福音,当然你在ide中一样可以轻松debug
8)可以直接使用node.js的npm
9)metrics支持,这个没太看懂是啥,目前支持java,groovy和ruby
10)j... 阅读全帖 |
|
z****e 发帖数: 54598 | 21 说的是这个吧?
http://jxcore.com/nodejx-vs-vert-x-vs-node-js-cluster/
下面tim的解释很清晰了
它关于vert.x的setup一直没给出来
不知道有啥好隐瞒的,到底是怎么run verticle的cmd就是一行的事
不敢给,那这个结果就很值得商榷了
多半是自吹自擂的产物,一个比较科学的benchmark需要给出各种东东
然后你自己能够重现他做的过程和得到类似的结果才对,就像techempower那样
Tim Fox obastemur . • 2 years ago
Sounds like a setup issue. If you're publish your actual benchmark setup
somewhere (with exact instructions for replicating) then people could take a
look, maybe see where the issues are, and re-run it. Most credible
benchmarks w... 阅读全帖 |
|
z****e 发帖数: 54598 | 22 verticle之间一般不share data
如果需要share data,则需要通过msg bus来完成
先将需要share的data转换成json,然后发送给其他的verticle
因为json是所有语言都能接受的这么一个数据格式
那json自然就是immutable的,在发送和接收过程中是无法被更改的
好吧,至少msg bus不会尝试去更改msg,这样就不需要lock了
原理跟fp的多线程原理是一样的
但是vert.x很巧妙滴用这种方式,绕开了immutable这个概念
你不知不觉中就用了fp的多线程的那种方式,就是actor model
但是这种方式呢,有些人会说,太麻烦
ok,那就用map这些来分享data
那这个时候就需要做成immutable的object了
因为actor model之间的share datas必需是immutable的
否则会破坏single threadness
但是这个技能有些高级,一般人可以不用
如果需要用的话,这个就很容易理解
另外,vert.x的lock也有,是Cluster-wide locks
不是threads之间share data... 阅读全帖 |
|
z****e 发帖数: 54598 | 23
no
水平达不到,我怀疑这里有没有人有被vert.x组看上的实力
vert.x的作者很有实力,一般至少是apache top level project的lead吧
我看那几个core developers都是这个级别的 |
|
z****e 发帖数: 54598 | 24 hibernate的功能比较难直接替代
但是你自己用hibernate在vert.x中也不难
spring的话,这个社区正在讨论,要不要做di
java程序员呼声很高,但是其他语言程序员反对
所以暂时先放下,主要是其他语言无法实现di,缺乏jee那种标准
哪怕是spring都比较少见,所以暂时先不搞,而且fp很难di
clojure这种di就怪异了,tomcat和spring mvc暂时不会有激进的改变
就像对于node.js,akka这些也都暂时不会有太大的影响
但是会逐步蚕食这些东西的市场,迟早的事
不管怎样,用vert.x就走在所有人的前面
可以接触很多新的东西,比如rxjava, streaming,docker, nosql多有趣啊
spring那些都用了很多年了,程序员需要进步进步不是?
老用lamp也会腻的 |
|
|
z****e 发帖数: 54598 | 26 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 | 28 昨晚看了看,大概是这么一回事
这个东西主要是用来解决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
就... 阅读全帖 |
|
z****e 发帖数: 54598 | 29 vert.x跟其他工具比如spray这些的关系
有点像
spring跟aspectj, struts这些的关系
你可以integrate这些框架,一起用
也可以只用spring/vert.x,而不用其他框架
java的世界本来就是随便你怎么搞都可以的 |
|
d*******r 发帖数: 3299 | 30 嗯,Java 很多轮子质量其实挺不错的,用来做 startup 其实没啥问题.
vert.x 就是没大厂大规模deploy验证过,或者我不知道这种牛b案例.
你这帖子满满 Python 味, 哈哈 :D
还有,Tornado 要用多核并行的话,还是得上多进程吧, vert.x 跑多线程并行应该不
是问题. |
|
z****e 发帖数: 54598 | 31 当你琢磨要不要用vert.x的时候
你就这么想
112w+的jar包
20w+的npm包
11w+的gem包
vert.x都可以用
你找得到比这个更多选择的东西么?
找不到那就用
找得到的话,洗耳恭听 |
|
z****e 发帖数: 54598 | 32 vert.x这个平台可以写各种脚本,还可以用jar,npm,gem这些类库
内部还有bus通信,而且msg用的是json,可读性强,便于debug
还有shell service,可以随时监听bus里面接收的消息这些,便于测试
用过了vert.x,对其他什么东西都没有兴趣了 |
|
|
s*****r 发帖数: 550 | 34 还是你这个清楚
不过还是有点不清楚这个和polyglot又有什么关系
如果我用python写vert.x的程序,怎么让我的程序跑在JVM上那?
是vert.x里面有基于JVM的python解释器么? |
|
e*******e 发帖数: 248 | 35 \vert太短了。有没有办法写一个比\vert长的竖线?
谢谢! |
|
|
|
z*******c 发帖数: 39 | 38 厚颜来板上请教大神,假设并发要求大概在10k/s 而且大量用到AWS service, 在考虑
到开发成本和实际的deliverable timeline前提下,你们会怎么选择?考古了一下
mitbbs以前的帖子 看起来不看好vertx的人不少 觉得vertx是未来趋势的也有
AWS官方的sdk都是blocking的 用vert.x就必须要用execute blocking或者用worker
verticle, 感觉都很蛋疼,然后本身vertx future的chaining我感觉也并没有非常好用
play的前后版本不兼容让我非常倒胃口,然而performance benchmark上排名靠前而且
用java没有什么学习曲线,组里本来就主要用java
公司庙小,总想着快速迭代出成果,目前感觉vertx的学习曲线让组里的人有点蛋疼
已经不知道该怎么问了,也许另辟蹊径用falcon?
无奈了。。。 |
|
s***o 发帖数: 2191 | 39 vert.x设计简单清晰,源代码也很容易看懂。你们的曲线卡在啥地方了?
好用 |
|
T*********g 发帖数: 496 | 40 绝了!刚才还说今天没看见你发 vert.x的帖子。 |
|
|
z****e 发帖数: 54598 | 42 是node.js的超集
直接替换掉node.js
同时也提供了ruby等语言的接口
包括scala,如果遇到一些lib针对某种语言的话
比如spark,你习惯于用scala的话
vert.x提供了一个module让你可以很快集成进去 |
|
z****e 发帖数: 54598 | 43 某银行,web组闹着要用ruby
backend闹着说ruby看不懂,坚持用java
最后还有人提议groovy我插
cio怒了,决定全部给我换回去用java
我建议用vert.x写modules,这样可以最大可能不重写代码
皆大欢喜 |
|
d******e 发帖数: 2265 | 44 介绍:
Vert.x is a lightweight, high performance application platform for the JVM
that's designed for modern mobile, web, and enterprise applications.
空话一堆啊。
看了例子就是貌似json+rest就能搞定的事情。 有什么特殊的。 |
|
z****e 发帖数: 54598 | 45 你这是属于对web service比较了解的
所以json+rest就搞定了
但是很多人对于web其实不懂
vert.x更适合这些人 |
|
z****e 发帖数: 54598 | 46 你看我给的链接
这个框架只是非常basic的一个东西
真正具体的实现是通过modules来实现的
你插入什么module,它就是什么东西
比如你插入了一个http & 8080 listener这样一个module
它就具备有对8080端口监听并且parse http请求的这么一个功能
如果你插入了一个streaming的一个module
它就具备有了storm的功能
如果你插入了一个spring一样的di module
它就具备有了spring的功能
如果你插入了一个jca,我的天
那么它就具备有了跟j2ee那些企业级app紧密集成的功能
总之这是一个大平台,上面随便你扩展,我目前做的是通过这个平台,做一个报表的扩展
用javafx,把javafx上那些很花哨的chart直接export成image
然后再将image变成byte array,然后再做成一个buffer,也就是vert.x可以识别的格式
然后反馈回去
我写一篇文章介绍一下这个帅得一塌糊涂的东西
完全是革命性的创造,我曾经构想过一个类似的东西
但是我觉得,red hat的tim把我想要做的都做了,我决定在这上面做贡献
... 阅读全帖 |
|
c********l 发帖数: 8138 | 47 我目前做的是通过这个平台,做一个报表的扩展
用javafx,把javafx上那些很花哨的chart直接export成image
然后再将image变成byte array,然后再做成一个buffer,也就是vert.x可以识别的格式
然后反馈回去
我问一个问题,别见笑啊:
这玩意用java servlet里面调用javafx的包再转成bytearray直接写一个也能实现
干嘛还需要大动干戈自己另写一个框架? |
|
d*******r 发帖数: 3299 | 48 "然后event bus用了内存数据库,which is mongodb"
这个怎么讲?就是 vert.x 是要依赖 mongodb 的了?我怎么没在他们网站上看出来呢
?求链接
我其实就在用 mongodb, 不过大家一直说 mongodb 不稳定,我用着还挺小心的。
的话 |
|
d*******r 发帖数: 3299 | 49 真要用这个干活的话,我可能就不用 jython 了,jython 不能用原来python好多的lib
吧,那些lib好多都是C写的。
不过可以用 jython 入手学习 vert.x, 正式上项目的时候先试着用 groovy 看看。
的话 |
|
z****e 发帖数: 54598 | 50 vert.x不是single thread
可以根据cpu的core自动运行相应数量的event thread
然后对于一些非block不可的部分
启动worker thread予以处理
但是你写代码还是按照single thread那种方式去写
single thread其实就是伪多线程
一个主线程挂着一堆伪主线程在跑
这个写过ui的话,应该很清楚了
大部分gui都是single thread |
|