基于SpringCloud體系實現(xiàn)的一套支持云原生的分布式微服務架構捆憎,提供OAuth2/JWT權限認證舅柜、分布式事務、灰度躲惰、限流致份、鏈路追蹤等功能,支持Docker容器化部署础拨、鏡像交付知举、K8S容器編排

Lion 項目簡介

項目已托管至Github,請前往https://github.com/micyo202/lion查看源碼
項目鏡像已經推送至Docker Hub太伊,請前往https://hub.docker.com/u/micyo202查看/拉取
感謝JetBrains提供的開源許可雇锡,推薦使用IntelliJ IDEA進行開發(fā)

lion是基于Spring Cloud體系實現(xiàn)的一套支持云原生的分布式微服務架構,為了讓中小型公司解決當下技術瓶頸僚焦,快速將現(xiàn)有應用服務架構拆分改造為分布式微服務架構锰提,進入 All-in-Cloud 時代,只需在本架構上進行相關業(yè)務開發(fā)即可芳悲,大大減少了分布式微服務架構的門檻立肘,僅在本框架上做"減法"的目的,使架構師及開發(fā)人員不必過多的關注架構本身名扛,只需專注于業(yè)務開發(fā)

項目采用 Gradle 構建谅年,基于 Java 8/11/13、SpringBoot 2.2.6.RELEASE肮韧、SpringCloud Hoxton.SR2融蹂、Spring Cloud Alibaba 2.2.0.RELEASE、MyBatis Plus 3.3.1 等核心技術體系實現(xiàn)的一套支持云原生的分布式微服務架構弄企,提供 OAuth2/JWT 權限認證超燃、分布式事務、灰度拘领、限流意乓、熔斷降級、分布式鎖约素、鏈路追蹤届良、MQ等功能,支持 Docker 容器化部署圣猎、鏡像交付士葫、K8S容器編排

使用Nacos作為服務注冊/發(fā)現(xiàn)、配置中心

使用Sentinel來查看近實時的接口運行狀態(tài)和調用頻率样漆,并用作服務限流为障、熔斷降級等處理晦闰,避免了分布式服務之間調用的“雪崩”效應

使用Seata作為分布式事務管理放祟,采用AT事務模式自動完成兩階段提交/回滾

使用Spring Boot Admin來監(jiān)控各個獨立Service的運行狀態(tài)

使用Spring Cloud Gateway作為路由網(wǎng)關服務

使用Zipkin / SkyWalking進行查看完整鏈路追蹤信息等

使用Feign, 做到HTTP請求遠程服務時能與調用本地方法一樣的編碼體驗鳍怨,開發(fā)者完全感知不到這是遠程方法,更感知不到這是個HTTP請求

項目后期會不斷更新與時俱進跪妥,敬請期待...

分支說明

  • master分支鞋喇,支持Java 8/11/13重構升級優(yōu)化后的最新版(推薦)
  • release1.x分支,基于Java 8眉撵、SpringBoot 2.1.2.RELEASE侦香、SpringCloud Greenwich.RELEASE、Spring Cloud Alibaba 2.1.0.RELEASE體系實現(xiàn)纽疟,支持Java罐韩、Scala混編,的最終版
  • eureka分支污朽,使用 Eureka 作為服務注冊發(fā)現(xiàn)中心(Eureka官宣2.x版本不再開源散吵,項目使用Nacos)
  • hystrix分支,使用 Hystrix 做為服務斷路器(Hystix官宣停止更新蟆肆,項目使用Sentinel)
  • zuul分支矾睦,使用 Zuul 做為路由網(wǎng)關(由于Zuul 2.x的不斷跳票,SpringCloud后續(xù)沒有整合Zuul 2.x的計劃炎功,項目使用Spring Cloud Gateway)

項目架構圖

數(shù)據(jù)庫表關系圖

一枚冗、項目開發(fā)環(huán)境&工具

  • MacOS / Windows
  • CentOS
  • Java 8/11/13
  • IntelliJ IDEA / Eclipse

