Redian新闻
>
vertx里面同一个module多个verticle的疑问
avatar
vertx里面同一个module多个verticle的疑问# Programming - 葵花宝典
az
1
上次大家推荐的那款酸奶机,刚到,赶紧做了一锅,喜欢比较稀的,所以只把全职牛奶
加热到室温,放了宝宝的yobaby酸奶(没有plain,只好用小宝的酸奶,尽量只取了上
面plain的部分),搅匀,放了少许糖。做出来的酸奶稀稠度正好,但是有点涩,这是
什么原因呢?小宝倒是挺爱吃,可是他爸不吃,嫌涩,大家说说问题在哪里呢?是要多
加糖吗?
水果酸奶,可以把水果埋在瓶子底部放进锅里吗?我家大少爷只吃fruit on the
bottom的酸奶,不吃混合型的,麻烦,呵呵
谢谢
avatar
w*g
2
口头跟老板说了,老板让我写个正式的email。email里面关于考试的details很容易写
。但恳请公司 reimburse test fee,用英语该怎么措施呢?
avatar
w*e
3
想让电脑通过手机上网,用bluetooth把两个都连起来了,但是不知道接下来如何设置
。在版面里也没找到。是sprint手机,dial #777,之后手机先显示作为modem使用,然
后立刻出error message说registration failure。请问有什么特别需要注意的地方么
?哪位大侠能推荐个step by step的教程?谢谢!!
avatar
f*w
4
看了文档和尝试了一些简单例子之后有些基本了解了。目前的理解是每个功能的模块都
应该是一个verticle,但是具体操作的building block应该都是Handler。 但是基于这
个理解又有些疑问
第一个问题是 文档里面说而一个module 里面实际上可以有多个verticle,并且互相
之间可以通信。但是文档里面对于如何同时启动多个verticle或者如何对于verticle寻
址通信只字未提。 是还有什么其他文档我没有看到吗 还是说verticle和handler是两
个完全可以互相取代的概念,所有对handler可以做的操作同样也可以对verticle操作?
第二个问题是 我不明白系统什么时候做并行操作。比如 我在同一个verticle里面监听
了10个端口,每个不同的端口是个不同的REST服务。这种情况下是不是意味着这10个服
务完全就没有可能被并行了 (因为每个verticle都是单线程的)。那这也就意味着对
于REST服务来讲,最优的做法应该是每个服务都运行自己独立的verticle ? 我这麽想
对吗
avatar
j*s
5
放糖,放honey
avatar
f*e
6
Please reimburse the test fee.

【在 w*****g 的大作中提到】
: 口头跟老板说了,老板让我写个正式的email。email里面关于考试的details很容易写
: 。但恳请公司 reimburse test fee,用英语该怎么措施呢?

avatar
w*e
7
各位大侠是觉得我的问题太简单了么?自己顶一下。。。

【在 w******e 的大作中提到】
: 想让电脑通过手机上网,用bluetooth把两个都连起来了,但是不知道接下来如何设置
: 。在版面里也没找到。是sprint手机,dial #777,之后手机先显示作为modem使用,然
: 后立刻出error message说registration failure。请问有什么特别需要注意的地方么
: ?哪位大侠能推荐个step by step的教程?谢谢!!

avatar
z*e
8
verticle是抽象的概念,module是具体的文件
verticle是每次运行的时候,vert.x保证每一个verticle的instance会被单个thread所
访问
不会被多个thread同时访问,而module是你把文件打成的包叫做module
所以可以把多个verticle放到同一个module下面去
但是vert.x运行的时候,还是会将每一个verticle的instance安排给一个具体的thread
vert.x默认是你有多少个core,就运行多少个threads
这样你就不需要像node一样启动多个process了
这些threads之间的通信通过bus来通信
avatar
c*e
9
涩还是酸?
酸奶做出来比较酸,要放满多的糖。
水果后面放也可以啊。

【在 az 的大作中提到】
: 上次大家推荐的那款酸奶机,刚到,赶紧做了一锅,喜欢比较稀的,所以只把全职牛奶
: 加热到室温,放了宝宝的yobaby酸奶(没有plain,只好用小宝的酸奶,尽量只取了上
: 面plain的部分),搅匀,放了少许糖。做出来的酸奶稀稠度正好,但是有点涩,这是
: 什么原因呢?小宝倒是挺爱吃,可是他爸不吃,嫌涩,大家说说问题在哪里呢?是要多
: 加糖吗?
: 水果酸奶,可以把水果埋在瓶子底部放进锅里吗?我家大少爷只吃fruit on the
: bottom的酸奶,不吃混合型的,麻烦,呵呵
: 谢谢

avatar
c*a
10
google translate.

【在 w*****g 的大作中提到】
: 口头跟老板说了,老板让我写个正式的email。email里面关于考试的details很容易写
: 。但恳请公司 reimburse test fee,用英语该怎么措施呢?

avatar
z*r
11
是你的问题描述太不清楚了,没人能回答了。

