我在建設乙個租房平台,進行基於租房業務的架構實踐。在寫業務**的時候發現我需要乙個id生成器用於生成各種id和單據編號資訊。
id生成器基於分布式打造,滿足高可用性
支援分庫分表id生成的需求
支援各種業務單據編號生成的管理需求
具有視覺化配置頁面
盡量找開源並滿足上述需求的專案,萬不得已不自己開發
梳理完我的需求之後我開始了在全網尋找id生成器專案之旅。
分布式id生成器的方案之前調研過,起碼有6種,單說id生成器則有uuid和snowflake.這裡簡單羅列下實現方案:
uuid 生成
snowflake演算法生成
基於mysql 自增主鍵實現
基於redis 自增實現
基於zookeeper 檔案序號實現
基於封裝的美團開源leaf實現
基於封裝的滴滴開源tinyid
上面都是比較優秀的分布式id生成實踐專案,這裡我對
這個專案比較感興趣。通過對這個專案的深入了解確實滿足了我最初對id生成的需求。後面我開始了基於這個專案的應用實戰過程。
核心依賴關係
圖(1)核心依賴關係,出自原作者github readme.
核心流程圖
圖(2)核心流程圖,出自原作者github readme.
專案結構和依賴
註冊中心:zookeeper、eureka多種註冊中心
資料庫儲存:mysql
快取:redis
啟動流程
由於服務依賴快取或者資料庫,因此需要先啟動資料庫或者快取,這裡我們使用redis作為儲存,
1.先啟動本地的redis服務。
2.啟動服務之前先將common/core/metric 工程install到本地
3.啟動dashbord工程,訪問http://localhost:6082/,這個工程類似與id配置管理的控制台,所以單獨起乙個springboot服務,這裡前端js載入需要一定的時間,因此首次訪問需要等一小會兒。
4.在視覺化頁面中配置一定規則,如下圖:
5.啟動id-generator-******工程,這裡相當於id-generator工程對外暴露的api服務,將控制台和id獲取分為兩個工程,增加了可用性。
6.訪問http://localhost:6080/generate/id?key=&num=,或者訪問http://localhost:6080/generate/guid?num=即可看到生成的id
這個id-generator工程以springboot的方式構建,同時支援融合主流框架,並具有簡單的視覺化頁面配置,因此可以進行二次開發和整合。
動態畫echarts vue專案
暫時沒接資料,後台介面還沒寫,寫好了更新 let classname document.getelementsbyclassname classname for 在init上面console的時候是可以獲取子元素的,但是放在init裡面就報 this.dom.getcontext is not a ...
旅遊專案第2天
1.在index.html頁面裡發請求 確定是否要傳參 2.在servlet裡 準備頁面需要的資料 在service裡把三類資料封裝到乙個map 把map返回給servlet 處理結果 把map放到resultinfo裡 把resultinfo轉換成json,返回客戶端 3.在index.html頁...
Swift 一天學會,三天寫專案
最近v4.0框架班馬上要開班,很多同學有點焦慮!問為什麼?不會swift,完全沒有接觸過啊!內心換成一批 和諧學習,不急不躁!有我cooci在,你們怕啥!專門為大家寫下這篇部落格,一天快速入門swift,三天寫專案 很快就是週末了,希望你讀完這篇部落格之後這個週末的時間請留給 swift談到語法,我...