Vesta 是一款通用的 ID产生器,互联网俗称统一发号器,其具有几大很具有优势的特性:
-
全局唯一
-
粗略有序
-
可反解
-
可制造
-
分布式
而且支持三种发布模式:
- 嵌入式发布模式
- 中心服务器发布模式
- REST 发布模式
根据业务的性能需求,它可以产生 最大峰值型 和 最小粒度型 两种类型的 ID,它的实现架构使其具有高性能,高可用和可伸缩等互联网产品需要的质量属性,是一款通用的高性能的发号器产品。
本文就在 Spring Boot项目中将 Vesta耍起来!
基础工程搭建
Spring Boot基础工程的搭建我不再赘述,创建好工程后 pom中需要加入如下依赖:
对应的 Jar包去编译一下 Vesta源码即可获得
Vesta 配置导入
- 在项目resources目录中加入 Vesta的配置文件
引入vesta-rest.properties,配置如下:
引入 vesta-rest-main.xml,配置如下:
好,接下来我们创建一个 Config配置类来将 vesta-rest-main.xml配置文件加载进项目
- 创建 UidConfig配置类
编写 Vesta Service
这里面包含的是和 ID生成器相关的几个重要工具接口,主要有:
- genId 生成全局唯一 ID号
- explainId 反解全局唯一 ID号,得到可以解释 ID号含义的 JSON数据
- makeId 手工制造 ID
来看代码吧
编写测试 Controller
我们针对上述 UidService中提供的三个工具接口来各自编写一个测试接口:
实验验证
- 实验一
首先我们用浏览器调用接口 genid,来返回生成的全局唯一 ID流水号,一切都是那么的简单优雅:
- 实验二
由于 Vesta生成的全局唯一流水号具有 可反解 的优良特性,因此我们可以先生成一个流水号,然后调用 expid接口来反解出流水号所代表的意义:
后 记
由于能力有限,若有错误或者不当之处,还请大家批评指正,一起学习交流!
希望此文能帮到大家的同时,也听听大家的观点。欢迎留言讨论,加关注,分享你的高见!持续更新!
我本人邀约各大BATJ架构大牛共创Spring Boot构建微服务架构的交流社区。 (群号:364677697)欢迎各路架构师、开发者,学习与交流使用Spring Boot诸多强大组件的实战经验。
为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!
合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!
- To-陌霖Java架构
分享互联网最新文章 关注互联网最新发展