【在 w******e 的大作中提到】
: 各位大侠是觉得我的问题太简单了么?自己顶一下。。。
avatar
z*e
12
系统什么时候并行你不需要操心
反正你的每一个verticle对象只会被一个thread所执行,在同一个时间点内
不会互相干扰,所以你不用去管vert.x什么时候做并行操作,什么时候不做
这个dispatch由vert.x来搞
所以哪怕你启动的只有一个verticle,只监听一个port
也还是会有多个threads来调用这个verticle的instances,java里面就是内存对象
然后当并发量大的时候,thread就会多起来
然后不同的threads如果调用同一个verticle
那么他们会分别持有这个verticle的不同instances
每一个thread分配一个instance酱紫
你就当你写的verticle是运行在单线程环境中就好了,并行的事,vert.x会帮你搞定
当然一个重要前提就是,你不能直接share object between threads
如果需要在不同threads中分享数据,则你需要看用bus
另外我记得他们好像提供了一个内存共享的map好像,你要自己查查
avatar
az
13
也涩也酸
老公已经够胖的啦,我也是糖妈的潜质,本来不想放很多糖的,不过今天做的时候放了
多一些的糖,照顾老公情绪,呵呵,水果直接加里面了,不知道还能吃不了,试验试验
阶段
谢谢

【在 c*****e 的大作中提到】
: 涩还是酸?
: 酸奶做出来比较酸,要放满多的糖。
: 水果后面放也可以啊。

avatar
p*w
14
你看能不能叫做
Professional development expense

【在 w*****g 的大作中提到】
: 口头跟老板说了,老板让我写个正式的email。email里面关于考试的details很容易写
: 。但恳请公司 reimburse test fee,用英语该怎么措施呢?

avatar
az
16
一岁的娃娃能吃蜂蜜不?还有一个,这个做的过程多少度呢?温度高对蜂蜜不太好的
谢谢

【在 j******s 的大作中提到】
: 放糖,放honey
avatar
z*e
17
vert.x其实就是object或者说是verticle层面的封装
这样你就不用像fp一样搞什么immutable了
轻松容易许多,当然你要搞也可以,只是木有必要
记住这句话
"Vert.x guarantees that a particular verticle instance is never executed by
more than one thread concurrently."
http://vertx.io/manual.html#concurrency
avatar
s*o
18
你买的是哪种酸奶机啊?
avatar
z*e
19
举个例子
class A
A有个对象是a
如果你啥都没做的话
那么这个a并不是线程安全的
为了线程安全,人们想出了各种方法
比如一种线程安全的机制就是lock
但是lock会带来各种狗血问题,比如死锁
而另外一种机制就是immutable
每个thread访问时候,拷贝一份副本就是了
但是这也会带来各种问题,而且不利于理解
fp的狂徒居然发疯了一样要求人们接受什么都是常量的想法
神经病
然后spring什么则是不做控制,你自己要留意
这样就加重了你写代码时候的负担,等于什么都没有做
然后node干脆就干掉多线程,用单线程来做
多线程启动多个process,但是这样的话
你自己要去管理process,以发挥最大机能
尤其是多个cpu多个core的环境下,也麻烦
然后ejb说我可以保证每个instance,一次只会被一个thread所访问
就木有问题,但是这样并发量大的时候,有些操作会导致thread堵塞
就是同步操作,所以ejb并没有很好滴address大并发的问题
虽然提出的构想和目标很美好,但是实现的手段不够好
很多人还是选择了spring那些
但是有了异步之后,大量block的操作被做成异步的
那这样就不会block鸟,然后此时再在object level做封装
就可以有效滴回避以上的各种问题
使得多线程开发更为简单,高效
vert.x就是这么一个东西,vert.x下写代码很容易
既不用immutable,也不用什么synchronized关键字
你只需要死死记住,每一个verticle的instance/java里面就是Verticle对象
不会,永远不会 被多个threads同时访问,就可以了
avatar
f*w
21
非常感谢这麽详细地解释了这些概念 我再消化一下 :-)
那第一个问题呢? 我对handler 和 verticle 之间的关系也很困惑。原因是因为我在
试图自己弄个toy example,里面主verticle会去deploy多个子verticle。 文档讲得很
模糊,我自己找到的API是 container.depolyVerticle() 但是这个函数take的
类型居然是handler! 这样让我不太明白我在根据需求设计自己的verticle/handler的
时候应该让他们遵从什么原则
avatar
a*l
22
Never 涩 for us
Maybe you need to try mixing with plain yogurt

【在 az 的大作中提到】
: 上次大家推荐的那款酸奶机,刚到,赶紧做了一锅,喜欢比较稀的,所以只把全职牛奶
: 加热到室温,放了宝宝的yobaby酸奶(没有plain,只好用小宝的酸奶,尽量只取了上
: 面plain的部分),搅匀,放了少许糖。做出来的酸奶稀稠度正好,但是有点涩,这是
: 什么原因呢?小宝倒是挺爱吃,可是他爸不吃,嫌涩,大家说说问题在哪里呢?是要多
: 加糖吗?
: 水果酸奶,可以把水果埋在瓶子底部放进锅里吗?我家大少爷只吃fruit on the
: bottom的酸奶,不吃混合型的,麻烦,呵呵
: 谢谢

avatar
l*o
23
如果两个vert.x
读写同一个table呢? 还是需要保证同步?
avatar
j*s
24
不知道为啥会涩。
不能先加水果,水果是酸的,牛奶要结块的吧。
只能做好之后吧酸奶倒出来再加水果吧。
蜂蜜可以在热牛奶的时候就加进去。