二、相關軟件

說明:“√”表示必要服務蛇损,“X”表示非必要服務

名稱 鏈接 必須
MySql 8.0.19 https://www.mysql.com
Redis 5.0.7 https://redis.io
RabbitMQ 3.8.2 https://www.rabbitmq.com
Nacos 1.1.4 https://nacos.io
Sentinel 1.7.1 https://github.com/alibaba/Sentinel
Seata 1.0.0 https://seata.io
Zipkin 2.20 https://zipkin.io x
SkyWalking 6.6.0 http://skywalking.apache.org x
ElasticSearch 7.6.1 https://www.elastic.co/cn/ x

注:在啟動項目前赁温,請先確保啟動:MySql 8.0.19Redis 5.0.7淤齐、RabbitMQ 3.8.2束世、Nacos 1.1.4Sentinel 1.7.1床玻、Seata 1.0.06個必備服務(需把Sentinel默認端口8080改為8858

三毁涉、組件說明

  • 服務注冊/發(fā)現(xiàn)、配置中心:Nacos
  • 服務監(jiān)控:Spring Boot Admin
  • 消息隊列:AMQP -> RabbitMQ
  • 負載均衡:Feign / Ribbon
  • 限流锈死、熔斷降級:Sentinel
  • 路由網(wǎng)關:Spring Cloud Gateway
  • 鏈路追蹤:Spring Cloud Sletuh -> Zipkin / SkyWalking
  • 權限認證:Spring Security -> OAuth2 / JWT
  • ORM框架:MyBatis(MyBatis-Plus)
  • 數(shù)據(jù)源監(jiān)控:Druid
  • RESTful APIs文檔:Knife4j
  • 分布式鎖:Redisson
  • 分布式事物:Seata

四贫堰、項目結構

lion -- 根目錄
├── lion-admin -- 服務監(jiān)控
├── lion-gateway -- 網(wǎng)關服務
├── lion-common -- 通用工具類
├── lion-auth -- 安全認證服務
├── lion-demo -- 示例模塊
|    ├── lion-demo-provider -- 服務提供者
|    ├── lion-demo-consumer -- 服務消費者

五、項目部署

1待牵、下載項目git clone --depth 1 https://github.com/micyo202/lion.git

2其屏、進入項目根目錄執(zhí)行./gradlew -x test clean命令,使用Gradle初始化項目

3缨该、初始化完畢后導入到IDE開發(fā)工具中(建議使用IntelliJ IDEA作為開發(fā)工具

4偎行、創(chuàng)建3個數(shù)據(jù)庫分別為lion、seata、zipkin并分別執(zhí)行項目根目錄下database中的lion.sql蛤袒、seata.sql熄云、zipkin.sql腳本,該腳本會創(chuàng)建項目所需的表(lion庫中包含:用戶表妙真、角色表缴允、菜單資源表等,seata庫中包含:全局事務表珍德、分支事務表练般、全局鎖表,zipkin庫中包含:鏈路追蹤相關表)

5锈候、參考文檔中二薄料、相關軟件的內容,啟動6個必備服務泵琳,否則項目無法正常運行

6都办、根據(jù)自己的服務器情況,修改resourcesbootstrap.yml配置中的nacos服務地址虑稼,及application.yml配置中mysql琳钉、redis、rabbitmq蛛倦、sentinel的服務地址跟用戶名/密碼(注:可將application.yml配置文件注釋打開放在項目中歌懒,或將application.yml配置文件放入nacos配置管理中
7、完成以上步驟就可以正常啟動部署服務了

8溯壶、項目開發(fā)詳細示例代碼及皂,可參考lion-demo示例模塊

9、測試方法使用postman導入項目根目錄下json中的postman.json腳本即可

六且改、端口使用

  • Nacos(端口:8848)

  • Sentinel(端口:8858)

  • Seata(端口:8091)

  • Zipkin(端口:9411)

  • SkyWalking(端口:8900)

  • lion-admin(端口:8200)

  • lion-gateway(端口:8400)

  • lion-auth(端口:8888)

  • lion-demo

    • lion-demo-provider(端口:8601验烧、8602、8603...)
    • lion-demo-consumer(端口:8701又跛、8702碍拆、8703...)

七、效果預覽

Nacos服務列表

Nacos配置列表

Nacos服務詳情

Boot Admin應用監(jiān)控

Boot Admin應用列表

Boot Admin應用詳情

Sentinel服務限流慨蓝、熔斷降級

Zipkin鏈路信息

Zipkin鏈路追蹤

Zipkin拓撲圖

SkyWalking監(jiān)控面板

SkyWalking鏈路追蹤

SkyWalking拓撲圖

Druid SQL監(jiān)控

Druid URI監(jiān)控

Druid Spring監(jiān)控

RESTful APIs文檔

八感混、開源協(xié)議

Apache Licence 2.0英文原文)Apache Licence 是著名的非盈利開源組織 Apache 采用的協(xié)議。該協(xié)議和 BSD 類似礼烈,同樣鼓勵代碼共享和尊重原作者的著作權弧满,同樣允許代碼修改,再發(fā)布(作為開源或商業(yè)軟件)此熬。需要滿足的條件也和 BSD 類似:

  • 需要給代碼的用戶一份 Apache Licence
  • 如果你修改了代碼庭呜,需要在被修改的文件中說明
  • 在延伸的代碼中(修改和有源代碼衍生的代碼中)需要帶有原來代碼中的協(xié)議滑进,商標,專利聲明和其他原來作者規(guī)定需要包含的說明
  • 如果再發(fā)布的產品中包含一個 Notice 文件募谎,則在 Notice 文件中需要帶有 Apache Licence扶关。你可以在 Notice 中增加自己的許可,但不可以表現(xiàn)為對 Apache Licence 構成更改

Apache Licence 也是對商業(yè)應用友好的許可近哟。使用者也可以在需要的時候修改代碼來滿足需要并作為開源或商業(yè)產品發(fā)布/銷售

注:對未經過授權和不遵循 Apache Licence 2.0 開源協(xié)議二次開源或者商業(yè)化的我們將追究到底

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末驮审,一起剝皮案震驚了整個濱河市鲫寄,隨后出現(xiàn)的幾起案子吉执,更是在濱河造成了極大的恐慌,老刑警劉巖地来,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件戳玫,死亡現(xiàn)場離奇詭異,居然都是意外死亡未斑,警方通過查閱死者的電腦和手機咕宿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蜡秽,“玉大人府阀,你說我怎么就攤上這事⊙客唬” “怎么了试浙?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長寞蚌。 經常有香客問我田巴,道長,這世上最難降的妖魔是什么挟秤? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任壹哺,我火速辦了婚禮,結果婚禮上艘刚,老公的妹妹穿的比我還像新娘管宵。我一直安慰自己,他們只是感情好攀甚,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布啄糙。 她就那樣靜靜地躺著,像睡著了一般云稚。 火紅的嫁衣襯著肌膚如雪隧饼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天静陈,我揣著相機與錄音燕雁,去河邊找鬼诞丽。 笑死,一個胖子當著我的面吹牛拐格,可吹牛的內容都是我干的僧免。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼捏浊,長吁一口氣:“原來是場噩夢啊……” “哼懂衩!你這毒婦竟也來了?” 一聲冷哼從身側響起金踪,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤浊洞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后胡岔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體法希,經...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年靶瘸,在試婚紗的時候發(fā)現(xiàn)自己被綠了苫亦。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡怨咪,死狀恐怖屋剑,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情诗眨,我是刑警寧澤唉匾,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站辽话,受9級特大地震影響肄鸽,放射性物質發(fā)生泄漏。R本人自食惡果不足惜油啤,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一典徘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧益咬,春花似錦逮诲、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至冗锁,卻和暖如春齐唆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背冻河。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工箍邮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留茉帅,地道東北人。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓锭弊,卻偏偏與公主長得像堪澎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子味滞,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353