job schduleing# Programming - 葵花宝典h*n2015-11-30 08:111 楼8/1 RD9/26 FP10/11 AP10/13 4859月初受到FP通知,等了差不多一个月才让去打,不然估计还要快点。
m*h2015-11-30 08:112 楼我有这么一个production上的java app,一台server,每天早晨定点run一个job(Spring-Quartz),大概20分钟的模样。现在要把它搬到replicated VM/cluster里去,所以面临的问题是怎样实现cluster里schedule job的问题:保证还在同样的时间总有1个也只有1个job运行。我知道利用database write lock应该可以,但是这个系统本身并不带数据库,所以不想为了这个目的再单独install 和maintain个数据库,也没有zookeeper之类。所以面临的问题是需要一个简单可靠不折腾的办法。各位有什么建议没有?
g*g2015-11-30 08:114 楼没 zookeeper没数据库就写共享文件。本质是一样的。【在 m***h 的大作中提到】: 我有这么一个production上的java app,一台server,每天早晨定点run一个job(: Spring-Quartz),大概20分钟的模样。现在要把它搬到replicated VM/cluster里去: ,所以: 面临的问题是怎样实现cluster里schedule job的问题:保证还在同样的时间总有1个也: 只有1个job运行。我知道利用database write lock应该可以,但是这个系统本身并不: 带数据库,所以不想为了这个目的再单独install 和maintain个数据库,也没有: zookeeper之类。所以面临的问题是需要一个简单可靠不折腾的办法。各位有什么建议: 没有?
m*h2015-11-30 08:116 楼谢谢回答,不过没有NFS,也没有EBS,shared volume...这个job是从ElasticSearch里读数据输出报告,只有ES是现成可“写”的。BTW,我在试http://docs.hazelcast.org,以前没用过这个,不过看着挺neat,可以在app level组cluster,支持distributed map, cache, 包括lock。不过一个问题是cluster discovery (http://docs.hazelcast.org/docs/3.5/manual/html/hazelcastclusters.html):multicast经常在network这一层出问题production不是很实际,TCP/Unicast方式需要至少一个node的hostname或IP,这就牵扯更多了,service registry discovery越滚越大。
a*o2015-11-30 08:119 楼this is fast.cong baozi【在 h****n 的大作中提到】: 8/1 RD: 9/26 FP: 10/11 AP: 10/13 485: 9月初受到FP通知,等了差不多一个月才让去打,不然估计还要快点。
N*m2015-11-30 08:1110 楼你不单独维护数据库,为啥要单独维护一个hazelcast server?app level一样可以起个数据库【在 m***h 的大作中提到】: 谢谢回答,不过没有NFS,也没有EBS,shared volume...: 这个job是从ElasticSearch里读数据输出报告,只有ES是现成可“写”的。: BTW,我在试http://docs.hazelcast.org,以前没用过这个,不过看着挺neat,可以在app level组cluster,支持distributed map, cache, 包括lock。不过一个问题是cluster discovery (http://docs.hazelcast.org/docs/3.5/manual/html/hazelcastclusters.html):multicast经常在network这一层出问题production不是很实际,TCP/Unicast方式需要至少一个node的hostname或IP,这就牵扯更多了,service registry discovery越滚越大。
I*12015-11-30 08:1111 楼恭喜恭喜【在 h****n 的大作中提到】: 8/1 RD: 9/26 FP: 10/11 AP: 10/13 485: 9月初受到FP通知,等了差不多一个月才让去打,不然估计还要快点。
m*h2015-11-30 08:1112 楼我尝试用hazelcast主要是因问它可以embedded在app里,这样我所有的app 就自己组成一个cluster,可以share数据什么的import com.hazelcast.config.Config;import com.hazelcast.core.Hazelcast;import com.hazelcast.core.HazelcastInstance;import java.util.concurrent.locks.Lock;public class DistributedLock {public static void main(String[] args) {Config config = new Config();HazelcastInstance h = Hazelcast.newHazelcastInstance(config);Lock lock = h.getLock("my-distributed-lock");lock.lock();try {//do something here} finally {lock.unlock();}}}【在 N*****m 的大作中提到】: 你不单独维护数据库,为啥要单独维护一个hazelcast server?: app level一样可以起个数据库
N*m2015-11-30 08:1114 楼数据库也可以啊,随便搞个H2,jdbc一连就可以了,比hazelcast还简单hazelcast还没法persistent【在 m***h 的大作中提到】: 我尝试用hazelcast主要是因问它可以embedded在app里,这样我所有的app 就自己组成: 一个cluster,可以share数据什么的: import com.hazelcast.config.Config;: import com.hazelcast.core.Hazelcast;: import com.hazelcast.core.HazelcastInstance;: import java.util.concurrent.locks.Lock;: public class DistributedLock {: public static void main(String[] args) {: Config config = new Config();: HazelcastInstance h = Hazelcast.newHazelcastInstance(config);
g*g2015-11-30 08:1116 楼S3. Cheap and effective.【在 m***h 的大作中提到】: 谢谢回答,不过没有NFS,也没有EBS,shared volume...: 这个job是从ElasticSearch里读数据输出报告,只有ES是现成可“写”的。: BTW,我在试http://docs.hazelcast.org,以前没用过这个,不过看着挺neat,可以在app level组cluster,支持distributed map, cache, 包括lock。不过一个问题是cluster discovery (http://docs.hazelcast.org/docs/3.5/manual/html/hazelcastclusters.html):multicast经常在network这一层出问题production不是很实际,TCP/Unicast方式需要至少一个node的hostname或IP,这就牵扯更多了,service registry discovery越滚越大。
c*m2015-11-30 08:1120 楼他这个本来就一个instance在run, 可见也不是啥非常critical的东西。在现实工作里,节点当了一般会马上trigger alert, 这个时候来个人重启一下就好了。我个人觉得,这是最经济实惠又符合绝大多数工作环境的做法。如果需要自动fail over,我觉得你前面说的S3是最简单的方法。如果因为种种原因不允许跟外界通讯,那么次简单的方法就是在instance启动的时候start 一个listeningthread,跟其他instance 通讯。【在 g*****g 的大作中提到】: 结点当了就玩完了。
H*S2015-11-30 08:1122 楼Zookeeper + curator leader latch 是最不折腾但又可靠的方式了。【在 m***h 的大作中提到】: 我有这么一个production上的java app,一台server,每天早晨定点run一个job(: Spring-Quartz),大概20分钟的模样。现在要把它搬到replicated VM/cluster里去: ,所以: 面临的问题是怎样实现cluster里schedule job的问题:保证还在同样的时间总有1个也: 只有1个job运行。我知道利用database write lock应该可以,但是这个系统本身并不: 带数据库,所以不想为了这个目的再单独install 和maintain个数据库,也没有: zookeeper之类。所以面临的问题是需要一个简单可靠不折腾的办法。各位有什么建议: 没有?
a*x2015-11-30 08:1123 楼pai【在 h****n 的大作中提到】: 8/1 RD: 9/26 FP: 10/11 AP: 10/13 485: 9月初受到FP通知,等了差不多一个月才让去打,不然估计还要快点。
m*h2015-11-30 08:1124 楼谢谢各位的建议,汇报一下进展1,in-app cluster/data grid, Hazelcast, infra不可行,因为整个系统正向container方向转,infra team搞了一套东西,wrap了Kubernets 和 docker,但是有一个limit-只能有一个port forwarding,系统已经用来expose 8080了,这样Hazelcastnodes没办法通讯2,H2类似的embedded小db,也是同样的问题,cluster 需要hostname和open port。结论是要么用external db/s3/EBS/zookeeper,或者single container withmonitoring and restarting3,这个single container就是CDM建议的方向,infra有现成的,但是这个小job和一些Kafka的consumer绑在一起,不希望这些consumer局限于一个container,而剥离这两个module也麻烦。看来怎么都得折腾了。4,Kafka伴随的zookeeper,归另一个team,爱搭不理的。5,S3貌似在同一个region可以保证consistency,Netflix有个相关的open source http://techblog.netflix.com/2014/01/s3mper-consistency-in-cloud.html,可以做为选择6,我们另外一个数据处理的部分有可能用Cassandra,这也是个candidate,DBA team关系不错,头儿还是老中。上次用它还是0.6 version,估计变化很大了。
N*m2015-11-30 08:1126 楼s3mper用dynamodb那你还不如直接用dynamo得了Hazelcast【在 m***h 的大作中提到】: 谢谢各位的建议,汇报一下进展: 1,in-app cluster/data grid, Hazelcast, infra不可行,因为整个系统正向: container方向转,infra team搞了一套东西,wrap了Kubernets 和 docker,但是有一: 个limit-只能有一个port forwarding,系统已经用来expose 8080了,这样Hazelcast: nodes没办法通讯: 2,H2类似的embedded小db,也是同样的问题,cluster 需要hostname和open port。: 结论是要么用external db/s3/EBS/zookeeper,或者single container with: monitoring and restarting: 3,这个single container就是CDM建议的方向,infra有现成的,但是这个小job和一些: Kafka的consumer绑在一起,不希望这些consumer局限于一个container,而剥离这两个
N*02015-11-30 08:1127 楼cong!【在 h****n 的大作中提到】: 8/1 RD: 9/26 FP: 10/11 AP: 10/13 485: 9月初受到FP通知,等了差不多一个月才让去打,不然估计还要快点。
m*h2015-11-30 08:1128 楼确实,其实S3,还有Dynamodb和Cassandra本来都不是为我这个要求设计的。技术的选择经常更多基于技术之外的因素。如果另外一个project用C*的话,可能就搭那趟车了。关于Cassandra...java driver我记得早年用Vector很多,现在似乎推荐DataStax自己的了?【在 N*****m 的大作中提到】: s3mper用dynamodb: 那你还不如直接用dynamo得了: : Hazelcast
a*o2015-11-30 08:1129 楼恭喜恭喜!!!【在 h****n 的大作中提到】: 8/1 RD: 9/26 FP: 10/11 AP: 10/13 485: 9月初受到FP通知,等了差不多一个月才让去打,不然估计还要快点。
k*n2015-11-30 08:1130 楼一般需要一个queue.. cluster server workers 到queue 里取job 运行...【在 m***h 的大作中提到】: 我有这么一个production上的java app,一台server,每天早晨定点run一个job(: Spring-Quartz),大概20分钟的模样。现在要把它搬到replicated VM/cluster里去: ,所以: 面临的问题是怎样实现cluster里schedule job的问题:保证还在同样的时间总有1个也: 只有1个job运行。我知道利用database write lock应该可以,但是这个系统本身并不: 带数据库,所以不想为了这个目的再单独install 和maintain个数据库,也没有: zookeeper之类。所以面临的问题是需要一个简单可靠不折腾的办法。各位有什么建议: 没有?
h*82015-11-30 08:1139 楼congrats!【在 h****n 的大作中提到】: 8/1 RD: 9/26 FP: 10/11 AP: 10/13 485: 9月初受到FP通知,等了差不多一个月才让去打,不然估计还要快点。
p*a2015-11-30 08:1140 楼gx gxI am hoping this is a good precedent for all newly filed I485s.【在 h****n 的大作中提到】: 8/1 RD: 9/26 FP: 10/11 AP: 10/13 485: 9月初受到FP通知,等了差不多一个月才让去打,不然估计还要快点。
r*e2015-11-30 08:1146 楼cong. baozi【在 h****n 的大作中提到】: 8/1 RD: 9/26 FP: 10/11 AP: 10/13 485: 9月初受到FP通知,等了差不多一个月才让去打,不然估计还要快点。
M*y2015-11-30 08:1147 楼gx!【在 h****n 的大作中提到】: 8/1 RD: 9/26 FP: 10/11 AP: 10/13 485: 9月初受到FP通知,等了差不多一个月才让去打,不然估计还要快点。
k*o2015-11-30 08:1152 楼Cong! baozi【在 h****n 的大作中提到】: 8/1 RD: 9/26 FP: 10/11 AP: 10/13 485: 9月初受到FP通知,等了差不多一个月才让去打,不然估计还要快点。
p*f2015-11-30 08:1153 楼congrats!!!【在 h****n 的大作中提到】: 8/1 RD: 9/26 FP: 10/11 AP: 10/13 485: 9月初受到FP通知,等了差不多一个月才让去打,不然估计还要快点。
s*a2015-11-30 08:1155 楼cong【在 h****n 的大作中提到】: 8/1 RD: 9/26 FP: 10/11 AP: 10/13 485: 9月初受到FP通知,等了差不多一个月才让去打,不然估计还要快点。
C*M2015-11-30 08:1159 楼恭喜,谢谢分享!看这个过程,485比AP只晚两天。那么说对于新交的485,AP批了意味着485也在批的过程了。很好的消息。【在 h****n 的大作中提到】: 8/1 RD: 9/26 FP: 10/11 AP: 10/13 485: 9月初受到FP通知,等了差不多一个月才让去打,不然估计还要快点。
s*n2015-11-30 08:1161 楼I submitted my 485 on Aug. 4 and did my fingerprint on Sep. 22, but stillwaiting. TSC. I hope I will get mine soon.