【在 az 的大作中提到】
: 上次大家推荐的那款酸奶机,刚到,赶紧做了一锅,喜欢比较稀的,所以只把全职牛奶
: 加热到室温,放了宝宝的yobaby酸奶(没有plain,只好用小宝的酸奶,尽量只取了上
: 面plain的部分),搅匀,放了少许糖。做出来的酸奶稀稠度正好,但是有点涩,这是
: 什么原因呢?小宝倒是挺爱吃,可是他爸不吃,嫌涩,大家说说问题在哪里呢?是要多
: 加糖吗?
: 水果酸奶,可以把水果埋在瓶子底部放进锅里吗?我家大少爷只吃fruit on the
: bottom的酸奶,不吃混合型的,麻烦,呵呵
: 谢谢

avatar
f*w
25
我觉得这个不用担心 jdbc会处理好

【在 l*******o 的大作中提到】
: 如果两个vert.x
: 读写同一个table呢? 还是需要保证同步?

avatar
az
26
试过了,感觉味道还是有点酸,这个还是得放不少糖吗?谢谢

【在 a****l 的大作中提到】
: Never 涩 for us
: Maybe you need to try mixing with plain yogurt

avatar
l*o
27
@zhaoce, 不用担心transaction?
avatar
az
28
蜂蜜温度过高不是不好吗?谢谢

【在 j****s 的大作中提到】
: 不知道为啥会涩。
: 不能先加水果,水果是酸的,牛奶要结块的吧。
: 只能做好之后吧酸奶倒出来再加水果吧。
: 蜂蜜可以在热牛奶的时候就加进去。

avatar
z*e
29
启动两个process的?
只有node才会要求你启动多个process
其他无论akka还是vert.x,ejb, spring etc.
都不会做这种要求
启动一个process
读写table的lock是db要处理的问题
所以这里有可能blocked,这就是为啥我们需要worker
这个worker跟node的worker是一样的

【在 l*******o 的大作中提到】
: 如果两个vert.x
: 读写同一个table呢? 还是需要保证同步?

avatar
j*s
30
自己做的酸奶是比较酸,尤其是时间比较长,发的比较硬的话。
买的酸奶估计糖都不少。

【在 az 的大作中提到】
: 试过了,感觉味道还是有点酸,这个还是得放不少糖吗?谢谢
avatar
z*e
31
之所以这么做
是因为你启动的是一个main函数
which一定会挂靠在某一个verticle下
你也知道,一个process只能启动一个main啊
你不能启动多个main吧?
对吧?无论啥语言,都只能有一个main入口,一个process的话
但是你写的verticle每个都有一个main
那你不可能用命令行把他们挨个启动,那样就成multi process了
我们要做的是multi thread,而非process
所以把deployverticle的东西用程序语言来实现,这里其实我用的是python
然后你启动了这个verticle之后,这个verticle会依次去部署那些verticles
酱紫同一个process其实运行多个threads,which不需要你操心的
如果你启动了多个process的话,之间的协调是很蛋疼的一件事
vert.x把thread的communication都做好了,有bus
如果是单线程的process,启动多个的话,你要自己去找bus,然后安装
调试,测试,一堆事,烦死
至于handler,这个是程序员的一个约定俗成的名称
一般涌来搞一个具体的event,会有一个event handler
所以当你在verticle里面监听了一个port之后
当这个port接收到了event,就会自动调用相关的handler去处理
所谓的handler就是这个意思,handler和verticle本质上是两个概念
你可以认为是两个不同的interface,任何一个class都可以impl零到多个interfaces
大概就这个意思

【在 f*****w 的大作中提到】
: 非常感谢这麽详细地解释了这些概念 我再消化一下 :-)
: 那第一个问题呢? 我对handler 和 verticle 之间的关系也很困惑。原因是因为我在
: 试图自己弄个toy example,里面主verticle会去deploy多个子verticle。 文档讲得很
: 模糊,我自己找到的API是 container.depolyVerticle() 但是这个函数take的
: 类型居然是handler! 这样让我不太明白我在根据需求设计自己的verticle/handler的
: 时候应该让他们遵从什么原则

avatar
a*l
32
加! no soft hand, 1- 2 spoon
taste quite good to me
with blueberry or raspberry, my kid loves it too.

【在 az 的大作中提到】
: 试过了,感觉味道还是有点酸,这个还是得放不少糖吗?谢谢
avatar
z*e
33
用vert.x跟其他一样,切记部署时候一台虚拟机/真实机器
就启动一次vert.x的instance就好了
只有单线程的process instance需要启动多次
其他无论是fp的akka, play还是oop的ejb, spring这些
都没有说一个虚拟机启动多个instances的道理
一般就是一个虚拟机启动一个instance,搞定
node是奇芭的存在
然后一般多线程的框架,都会自动管理threads
让你从无聊而又繁琐的并发冲突中摆脱出来
写代码就不要各种lock, synchronised这些鸟
当然为了实现这个目的,会有这样那样的要求
比如要immutable,vert.x是所有多线程框架中,要求最低的一个
其他要求都很恶心
avatar
j*s
34
你的blueberry or raspberry 是新鲜的还是冻的?

