ZhiChaoLiu

Results 1 comments of ZhiChaoLiu

SegmentIDGenImpl.updateSegmentFromDb()是每个segment初始化的时候要去执行的。里面有这样的逻辑: if (!buffer.isInitOk()) { leafAlloc = dao.updateMaxIdAndGetLeafAlloc(key); buffer.setStep(leafAlloc.getStep()); buffer.setMinStep(leafAlloc.getStep());//leafAlloc中的step为DB中的step } 初始化(仅执行一次)segment的buffer的时候,这块的updateMaxIdAndGetLeafAlloc就是更新db的max = max + step. 所以,多机起来的时候,同一个biztag的segment后面的机器的maxid都会比前一个大一个step. 同时,后面在set的Value是这样的: long value = leafAlloc.getMaxId() - buffer.getStep(); 这样就解决了多机部署问题。 其实官方的图挺清晰的: ![image](https://user-images.githubusercontent.com/13878193/188110554-1fc24ea5-7fa6-4f9e-8c73-1e02bb036a6b.png)