微服架構的論述
搭建微服架構
一、什麼是微服架構
簡單的說就是將一個整體的應用按照一定的規則拆分成一個個獨立的應用,這些獨立的應用後面又組合成了一個整體的應用。
比如說一個部落格系統,我可能包含了發表文章,使用者登入,使用者評論等功能,如果是一個單一的應用這些功能都會包含在這個應用裡面。
而如果是微服架構 這些功能可能會包含在 文章服務,使用者服務,評論服務裡面。
這是我簡單寫的一個微服例子

整體實現了發文章,瀏覽文章。使用者登入,使用者評論的功能。
分別有 使用者服務,文章服務,評論服務,檔案服務組成。
二、微服架構遇需要考慮的問題
-
服務的編排
我的系統需要怎麼要劃分我的服務,一個是按照業務功能劃分,每個服務只負責單一的業務。
服務劃分的太細導致服務偏多,對於維護和開發都會增加不少難度,劃分的太粗,又可能達不到當初使用微服的預想。所以採用微服架構前服務的劃分要詳細考慮。
-
分散式事物
由於系統劃分成為了 一個個獨立的系統,個個系統之間的採用 REST API方式,本地事物無法使用與誇多個系統的事物。所以分散式事物是微服需要解決的重中之重。一般微服的事物多采用可靠事件處理。後面出再討論。
-
誇表查詢
不同的服務,資料庫是不共享的,都有獨立的資料庫,所以 查詢的時候不能 採用單體架構 的 join 等語句與跨表查詢,查詢方面增加了不少難度。
-
持續整合與部署
微服的持續整合相對於單體應用要複雜的多,應為你有更多的服務需要部署,部署的時候你需要更多的硬體裝置。所以微服常常會與docker一起使用,方便整合與服務擴容。
-
測試
微服的測試,由於服務的劃分,不僅需要對單獨的服務進行測試還需要對整體的功能進行測試。對測試也提高了一個難度。
-
微服架構的優點
1. 靈活,個個服務相互獨立執行
2. 可以選擇不同的技術棧,不同的資料庫等
3. 服務之間的解耦,每個服務只關心自己的事情
4. 便於維護與開發
5. 配合docker 更方便的擴容。
三、服務的開發框架 spring cloud
spring cloud 集成了微服常用的元件,包含了服務的註冊與發現,服務呼叫,負載均衡,熔斷,監控,配置管理,服務閘道器等。配合spring 龐大的技術站,spring cloud也漸漸成為了 微服的代名詞。
主要的一些元件:
- 服務發現——Netflix Eureka
- 客服端負載均衡——Netflix Ribbon
- 斷路器——Netflix Hystrix
- 服務閘道器——Netflix Zuul
- 分散式配置——Spring Cloud Config
本文的重點是你有沒有收穫與成長,其餘的都不重要,希望讀者們能謹記這一點。同時我經過多年的收藏目前也算收集到了一套完整的學習資料,包括但不限於:分散式架構、高可擴充套件、高效能、高併發、Jvm效能調優、Spring,MyBatis,Nginx原始碼分析,Redis,ActiveMQ、、Mycat、Netty、Kafka、Mysql、Zookeeper、Tomcat、Docker、Dubbo、Nginx等多個知識點高階進階乾貨,希望對想成為架構師的朋友有一定的參考和幫助
需要更詳細思維導圖和以下資料的可以加一下技術交流分享群:“708 701 457”免費獲取