【在 a****l 的大作中提到】
: 加! no soft hand, 1- 2 spoon
: taste quite good to me
: with blueberry or raspberry, my kid loves it too.

avatar
z*e
35
container.deployVerticle("foo.ChildVerticle", new AsyncResultHandler
() {
public void handle(AsyncResult asyncResult) {
if (asyncResult.succeeded()) {
System.out.println("The verticle has been deployed, deployment
ID is " + asyncResult.result());
} else {
asyncResult.cause().printStackTrace();
}
}
});
你说的是这种吧?
这个其实不是,verticle的名字放在第一个参数里面,也就是那个foo.ChildVerticle
这个才是verticle,后面那个handler是异步时候需要做的,其实就是一个lambda
文档为了向后兼容,所以用老的方式写,如果是java8的话,会很简洁
就是把一个func塞入这个verticle做callback,一旦这个verticle被deploy完毕之后
就会调用这个callback func
我在javadoc上看到deployverticle的参数应该是一个string
你把你的verticle名字写进去就好了,verticle参数用json
deployVerticle(java.lang.String main)
Deploy a verticle programmatically
avatar
az
36
我给小家伙买了新鲜的blueburry,听说这东西营养好,是不是?这东西可真贵啊。。
。。。
是不是做好酸奶以后,把blueburry藏在地下呢?要不要给切开了?

【在 j****s 的大作中提到】
: 你的blueberry or raspberry 是新鲜的还是冻的?
avatar
z*e
37
实话说,handler这个部分用fp会比较容易搞
也就是callback,异步这些概念,理解下再弄比较好
很开就会遇到callback hell,那一层层的金字塔
rxjava就是你要找的救星
avatar
m*k
38
如果做酸奶。可以买frozen的会便宜很多阿。

【在 az 的大作中提到】
: 我给小家伙买了新鲜的blueburry,听说这东西营养好,是不是?这东西可真贵啊。。
: 。。。
: 是不是做好酸奶以后,把blueburry藏在地下呢?要不要给切开了?

avatar
z*e
39
会blocked,交给worker verticle就好了

【在 f*****w 的大作中提到】
: 我觉得这个不用担心 jdbc会处理好
avatar
n*w
40
和和,大家都好能干啊。我们还停留在豆浆机阶段,面包机正在考虑中,大家都自制酸
奶了:)
推荐DANNON ACTIVIA的VANILLA口味,以前老公和儿子强果味的,我一个人吃VANILLA的
,先在我儿子不知道哪根经发现了开始和我强VANILLA的了:(
avatar
h*4
41
根据你的总结,可不可以理解为vertx和ejb都提供一个instance一个thread的保证,但
是vertx更侧重于异步,ejb更侧重于同步(一个request对应一个thread)?

【在 z****e 的大作中提到】
: 举个例子
: class A
: A有个对象是a
: 如果你啥都没做的话
: 那么这个a并不是线程安全的
: 为了线程安全,人们想出了各种方法
: 比如一种线程安全的机制就是lock
: 但是lock会带来各种狗血问题,比如死锁
: 而另外一种机制就是immutable
: 每个thread访问时候,拷贝一份副本就是了

avatar
az
42
frozen的买了,给老妈的,听说能治便秘,结果一放就放了1年多了,没市场啊,根本
没人吃,其实没啥味道,不好吃啊,如果娃吃的话,就给他买一点点新鲜的了,反正就
吃一点点

【在 m**k 的大作中提到】
: 如果做酸奶。可以买frozen的会便宜很多阿。
avatar
z*e
43
是的,你的理解非常准确
其实所有的多线程框架都提供了一种机制解决冲突问题
因为lock&synchronised的确是很难搞
让用户不再需要去写这些东西是这些框架的目的
vert.x除了worker以外的verticle都是异步的,或者说都需要做成异步的
同步会block线程
ejb当初设计时候没有考虑到异步的情况
因为毕竟年代已经有些久远了,所以大多数操作都还是同步的
但是以后不知道,以后这个情况可能会发生改变
另外一个request未必对应一个thread,看设计
到了具体的instance,可能是多个对应一个,或者一个request调用多个instance
但是在同一个时间点内,一个线程只会调用一个instance
保证其他threads不会过来搞
异步的设计跟同步的架构设计有明显区别,同步是一个request启动一个thread
但是异步不是,异步是有多少个cpu的core,启动多少个thread
然后把event pool里面的events分配给这些threads
这个是vert.x,node是只有一个thread去轮询event pool
所以会启动多process,其他框架都不这么做
了解这个差异很重要,因为这个决定了能否scale
同步一个req启动一个thread一旦并发数量上去
就有可能受限,但是异步的设计不会受限,比较容易scale
其实异步最大的优势就是比较容易发挥机能,让cpu满负荷运转
node只让其中一个core满负荷,而vert.x则让整台机器的cpu的所有core全部满载
这样就几乎把这台机器的机能发挥到了极限,再怎么剥削也难剥削出其他东西了
如果还不够用,那就是需要添加机器的问题了,不是软件能够做的了

【在 h********4 的大作中提到】
: 根据你的总结,可不可以理解为vertx和ejb都提供一个instance一个thread的保证,但
: 是vertx更侧重于异步,ejb更侧重于同步(一个request对应一个thread)?

avatar
m*k
44
冻蓝梅好吃阿。hoho

【在 az 的大作中提到】
: frozen的买了,给老妈的,听说能治便秘,结果一放就放了1年多了,没市场啊,根本
: 没人吃,其实没啥味道,不好吃啊,如果娃吃的话,就给他买一点点新鲜的了,反正就
: 吃一点点

avatar
f*w
45
晕 确实是的。 读文档会错意了 ;-D
非常感谢哈~~

String>

【在 z****e 的大作中提到】
: container.deployVerticle("foo.ChildVerticle", new AsyncResultHandler
: () {
: public void handle(AsyncResult asyncResult) {
: if (asyncResult.succeeded()) {
: System.out.println("The verticle has been deployed, deployment
: ID is " + asyncResult.result());
: } else {
: asyncResult.cause().printStackTrace();
: }
: }

avatar
az
46
不好意思,没吃出来啊,我老爸看着可惜,坚持吃了几次就放弃了

【在 m**k 的大作中提到】
: 冻蓝梅好吃阿。hoho
avatar
f*w
47
请问那么JDBC的连接池呢 在vertx下如何才能最优化jdbc的并发?
能不能指教下我这麽做对不对
假设我有三个数据库操作 增删改。 我把每个数据库操作的模块 M(每个模块包括了
所有可能的数据库操作 ),设置成worker 。 我打算起10个thread的话,我就把M 启
动10个instance,每个instance都维持各自的一个数据库连接,并且监听同一个vertx
地址 K。 然后如果其他web service需要操作数据库的时候就发送相应的JSON object
到K。(也就是说JSON object需要能完整描述我需要做的数据操作是什么)
这样是不是听上去有点stupid? 因为本来可以调用一个函数解决的问题需要先encode
成JSON,然后在模块M里面还要理解JSON 并作相应的操作。 有没有大家已经比较常用
的更好的pattern?

【在 z****e 的大作中提到】
: 系统什么时候并行你不需要操心
: 反正你的每一个verticle对象只会被一个thread所执行,在同一个时间点内
: 不会互相干扰,所以你不用去管vert.x什么时候做并行操作,什么时候不做
: 这个dispatch由vert.x来搞
: 所以哪怕你启动的只有一个verticle,只监听一个port
: 也还是会有多个threads来调用这个verticle的instances,java里面就是内存对象
: 然后当并发量大的时候,thread就会多起来
: 然后不同的threads如果调用同一个verticle
: 那么他们会分别持有这个verticle的不同instances
: 每一个thread分配一个instance酱紫

avatar
n*w
48
做CAKE好吃

【在 az 的大作中提到】
: 不好意思,没吃出来啊,我老爸看着可惜,坚持吃了几次就放弃了
avatar
z*e
49
因为现有的数据库操作会blocked
如果你不用worker的话,你整个thread会被blocked住
这样就跟tomcat什么没有区别了
所以需要用上worker,然后释放启动操作的thread
这么做目的就只有一个,释放当前线程,否则就会被blocked住
你不需要启动10个worker instance,也就是10个worker thread
因为数据库连接是有线程数量访问上限的,如果一万个thread同时启动的话
db也只能host那么有限的几个,比如设置了访问上限是100个
那么一万个就只能100个100个地访问,一定要排队
你可以在worker里面启动一个线程pool,然后设置连接池这些
目前数据库访问都不是异步的,没有那么傻瓜的做法
这么做目的就是把同步搞成异步,无它,要么就干脆不用,换nosql
但是trade off就是各种文档欠缺同时没有transaction, index这些的支持
well,也不是完全没有,但是明显会少很多,相对db而言
要么就干脆同步,同步的话写起来就很简单,怎么做就怎么写
但是同步也还是需要搞连接池这些,只不过简单很多,因为文档有很多
这么做stupid原因也很简单,db的异步操作目前还不成熟
当然你也可以尝试着用rxjava-jdbc,这个还没正式release
总之怎么做都比较折腾,没有绝对傻瓜的解决方案
无非以下几种解决方案
1)做成同步的,tradeoff就是并发时候这里会明显blocked,当然少量的并发感觉不出来
2)做成异步的,你需要启动worker,然后自己管理connection pool,tradeoff就是自
己要动手
3)用rxjava-jdbc,tradeoff就是版本还不成熟,但是写起来容易点
4)丢掉db,换nosql,比如mongo什么的,但是文档相对偏少,而且transaction社么都
不怎么支持
5)干脆丢掉vert.x这些异步框架,直接上tomcat/servlet,这样db操作就都是同步的了
选一种
以前stream84那个家伙的blog还在,最近github有问题,我只找到xml版的blog
https://github.com/stream1984/stream1984.github.io/blob/master/atom.xml
上面写了一个例子很好滴说明了异步和同步在书写代码上的差异
用异步会使得一些原来同步时候很容易的事变得复杂起来
所以异步很多时候不用db

vertx
object
encode

【在 f*****w 的大作中提到】
: 请问那么JDBC的连接池呢 在vertx下如何才能最优化jdbc的并发?
: 能不能指教下我这麽做对不对
: 假设我有三个数据库操作 增删改。 我把每个数据库操作的模块 M(每个模块包括了
: 所有可能的数据库操作 ),设置成worker 。 我打算起10个thread的话,我就把M 启
: 动10个instance,每个instance都维持各自的一个数据库连接,并且监听同一个vertx
: 地址 K。 然后如果其他web service需要操作数据库的时候就发送相应的JSON object
: 到K。(也就是说JSON object需要能完整描述我需要做的数据操作是什么)
: 这样是不是听上去有点stupid? 因为本来可以调用一个函数解决的问题需要先encode
: 成JSON,然后在模块M里面还要理解JSON 并作相应的操作。 有没有大家已经比较常用
: 的更好的pattern?

avatar
a*l
50
新鲜的 or 冻的
冻的, eat immidiately
新鲜的 within a couple hours would be ok

【在 j****s 的大作中提到】
: 你的blueberry or raspberry 是新鲜的还是冻的?
avatar
z*e
51
你可以用一个worker instance来维护一个connection pool
然后你自己再在worker里面维护一个thread pool,对应着connection pool
然后再将每一个发过来的msg parse后轮放到thread pool里面去处理
自己写要解决异步问题就这么麻烦,或者用其他人的mod
但是用了别人的mod,你还是会遇到文档的问题
还不如自己写,至少明白是怎么回事,parse json是必需的
因为msg里面的数据结构跟db里面的数据结构是不一样的
如果不转换的话,db无法接受json,nosql就大部分都是用json来储存数据
所以接受json,说到底这个是db的规范条条框框比较多造成的
数据结构在网络中,内存中和硬盘上都不一样,显然需要转换

