多机的Sequence问题与处理
背景
数据库拆分之后,会引入诸多新的问题,其中之一就是,以MySQL为例,原先单表的时候,
可以通过MySQL自带的auto_increment实现自增不重复id,现在用不了了。数据库层面
做不了必须引入中间件去解决。
id的特点
唯一性(刚需或者说是硬性要求)
连续性
分布式系统中可以使用一个独立的ID生成器服务有以下问题需要解决
性能问题? 每次远程取id都会有损耗。
- 改进方案 一次取一段id,然后缓存在本地,缺点是,万一应用宕机,整段id浪费。
生成器的稳定性, 其实生成器的稳定性可以依赖于业务库的稳定性,不要求(4个9?)的稳定性,因为万一业务库挂了,生成器可用也是没卵用的。
- 存储的问题。
好了有了以上思路下面我们自己动手写一个简单的多机的sequencer