<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
今天跟大家介紹一個開源專案:id-maker,主要功能是用來在分散式環境下生成唯一 ID。上週停更了一週,也是用來開發和測試這個專案的相關程式碼。
美團有一個開源專案叫 Leaf,使用 Java 開發。本專案就是在此思路的基礎上,使用 Go 開發實現的。
專案整體程式碼量並不多,不管是想要在實際生產環境中使用,還是想找個專案練手,我覺得都是一個不錯的選擇。
在大部分系統中,全域性唯一 ID 都是一個強需求。比如快遞,外賣,電影等,都需要生成唯一 ID 來保證單號唯一。
那業務系統對 ID 號的要求有哪些呢?
在此背景下,有一個高可用的唯一 ID 生成系統就很重要了。
生成 ID 分兩種方式:
使用上提供兩種方式來呼叫介面:
1、健康檢查:
curl http://127.0.0.1:8080/ping
2、獲取 ID:
獲取 tag 是 test 的 ID:
curl http://127.0.0.1:8080/v1/id/test
3、獲取雪花 ID:
curl http://127.0.0.1:8080/v1/snowid
1、獲取 ID:
grpcurl -plaintext -d '{"tag":"test"}' -import-path $HOME/src/id-maker/internal/controller/rpc/proto -proto segment.proto localhost:50051 proto.Gid/GetId
2、獲取雪花 ID:
grpcurl -plaintext -import-path $HOME/src/id-maker/internal/controller/rpc/proto -proto segment.proto localhost:50051 proto.Gid/GetSnowId
# Run MySQL $ make compose-up # Run app with migrations $ make run
專案使用 go-clean-template 架構模板開發,目錄結構如下:
下面對各目錄做一個簡要說明:
借用官方的兩張圖:
整體的層次關係是這樣的,最裡面是 models,定義我們的表結構,然後中間是業務邏輯層,業務邏輯層會提供介面,給最外層的 API 來呼叫,最外層就是一些工具和呼叫入口。
這樣做的最大好處就是解耦,不管最外層如何變化,只要在業務邏輯層實現對應介面即可,核心程式碼可能根本不需要改變。
所以,它們之間的呼叫關係看起來是這樣的:
HTTP > usecase usecase > repository (Postgres) usecase < repository (Postgres) HTTP < usecase
以上就是本專案的全部內容,如果大家感興趣的話,歡迎給我留言交流,要是能給個 star 那就太好了。
專案地址:https://github.com/yongxinz/id-maker
往期文章:
推薦閱讀:
https://github.com/evrone/go-clean-template
https://github.com/hwholiday/gid
https://github.com/Meituan-Dianping/Leaf
以上就是Go開源專案分散式唯一ID生成系統的詳細內容,更多關於Go分散式唯一ID生成系統的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45