vertx
object
encode

【在 f*****w 的大作中提到】
: 请问那么JDBC的连接池呢 在vertx下如何才能最优化jdbc的并发?
: 能不能指教下我这麽做对不对
: 假设我有三个数据库操作 增删改。 我把每个数据库操作的模块 M(每个模块包括了
: 所有可能的数据库操作 ),设置成worker 。 我打算起10个thread的话,我就把M 启
: 动10个instance,每个instance都维持各自的一个数据库连接,并且监听同一个vertx
: 地址 K。 然后如果其他web service需要操作数据库的时候就发送相应的JSON object
: 到K。(也就是说JSON object需要能完整描述我需要做的数据操作是什么)
: 这样是不是听上去有点stupid? 因为本来可以调用一个函数解决的问题需要先encode
: 成JSON,然后在模块M里面还要理解JSON 并作相应的操作。 有没有大家已经比较常用
: 的更好的pattern?

avatar
a*l
52
ft, hehe, making 酸奶 is way easier than making 豆浆

【在 n****w 的大作中提到】
: 和和,大家都好能干啊。我们还停留在豆浆机阶段,面包机正在考虑中,大家都自制酸
: 奶了:)
: 推荐DANNON ACTIVIA的VANILLA口味,以前老公和儿子强果味的,我一个人吃VANILLA的
: ,先在我儿子不知道哪根经发现了开始和我强VANILLA的了:(

avatar
z*e
53
如果是mysql或者postgresql的话
看看这个mod,这个是vert.x里面scala lan作者写的
应该还不错,不过我没用过
https://github.com/vert-x/mod-mysql-postgresql
但是还是没有成熟,也同样会有文档的问题
没办法,这就是现状,现状决定了基建还不完善
所以折腾是必不可少的
avatar
j*s
54
现在还没到季节,当然贵了,而且也不怎么好吃。
要再过几个月才又便宜又好吃吧。
这个得做好酸奶再加上。不然不都捂搜了?
我们家不切,直接吃。

【在 az 的大作中提到】
: 我给小家伙买了新鲜的blueburry,听说这东西营养好,是不是?这东西可真贵啊。。
: 。。。
: 是不是做好酸奶以后,把blueburry藏在地下呢?要不要给切开了?

avatar
f*w
55
非常感谢 既然我已有的大致思路是对的那我就折腾下试试看

【在 z****e 的大作中提到】
: 因为现有的数据库操作会blocked
: 如果你不用worker的话,你整个thread会被blocked住
: 这样就跟tomcat什么没有区别了
: 所以需要用上worker,然后释放启动操作的thread
: 这么做目的就只有一个,释放当前线程,否则就会被blocked住
: 你不需要启动10个worker instance,也就是10个worker thread
: 因为数据库连接是有线程数量访问上限的,如果一万个thread同时启动的话
: db也只能host那么有限的几个,比如设置了访问上限是100个
: 那么一万个就只能100个100个地访问,一定要排队
: 你可以在worker里面启动一个线程pool,然后设置连接池这些

avatar
j*s
56
我总觉得速冻的蔬菜水果营养差,有科学根据没?

【在 m**k 的大作中提到】
: 如果做酸奶。可以买frozen的会便宜很多阿。
avatar
j*s
57
vanilla 的很甜呀,自己做酸奶可以少放糖。就是不够甜。:(

【在 n****w 的大作中提到】
: 和和,大家都好能干啊。我们还停留在豆浆机阶段,面包机正在考虑中,大家都自制酸
: 奶了:)
: 推荐DANNON ACTIVIA的VANILLA口味,以前老公和儿子强果味的,我一个人吃VANILLA的
: ,先在我儿子不知道哪根经发现了开始和我强VANILLA的了:(

avatar
j*s
58
nod nod.
不过,要是豆浆机也没啥技术含量?

【在 a****l 的大作中提到】
: ft, hehe, making 酸奶 is way easier than making 豆浆
avatar
m*k
59
有文章说 。速冻的 比 放久的 "新鲜" 营养还好些.

【在 j****s 的大作中提到】
: 我总觉得速冻的蔬菜水果营养差,有科学根据没?
avatar
n*w
60
RE
我看的是不破坏营养,因为是速冻,反而易于保存营养:)

【在 m**k 的大作中提到】
: 有文章说 。速冻的 比 放久的 "新鲜" 营养还好些.
avatar
n*w
61
和和,还好,比果味的不甜一点点:)

