SpringCloud-初識微服務(一)


前言

  本篇文章簡單介紹一下什么是微服務、微服務的優點、SpringCloud的微服務架構核心組件選型等;

一、什么是微服務?

  微服務的提出者Martin Fowler是這樣描述微服務的(原文:https://martinfowler.com/articles/microservices.html):

   In short, the microservice architectural style [1] is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often
an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services,
which may be written in different programming languages and use different data storage technologies.

  翻譯過來(譯文:http://blog.cuicc.com/blog/2015/07/22/microservices/):

     簡單來說,微服務架構風格是一種將一個單一應用程序開發為一組小型服務的方法,每個服務運行在自己的進程中,服務間通信采用輕量級通信機制(通常用HTTP資源API)。這些服務圍繞業務能力構建並且可通過全自動部署機制獨立部署。這些服務共用一個最小型的集中式的管理,
服務可用不同的語言開發,使用不同的數據存儲技術。

  故微服務架構應具有以下特性:

    1、每個微服務可獨立運行在自己的進程里,即獨立部署;

    2、一系列獨立運行的微服務共同構建起整個系統,即分布式系統架構;

    3、每個服務為獨立的業務開發,一個微服務只關注某個特定的功能,即業務服務層的高內聚低耦合,業務的模塊化;

    4、微服務之間通過輕量級的通信機制通信,即使用RestFul調用;

    5、可使用不同的語言和數據存儲技術;

    6、自動化部署;

  總結:

    裝逼版:微服務,即基於獨立的業務模塊化單元的單機應用進行的完整、成熟的分布式架構;(個人理解)

    白話版:微服務,即多個微小的獨立部署的應用單元組成的,各個服務之間互不影響的一套完整的系統;(個人理解)

二、微服務的優點

  1、易於開發和維護:一個微服務只會關注特定的業務功能,所以業務清晰,代碼量少,易維護;

  2、局部部署:微服務是獨立部署的,所以它部署時不會影響其他服務;

  3、可擴展性強:由於微服務是獨立部署的,當產品有新的需求時,就可以重新建立一套微服務,完全解耦;

  4、支持多語言:技術選型不在受限,完全可以一個系統中有多個語言存在;

  最大的優點就是規避了單體應用缺點,復雜性高,部署頻率低,擴展受限,可靠性差等。

三、SpringCloud的微服務架構核心組件選型

      

 

   1、服務網關:由於是微服務,不可避免的會有很多的接口,這樣的會互相訪問時會出現很多問題,例如:存在跨域請求,客戶端輝多次請求不同的微服務,增加可客戶端的復雜性和不可維護性,難以重構等問題,所以我們需要一個服務網關來管理這些請求,微服務網關是介於客戶端和服務端之間的中間層,這樣我們就可以做一些額外的功能如:認證安全,壓力測試,監控,負載均衡等;在SpringCloud建議使用Zuul,它是Netflix開源的微服務網關;

   2、客戶端負載均衡:在微服務中,部署時各個微服務都會部署多個實例,這樣我們就需要將請求分攤到各個具體的實例上;在SpringCloud建議使用Ribbon,他也是Netflix開源的負載均衡器;

   3、服務注冊中心:使用微服務構建的是分布式系統,微服務之間通過網絡進行通信,而隨着系統體積的增加,服務也會增加,這樣我們就需要一個服務管理中心去管理這些服務;在SpringCloud中建議使用Eureka;

   4、熔斷器:微服務架構的應用系統通常會有多個服務層,而各個微服務之間又有着業務關系,難免存在依賴,而如果其中一個微服務發生故障時也會導致其他微服務的不可用,從而引起級聯故障也就是雪崩效應,所以我們需要一個斷路保護機制,來保證不會出現雪崩效應;在SpringCloud中建議使用Hystrix;

   5、配置中心:由於微服務較多,不同環境配置也不盡相同,所以非常有必要將配置文件統一管理,所以需要一個配置中心來管理配置文件;在SpringCloud中建議使用SpringCloudConfig;

 

 

參考書籍:《SpringCloud與Docker微服務架構實戰》周力著

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM