在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了一本名为 Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素) 的书,该书首次提到了软件开发中设计模式的概念,四位作者合称 GOF(全拼 Gang of Four),简称四人帮!
前段时间,阿粉在公司做功能的时候,出现了一个比较别致的需求,需要在页面上显示辛丑年x月x日,于是阿粉就在想,这个天干地支这玩意是不是有人做过封装,能不能整合到Utils里面,以后都一起使用吧,于是就在 Google 上开始搜索有关的内容,结果不搜不知道,一搜吓一跳,直接出现了一个完整的封装好的 Jar 可以直接使用,于是阿粉就把这个 Jar 包的依赖加入到了自己的项目中,而且去源码中扒拉了一下,感觉里面东西真心不错,于是决定分享给大家一下。
首先说下我们为什么需要分布式 ID,以及分布式 ID 是用来解决什么问题的。当我们的项目还处于单体架构的时候,我们使用数据库的自增 ID 就可以解决很多数据标识问题。但是随着我们的业务发展我们的架构就会逐渐演变成分布式架构,那么这个时候再使用数据的自增 ID 就不行了,因为一个业务的数据可能会放在好几个数据库里面,此时我们就需要一个分布式 ID 用来标识一条数据,因此我们需要一个分布式 ID 的生成服务。那么分布式 ID 的服务有什么要求和挑战呢?