【在 j****s 的大作中提到】
: vanilla 的很甜呀,自己做酸奶可以少放糖。就是不够甜。:(
avatar
j*s
62
这个也有道理呀。
超市里买的算放久的么?
现在卖的应该不是去年的吧。//fear

【在 m**k 的大作中提到】
: 有文章说 。速冻的 比 放久的 "新鲜" 营养还好些.
avatar
j*s
63
那我下次也买点试试。
主要是我不爱吃冰凉的水果,冻的化了会软软的?

【在 n****w 的大作中提到】
: RE
: 我看的是不破坏营养,因为是速冻,反而易于保存营养:)

avatar
n*w
64
我儿子不让和果汁,不让吃糖和巧可里,酸奶里的糖应该还好了:)

【在 j****s 的大作中提到】
: vanilla 的很甜呀,自己做酸奶可以少放糖。就是不够甜。:(
avatar
n*w
65
哈哈,好啊,我也把酸奶机写在LIST之上面包机之后

【在 a****l 的大作中提到】
: ft, hehe, making 酸奶 is way easier than making 豆浆
avatar
j*s
66
我们家的不肯喝白水,只好上果汁,别的糖就能省就省了。

【在 n****w 的大作中提到】
: 我儿子不让和果汁,不让吃糖和巧可里,酸奶里的糖应该还好了:)
avatar
n*w
67
的确味口比不上新鲜的

【在 j****s 的大作中提到】
: 那我下次也买点试试。
: 主要是我不爱吃冰凉的水果,冻的化了会软软的?

avatar
j*s
68
不用酸奶机也可以做酸奶,就是麻烦点。
现在有的炉子本身就有保温功能。

【在 n****w 的大作中提到】
: 哈哈,好啊,我也把酸奶机写在LIST之上面包机之后
avatar
m*k
69
really depends. hehe.长途运输。好多都是放熟的?


【在 j****s 的大作中提到】
: 这个也有道理呀。
: 超市里买的算放久的么?
: 现在卖的应该不是去年的吧。//fear

avatar
n*w
70
和和,正好做米酒:)

【在 j****s 的大作中提到】
: 不用酸奶机也可以做酸奶,就是麻烦点。
: 现在有的炉子本身就有保温功能。

avatar
m*k
71
酸奶里面加很多糖的。
而且一些所谓的 'light' version.用代糖。我觉得还不如sugar.hehe

【在 n****w 的大作中提到】
: 我儿子不让和果汁,不让吃糖和巧可里,酸奶里的糖应该还好了:)
avatar
j*s
72
en, 是呀。
我刚买了一大盒芒果,不知道哪里运来的,这么久了都没放熟。
这已经三月了,马上新鲜水果就下来了。

【在 m**k 的大作中提到】
: really depends. hehe.长途运输。好多都是放熟的?
:

avatar
j*s
73
恩,这个我也会做了。

【在 n****w 的大作中提到】
: 和和,正好做米酒:)
avatar
j*s
74
en, 那种代糖就是糖精吧。

【在 m**k 的大作中提到】
: 酸奶里面加很多糖的。
: 而且一些所谓的 'light' version.用代糖。我觉得还不如sugar.hehe

avatar
m*k
75
代糖很多种。现在最常用 的是splendid?
不是以前的糖精。

【在 j****s 的大作中提到】
: en, 那种代糖就是糖精吧。
avatar
n*w
76
坚决不用代糖:)
我们一般给他的是YOPLAIT的酸奶条,分量不多,不是很甜。
还有DANNON的ACTIVIA,我觉得和小时候吃过的记忆最接近,甜,但比一般的好多了:)

【在 m**k 的大作中提到】
: 酸奶里面加很多糖的。
: 而且一些所谓的 'light' version.用代糖。我觉得还不如sugar.hehe

avatar
a*l
77
nod
吃的时候加
不然都捂搜了

【在 j****s 的大作中提到】
: 现在还没到季节,当然贵了,而且也不怎么好吃。
: 要再过几个月才又便宜又好吃吧。
: 这个得做好酸奶再加上。不然不都捂搜了?
: 我们家不切,直接吃。

avatar
az
78
可能我不爱吃那个味道吧,或者对我来说这个东东就没啥味道。以前公司的午餐总有这
个,一个中国同事狂吃,我才知道这个东东原来不便宜啊,吃了几次,没吃出味道来,
土人

【在 j****s 的大作中提到】
: 现在还没到季节,当然贵了,而且也不怎么好吃。
: 要再过几个月才又便宜又好吃吧。
: 这个得做好酸奶再加上。不然不都捂搜了?
: 我们家不切,直接吃。

avatar
j*s
79
夏天的时候比较熟,味道好很多。我们家小朋友都爱吃,据说很有营养。

