文|作者|文大師
/本文屬原創(chuàng)铡恕,轉載請聯(lián)系
因為工作原因翰萨,無暇更新脏答,最近更新的技術文章還要追溯到去年9月份,近期會恢復更新,還是以spring系列為主殖告,上一次講述了spring-security-oauth2
的相關應用阿蝶,簡單定制適合中小項目,最近正在學習spring-cloud
微服務架構黄绩,遂決定記錄在此以作學習交流之用羡洁。
隨著項目規(guī)模擴大以及業(yè)務分化,模塊服務化成為必然爽丹,spring.io
因為具備良好的生態(tài)結構筑煮,微服務架構spring-cloud
應運而生,微服務通常伴隨著分布式系統(tǒng)的建立粤蝎,至于微服務的各種利弊真仲,這里就不再贅述了,自請搜索各大社群查看诽里。這里主要講我自己的看法袒餐,國內一般都是使用Dubbo
+ZooKeeper
實現(xiàn)分布式系統(tǒng),但個人拙見谤狡,RPC
協(xié)議不可避免的代碼層面的耦合度問題讓我始終沒有好感灸眼,REST Full
的微服務模式對于國內多變的業(yè)務和各種變態(tài)的產品需求變更顯得更加親民,故在此選擇spring-cloud
構建微服務框架墓懂,本章屬完全理論知識概括焰宣,無實際內容,已了解的同學可直接略過捕仔。
無論是Dubbo或是別的分布式框架匕积,理論上的框架結構都是相似的,區(qū)別僅在于各實現(xiàn)不同而已榜跌,一個好的架構體系應該是考慮實際業(yè)務選用不同的實現(xiàn)來最終滿足產品業(yè)務的需要闪唆,先來看看分布式一般應該具備的基礎服務:
以上是我認為的最小基礎服務,本系列文章也將圍繞這些基礎服務構建一個微服務基礎架構钓葫,至于其他理論知識點都不在本系列文章討論悄蕾,只關注實用性,代碼本身也盡量不涉及邏輯業(yè)務础浮,目標是最后集成Docker
做到開箱即用帆调,因為本人也是初學,代碼可能數(shù)次更新豆同,照慣例每次更新都會有一篇文章介紹番刊,代碼會打上tag
發(fā)布到https://github.com/kaenry,錯誤與改進希望大家指正影锈。
先說說目前已看到的缺點:
-
spring
生態(tài)雖然看似完整芹务,但是屬于嚴格的Java
體系蝉绷,與其他語言配合會非常吃力,再者現(xiàn)在稍微大點的項目都會集成很多不同語言環(huán)境锄禽,比如最近風靡的NodeJS
等潜必,這是可以預見的最大缺陷 - 分布式事務是一個非常棘手的問題,在本次實戰(zhàn)中將采用分化服務沃但,將事務控制在單一服務中從設計上避開此問題磁滚,感興趣的同學可搜索冪等性了解更多
- 部署可能成為難點
技術選型暫定為Gradle
多模塊構建項目,jdk 1.8
編譯環(huán)境宵晚,spring boot 1.5+
垂攘,spring cloud Dalston.RELEASE
,DAO
層目前在JPA
和MyBatis
之間徘徊淤刃,服務之間調用采用REST
晒他,工具利用RestTemplate
,前端頁面采用Vue 2
逸贾,可能會使用SSR Nuxt
陨仅,緩存使用Redis
,隊列使用Rabbit
铝侵,模擬使用GitHub API...
/
以上
我的博客即將搬運同步至騰訊云+社區(qū)灼伤,邀請大家一同入駐:https://cloud.tencent.com/developer/support-plan?invite_code=3b89y7er14g04