开源软件名称:snowflake
开源软件地址:https://gitee.com/javashop/snowflake
开源软件介绍:
snowflake sn creater介绍基于Snowflake算法的发号器,包括集成在spring boot的示例。本代码适合将发号器嵌入在应用内部,而非独立的生成器app。 侧重点采用Snowflake算法,主要目的放在解决机器id的生成方面。尤其是在基于容器(docker、k8s)等部署时,自动扩容机器id自动生成、唯一性的保证。 思路难点在于扩容时,产生的一个app多个实例。通过的app启动时在redis中注册自己,同时存在一个心跳,定时向redis中报告自己的存活。如果挂掉,reids里面清掉自己的实例,根据实例的情况运算workid。 使用 @Autowired SnCreator snCreator; public String test() { String id = snCreator.create(1); return id; } 其中create的参数是子业务id,不同模块调用时加以区分。 整合如果要整合进自己的app,参考JavashopAppRunner,使应用在启动时,注册自己的实例: @Component@Order(value = 1)public class JavashopAppRunner implements ApplicationRunner { @Autowired protected InstanceContext instanceContext; @Override public void run(ApplicationArguments args) throws Exception { //注册本实例 instanceContext.register(); }} Javashop开源出品 |
请发表评论