聊聊微服務以及Springcloud。

一、什麼是微服務

  1. 微服務化的核心就是將傳統的一站式,根據業務拆分成一個一個的服務,徹底地去耦合,每一個微服務提供單個業務功能的服務,一個服務做一件事,從技術角度看就是一種小而獨立的處理過程,類似進程概念,能夠自行單獨啓動或銷燬,擁有自己獨立的數據庫。

  2. 強調的是服務的大小,它關注的是某一點,是具體解決某一個問題/提供落地對應服務的一個服務應用,狹義的看,可以看作eclipse裏面的一個微服務工程/或者Module。
    二、微服務架構

  3. 微服務架構是一種架構模式,它提倡將單一應用程序劃分成一組小的服務,服務之間互相協調、互相配合,爲用戶提供最終價值。

  4. 每個服務運行在獨立的進程中,服務與服務間採用輕量級的通信機制,互相協作(通常是基於Http協議的Restful Api)每個服務都圍繞着具體業務進行構建,並且能夠被獨立的部署到生產環境、類生產環境等。另外,應當儘量避免統一的、集中式的服務管理機制,對具體的一個服務而言,應根據業務上下文,選擇合適的語言、工具對其進行構建
    三、微服務的優缺點

  • 優點:
  1. 每個服務足夠內聚,足夠小,代碼容易理解這樣能聚焦一個指定的業務功能或業務需求;
  2. 開發簡單、開發效率提高,一個服務可能就是專一的只幹一個指定的業務功能或業務需求;
  3. 微服務能夠被小團隊單獨開發,這個小團隊是2到5人的開發人員組成;
  4. 微服務是鬆耦合的,是具有功能意義的服務,無論是在開發階段或部署階段都是獨立的;
  5. 微服務能夠使用不同的語言開發;
  6. 易於和第三方集成,微服務允許容易且靈活的方式集成自動部署,通過 持續集成工具,如Jenkins,Hudson,bamboo;
  7. 微服務易於被一個開發人員理解,修改和維護,這樣小團隊能夠更關注自己的工作成果。無需通過合作才能體現價值;
  8. 微服務允許你利用融合最新技術;
  9. 微服務只是業務邏輯代碼,不會和html,css或其他界面組件混合
  10. 每個微服務都有自己的存儲能力,可以有自己的數據庫,也可以有統一數據庫
  • 缺點:
  1. 開發人員要處理分佈式系統的複雜性。
  2. 多服務運維難度,隨着服務的增加,運維的壓力也在增大。
  3. 系統部署依賴。
    四、微服務技術棧
微服務條目 落地技術
服務開發 Springboot,Spring,SpringMVC
服務配置和管理 Netflix公司的archaius,阿里的diamond
服務註冊與發現 eureka,consul,zookeeper
服務調用 rest,RPC,gRPC
服務熔斷器 hystrix,envoy等
負載均衡 ribbon,nginx等
服務接口調用 feign等
消息隊列 Kafka,rabbitmq,activemq
服務配置中心管理 Springcloudconfig,chef等
服務路由(API網關) Zuul等
服務監控 zabbix,nagios,metrics,spectator
全鏈路追蹤 zipkin,brave,dapper等
服務部署 docker,openStack,kubernates等
數據流操作開發包 Springcloud stream
事件消息總線 Springcloud bus

五.Springcloud的一些常用註解

  • @EnableEurekaServer:申明此處爲服務註冊中心
  • @EnableEurekaClient:表明自己是一個生產者,服務提供者
  • @EnableDiscoveryClient:表明自己是一個消費者。
  • @EnableHystrix:表示開啓斷路器
  • @EnableTransactionManagement:開啓事物管理
  • @EnableHystrix:開啓斷路由
  • @EnableHystrixDashboard:開啓斷路由儀表盤
  • @EnableFeignClients:開啓feign
  • @EnableZipkinServer:開啓zipkin服務追蹤
  • @EnableZuulProxy:開啓ZUUL路由

六.Springcloud的通俗理解

Springcloud就是一個幫派的幫主,手下有許多小弟。

主要的小弟有:Spring Cloud Config、Spring Cloud Netflix(Eureka、Hystrix、Zuul、Archaius…)、Spring Cloud Bus、Spring Cloud for Cloud Foundry、Spring Cloud Cluster、Spring Cloud Consul、Spring Cloud Security、Spring Cloud Sleuth、Spring Cloud Data Flow、Spring Cloud Stream、Spring Cloud Task、Spring Cloud Zookeeper、Spring Cloud Connectors、Spring Cloud Starters、Spring Cloud CLI。

1.Spring Cloud Netflix
這個可是個大boss,地位僅次於老大,怎麼說一個幫派也得有個得力干將,老大各項服務依賴與它,與各種Netflix OSS組件集成,組成微服務的核心,它的小弟主要有Eureka, Hystrix, Zuul, Archaius… 太多了

2.Netflix Eureka
服務中心,雲端服務發現,一個基於 REST 的服務,用於定位服務,以實現雲端中間層服務發現和故障轉移。這個可是springcloud最牛鼻的小弟,服務中心,任何小弟需要其它小弟支持什麼都需要從這裏來拿,同樣的你有什麼獨門武功的都趕緊過報道,方便以後其它小弟來調用;它的好處是你不需要直接找各種什麼小弟支持,只需要到服務中心來領取,也不需要知道提供支持的其它小弟在哪裏,還是幾個小弟來支持的,反正拿來用就行,服務中心來保證穩定性和質量。

3.Netflix Hystrix
熔斷器,容錯管理工具,旨在通過熔斷機制控制服務和第三方庫的節點,從而對延遲和故障提供更強大的容錯能力。比如突然某個小弟生病了,但是你還需要它的支持,然後調用之後它半天沒有響應,你卻不知道,一直在等等這個響應;有可能別的小弟也正在調用你的武功絕技,那麼當請求多之後,就會發生嚴重的阻塞影響老大的整體計劃。這個時候Hystrix就派上用場了,當Hystrix發現某個小弟不在狀態不穩定立馬馬上讓它下線,讓其它小弟來頂上來,或者給你說不用等了這個小弟今天肯定不行,該幹嘛趕緊幹嘛去別在這排隊了。

4.Netflix Zuul
Zuul 是在雲平臺上提供動態路由,監控,彈性,安全等邊緣服務的框架。Zuul 相當於是設備和 Netflix 流應用的 Web 網站後端所有請求的前門。當其它門派來找大哥辦事的時候一定要先經過zuul,看下有沒有帶刀子什麼的給攔截回去,或者是需要找那個小弟的直接給帶過去。

5.Spring Cloud Config
俗稱的配置中心,配置管理工具包,讓你可以把配置放到遠程服務器,集中化管理集羣配置,目前支持本地存儲、Git以及Subversion。就是以後大家武器、槍火什麼的東西都集中放到一起,別隨便自己帶,方便以後統一管理、升級裝備。

6.Spring Cloud Bus
事件、消息總線,用於在集羣(例如,配置變化事件)中傳播狀態變化,可與Spring Cloud Config聯合實現熱部署。相當於水滸傳中日行八百里的神行太保戴宗,確保各個小弟之間消息保持暢通。

以上就是我比較通俗的理解,雖然比較淺顯,也是參考了別人的文章。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章