微服務一站式解決方案SpringCloud
什麼是微服務架構
我們知道分散式強調系統的拆分,其實微服務也是強調系統的拆分,微服務架構屬於分散式架構的範疇;
並且到目前為止,微服務並沒有一個統一的標準的定義,那麼微服務究竟是什麼?
微服務一詞源於Martin Fowler(馬丁.福勒)的名為 Microservices 的博文, 可以在他的官方部落格上找到這篇文章:http://martinfowler.com/articles/microservices.html
中文翻譯版本:https://www.martinfowler.cn/articles/microservices.html
簡單地說, 微服務是系統架構上的一種設計風格, 它的主旨是將一個原本獨立的系統拆分成多個小型服務,這些小型服務都在各自獨立的程式中執行,服務之間通過基於HTTP的RESTful API進行通訊協作;
被拆分後的每一個小型服務都圍繞著系統中的某一項業務功能進行構建, 並且每個服務都是一個獨立的專案,可以進行獨立的測試、開發和部署等;
由於各個獨立的服務之間使用的是基於HTTP的JSON作為資料通訊協作的基礎,所以這些微服務可以使用不同的語言來開發;
微服務架構的優缺點
1、我們知道微服務架構是將系統中的不同功能模組拆分成多個不同的服務,這些服務進行獨立地開發和部署,每個服務都執行在自己的程式內,這樣每個服務的更新都不會影響其他服務的執行;
2、由於每個服務是獨立部署的,所以我們可以更準確地監控每個服務的資源消耗情況,進行效能容量的評估,通過壓力測試,也很容易發現各個服務間的效能瓶頸所在;
3、由於每個服務都是獨立開發,專案的開發也比較方便,減少程式碼的衝突、程式碼的重複,邏輯處理流程也更加清晰,讓後續的維護與擴充套件更加容易;
4、微服務可以使用不同的程式語言進行開發;
但是在系統架構領域關於微服務架構也有一些爭論,有人傾向於在系統設計與開發中採用微服務架構實現軟體系統的低耦合,被認為是系統架構的未來方向,Martin Fowler(馬丁.福勒)也給微服務架構很高的評價;
同時,對微服務架構也有人持反對觀點,他們表示:
1、微服務架構增加了系統維護、部署的難度,導致一些功能模組或程式碼無法複用;
2、隨著系統規模的日漸增長,微服務在一定程度上也會導致系統變得越來越複雜,增加了整合測試的複雜度;
3、隨著微服務的增多,資料的一致性問題,服務之間的通訊成本等都凸顯了出來;
所以在系統架構時也要提醒自己:不要為了微服務而微服務。
為什麼選擇Spring Cloud構建微服務
微服務一詞是Martin Fowler(馬丁.福勒)於2014年提出來的,近幾年微服務架構的討論非常火熱,無數的架構師和開發者在實際專案中實踐著微服務架構的設計理念,他們在微服務架構中針對不同應用場景出現的各種問題,也推出了很多解決方案和開源框架,其中我們國內的網際網路企業也有一些著名的框架和方案;
整個微服務架構是由大量的技術框架和方案構成,比如:
服務基礎開發 Spring MVC、Spring、SpringBoot
服務註冊與發現 Netflix的Eureka、Apache的ZooKeeper等
服務呼叫 RPC呼叫有阿里巴巴的Dubbo,Rest方式呼叫有當當網Dubbo基礎上擴充套件的Dubbox
分散式配置管理 百度的Disconf、360的QConf、淘寶的Diamond、Netflix的Archaius等
負載均衡 Ribbon
服務熔斷 Hystrix
API閘道器 Zuul
批量任務 噹噹網的Elastic-Job、Linkedln的Azkaban
服務跟蹤 京東的Hydra、Twitter的Zipkin等
但是在微服務架構上,幾乎大部分的開源元件都只能解決某一個場景下的問題,所以這些實施微服務架構的公司也是整合來自不同公司或組織的諸多開源框架,並加入針對自身業務的一些改進,沒有一個統一的架構方案;
所以當我們準備實施微服務架構時,我們要整合各個公司或組織的開源軟體,而且某些開源軟體又有多種選擇,這導致在做技術選型的初期,需要花費大量的時間進行預備研、分析和實驗,這些方案的整合沒有得到充分的測試,可能在實踐中會遇到各種各樣的問題;
Spring Cloud的出現,可以說是為微服務架構迎來一縷曙光,有SpringCloud社群的巨大支援和技術保障,讓我們實施微服務架構變得異常簡單了起來,它不像我們之前所列舉的框架那樣,只是解決微服務中的某一個問題,而是一個解決微服務架構實施的綜合性解決框架,它整合了諸多被廣泛實踐和證明有效的框架作為實施的基礎元件,又在該體系基礎上建立了一些非常優秀的邊緣元件將它們很好地整合起來。
加之Spring Cloud 有其Spring 的強大技術背景,極高的社群活躍度,也許未來Spring Cloud會成為微服務的標準技術解決方案;
相關文章
- Spring Cloud Alibaba:一站式微服務解決方案SpringCloud微服務
- nodejs微服務解決方案NodeJS微服務
- SpringCloud 分散式事務解決方案SpringGCCloud分散式
- java springcloud 微服務設計方案JavaSpringGCCloud微服務
- nodejs微服務框架解決方案NodeJS微服務框架
- Spring Cloud 微服務架構解決方案SpringCloud微服務架構
- 微服務架構及分散式事務解決方案微服務架構分散式
- SpringCloud微服務治理SpringGCCloud微服務
- SpringCloud BeanCurrentlyInCreationException 異常解決方案SpringGCCloudBeanException
- 微服務分散式事務4種解決方案實戰微服務分散式
- Nepxion Discovery【探索】微服務企業級解決方案微服務
- 淺析微服務全鏈路灰度解決方案微服務
- SpringCloud微服務基礎SpringGCCloud微服務
- SpringCloud微服務整合DubboSpringGCCloud微服務
- SpringCloud微服務理解(一)SpringGCCloud微服務
- springcloud 微服務面試SpringGCCloud微服務面試
- 微服務架構下分散式事務解決方案-hoop(一)微服務架構分散式OOP
- 微服務分散式事務解決方案-開源軟體seata微服務分散式
- Spring Cloud 微服務架構下的 WebSocket 解決方案SpringCloud微服務架構Web
- SpringCloud(1) ——回顧微服務和微服務架構SpringGCCloud微服務架構
- 微服務之springcloud eureka(一)微服務SpringGCCloud
- springcloud 微服務 之 Eureka 配置SpringGCCloud微服務
- springcloud fegin獲取request header解決方案SpringGCCloudHeader
- Java微服務下的分散式事務介紹及其解決方案2Java微服務分散式
- 微服務架構下的輕量級定時任務解決方案微服務架構
- 全棧式部署:SpringCloud 微服務+Docker + Vue + nginx 前後端一站式部署全棧SpringGCCloud微服務DockerVueNginx後端
- Serverless 時代下微服務應用全託管解決方案Server微服務
- SpringCloud微服務的那點事SpringGCCloud微服務
- SpringCloud微服務技術選型SpringGCCloud微服務
- 微服務SpringCloud之熔斷器微服務SpringGCCloud
- 微服務學習計劃——SpringCloud微服務SpringGCCloud
- 【SpringCloud】微服務Eureka高可用配置SpringGCCloud微服務
- springcloud微服務分散式雲架構-SpringCloud簡介SpringGCCloud微服務分散式架構
- 一站式Kafka平臺解決方案——KafkaCenterKafka
- 視角 | 微服務的資料一致性解決方案微服務
- 微服務的架構演進過程和多個解決方案微服務架構
- 雪花演算法及微服務叢集唯一ID解決方案演算法微服務
- 前端微服務化解決方案1-介紹前端微服務