【在 az 的大作中提到】
: 可能我不爱吃那个味道吧,或者对我来说这个东东就没啥味道。以前公司的午餐总有这
: 个,一个中国同事狂吃,我才知道这个东东原来不便宜啊,吃了几次,没吃出味道来,
: 土人

avatar
a*l
80
99%的小孩子都爱吃

【在 j****s 的大作中提到】
: 夏天的时候比较熟,味道好很多。我们家小朋友都爱吃,据说很有营养。
avatar
a*l
81
用代糖的很难吃

【在 m**k 的大作中提到】
: 酸奶里面加很多糖的。
: 而且一些所谓的 'light' version.用代糖。我觉得还不如sugar.hehe

avatar
n*w
82
我不知道你买的是腰芒,还是COSTCO的大芒果,我觉得和熟香蕉放在一起芒果容易熟

【在 j****s 的大作中提到】
: en, 是呀。
: 我刚买了一大盒芒果,不知道哪里运来的,这么久了都没放熟。
: 这已经三月了,马上新鲜水果就下来了。

avatar
j*s
83
中国店的大芒果,为了取现金,随便拿了一盒。:(
让我回家找找香蕉。。

【在 n****w 的大作中提到】
: 我不知道你买的是腰芒,还是COSTCO的大芒果,我觉得和熟香蕉放在一起芒果容易熟
avatar
az
84
汗,吃了两年,没吃出味道来。希望我家小朋友也爱吃,同事也说这个东东好,营养好
。是不是有抗氧化剂啥的

【在 j****s 的大作中提到】
: 夏天的时候比较熟,味道好很多。我们家小朋友都爱吃,据说很有营养。
avatar
a*l
85
I think DANNON的ACTIVIA, 94 用代糖的

:)

【在 n****w 的大作中提到】
: 坚决不用代糖:)
: 我们一般给他的是YOPLAIT的酸奶条,分量不多,不是很甜。
: 还有DANNON的ACTIVIA,我觉得和小时候吃过的记忆最接近,甜,但比一般的好多了:)

avatar
n*w
86
真的吗?我觉得不是。 他用的是LOW FAT 牛奶,如果用代糖,成分上是要写出来的。
因为象孕妇,还有其他人是最好不用代糖的。
我今天的还没吃,又看了看成分,没有代糖;)

【在 a****l 的大作中提到】
: I think DANNON的ACTIVIA, 94 用代糖的
:
: :)

avatar
a*l
87
Oh?
That's good then.

【在 n****w 的大作中提到】
: 真的吗?我觉得不是。 他用的是LOW FAT 牛奶,如果用代糖,成分上是要写出来的。
: 因为象孕妇,还有其他人是最好不用代糖的。
: 我今天的还没吃,又看了看成分,没有代糖;)

avatar
n*w
88
其实,我只喜欢他的VANILLA口味,就是觉得和小时候喝的感觉很象,很怀念。
我以前没有专门研究他的成分。是你说了代糖后,我才察了一下:http://www.activia.us.com/faqs.asp
我不喜欢加代糖的东西,口味很奇怪,而且我血糖一直指标正常,我也就没多苛刻自己
:)不过,我不太喝果汁,含糖饮料,哪怕在公司是免费拿的:)

【在 a****l 的大作中提到】
: Oh?
: That's good then.

avatar
r*f
89
frozen的东西一般顶多放三个月吧

【在 az 的大作中提到】
: frozen的买了,给老妈的,听说能治便秘,结果一放就放了1年多了,没市场啊,根本
: 没人吃,其实没啥味道,不好吃啊,如果娃吃的话,就给他买一点点新鲜的了,反正就
: 吃一点点

avatar
r*f
90
嗯, 而且个子整齐,哈哈,frozen strawberries也是。这个季节新鲜的strawberry
比夏天的味道还是差点。

【在 m**k 的大作中提到】
: 冻蓝梅好吃阿。hoho
avatar
r*f
91
放那么久,啥都不好吃了啊。。。

【在 az 的大作中提到】
: 不好意思,没吃出来啊,我老爸看着可惜,坚持吃了几次就放弃了
avatar
r*f
92
是说新鲜的放不新鲜了更差吧。

【在 j****s 的大作中提到】
: 我总觉得速冻的蔬菜水果营养差,有科学根据没?
avatar
r*f
93
好像听说超市的水果蔬菜是人工催熟的,farmer's market的不是,但是保存期也短些。

【在 j****s 的大作中提到】
: 这个也有道理呀。
: 超市里买的算放久的么?
: 现在卖的应该不是去年的吧。//fear

avatar
r*f
94
nod nod, I'd prefer sugar

【在 m**k 的大作中提到】
: 酸奶里面加很多糖的。
: 而且一些所谓的 'light' version.用代糖。我觉得还不如sugar.hehe

avatar
az
95
刚买来就没人吃啊,伴着糖,我妈都不吃,我爸坚持吃了几次啊,然后搬家给扔了吧

【在 r*f 的大作中提到】
: 放那么久,啥都不好吃了啊。。。
avatar
az
96
我家小朋友也很爱吃啊

【在 j****s 的大作中提到】
: 夏天的时候比较熟,味道好很多。我们家小朋友都爱吃,据说很有营养。
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。