我看了下IdWorker.scala还是比较好看懂的,不过这个workerid是怎么获取的啊,一个节可以有多个workerid么。还是说就是一个节点一个固定的workerid,然后通过客户端去通过某种策略决定从哪个节点取id。我看还用了zookeeper,这个听过,没具体看过。
1
wudikua OP |
2
yaroot Feb 8, 2014
以前看过这项目 没实际用过..代码很简单了...
zookeeper应该是做service discovery, 让客户端自己LB... id获取看SnowflakeServer.scala文件里应该是命令行参数, 这个配置生成很容易了 一个server一个workerid, 用zookeeper做保证. |
3
dianyong Feb 8, 2014
scala不是重点,逻辑很简单,就是根据ip,pid,time,random等获取一个唯一ID,任何语言都可以实现。
|
4
wudikua OP @yaroot 有道理,workerid和什么pid好像也没什么关系,可能是启动thrift server时候指定的,zookeeper只是防止workerid重复。我之前理解还以为一个thrift server启动了多个IdWorker,然后workerid是他们的pid。
|
5
wudikua OP |
6
wudikua OP 知道了,多个processor中sequence是共享的。
|