久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Spring Cloud全家桶主要組件及簡要介紹

 后知后覺1003 2019-10-29

一,、微服務(wù)簡介

微服務(wù)是最近的一兩年的時間里是很火的一個概念,。感覺不學(xué)習(xí)一下都快跟不上時代的步伐了,下邊做一下簡單的總結(jié)和介紹,。

何為微服務(wù),?簡而言之,微服務(wù)架構(gòu)風(fēng)格這種開發(fā)方法,,是以開發(fā)一組小型服務(wù)的方式來開發(fā)一個獨立的應(yīng)用系統(tǒng)的,。其中每個小型服務(wù)都運行在自己的進程中,并經(jīng)常采用HTTP資源API這樣輕量的機制來相互通信,。這些服務(wù)圍繞業(yè)務(wù)功能進行構(gòu)建,,并能通過全自動的部署機制來進行獨立部署,。這些微服務(wù)可以使用不同的語言來編寫,并且可以使用不同的數(shù)據(jù)存儲技術(shù),。對這些微服務(wù)我們僅做最低限度的集中管理,。

一個微服務(wù)一般完成某個特定的功能,比如下單管理,、客戶管理等等,。每一個微服務(wù)都是微型六角形應(yīng)用,都有自己的業(yè)務(wù)邏輯和適配器,。一些微服務(wù)還會發(fā)布API給其它微服務(wù)和應(yīng)用客戶端使用,。其它微服務(wù)完成一個Web UI,運行時,,每一個實例可能是一個云VM或者是Docker容器,。

比如,一個前面描述系統(tǒng)可能的分解如下:

總的來說,,微服務(wù)的主旨是將一個原本獨立的系統(tǒng)拆分成多個小型服務(wù),,這些小型服務(wù)都在各自獨立的進程中運行,服務(wù)之間通過基于HTTP的RESTful API進行通信協(xié)作,,并且每個服務(wù)都維護著自身的數(shù)據(jù)存儲,、業(yè)務(wù)開發(fā)、自動化測試以及獨立部署機制,。

二,、微服務(wù)的特征

1、每個微服務(wù)可獨立運行在自己的進程里,;

2,、一系列獨立運行的微服務(wù)共同構(gòu)建起了整個系統(tǒng);

3,、每個服務(wù)為獨立的業(yè)務(wù)開發(fā),,一個微服務(wù)一般完成某個特定的功能,比如:訂單管理,、用戶管理等,;

4、微服務(wù)之間通過一些輕量的通信機制進行通信,,例如通過REST API或者RPC的方式進行調(diào)用,。

擴展閱讀:深度剖析微服務(wù)架構(gòu)的九大特征: http://developer.51cto.com/art/201608/516401.htm

三、微服務(wù)的優(yōu)缺點

1,、易于開發(fā)和維護

2,、啟動較快

3、局部修改容易部署

4、技術(shù)棧不受限

5,、按需伸縮

6,、DevOps

擴展閱讀:微服務(wù)架構(gòu)的優(yōu)勢與不足 :http:///article/394

四、常見微服務(wù)框架

1,、服務(wù)治理框架

(1)Dubbo(http:///),、Dubbox(當(dāng)當(dāng)網(wǎng)對Dubbo的擴展)

擴展閱讀:Dubbo詳細介紹與安裝使用過程: http://blog.csdn.net/xlgen157387/article/details/51865289

最近的好消息是Dubbo已近重新開始進行運維啦!

(2)Netflix的Eureka,、Apache的Consul等,。

Spring Cloud Eureka是對Netflix的Eureka的進一步封裝。

2,、分布式配置管理

(1)百度的Disconf

(2)360的QConf

(3)Spring Cloud組件中的Config

(3)淘寶的Diamond

3,、批量任務(wù)框架

(1)Spring Cloud組件中的Task

(2)LTS

4、服務(wù)追蹤框架

,。,。。

五,、Spring Cloud全家桶組件

在介紹Spring Cloud 全家桶之前,,首先要介紹一下Netflix ,Netflix 是一個很偉大的公司,,在Spring Cloud項目中占著重要的作用,,Netflix 公司提供了包括Eureka、Hystrix,、Zuul、Archaius等在內(nèi)的很多組件,,在微服務(wù)架構(gòu)中至關(guān)重要,,Spring在Netflix 的基礎(chǔ)上,封裝了一系列的組件,,命名為:Spring Cloud Eureka,、Spring Cloud Hystrix、Spring Cloud Zuul等,,下邊對各個組件進行分別得介紹:

(1)Spring Cloud Eureka

我們使用微服務(wù),,微服務(wù)的本質(zhì)還是各種API接口的調(diào)用,那么我們怎么產(chǎn)生這些接口,、產(chǎn)生了這些接口之后如何進行調(diào)用那,?如何進行管理哪?

答案就是Spring Cloud Eureka,,我們可以將自己定義的API 接口注冊到Spring Cloud Eureka上,,Eureka負責(zé)服務(wù)的注冊于發(fā)現(xiàn),如果學(xué)習(xí)過Zookeeper的話,就可以很好的理解,,Eureka的角色和 Zookeeper的角色差不多,,都是服務(wù)的注冊和發(fā)現(xiàn),構(gòu)成Eureka體系的包括:服務(wù)注冊中心,、服務(wù)提供者,、服務(wù)消費者。

上圖中描述了(圖片來源于網(wǎng)絡(luò)):

1,、兩臺Eureka服務(wù)注冊中心構(gòu)成的服務(wù)注冊中心的主從復(fù)制集群,;

2、然后服務(wù)提供者向注冊中心進行注冊,、續(xù)約,、下線服務(wù)等;

3,、服務(wù)消費者向Eureka注冊中心拉去服務(wù)列表并維護在本地(這也是客戶端發(fā)現(xiàn)模式的機制體現(xiàn)?。?/p>

4,、然后服務(wù)消費者根據(jù)從Eureka服務(wù)注冊中心獲取的服務(wù)列表選取一個服務(wù)提供者進行消費服務(wù),。

(2)Spring Cloud Ribbon

在上Spring Cloud Eureka描述了服務(wù)如何進行注冊,注冊到哪里,,服務(wù)消費者如何獲取服務(wù)生產(chǎn)者的服務(wù)信息,,但是Eureka只是維護了服務(wù)生產(chǎn)者、注冊中心,、服務(wù)消費者三者之間的關(guān)系,,真正的服務(wù)消費者調(diào)用服務(wù)生產(chǎn)者提供的數(shù)據(jù)是通過Spring Cloud Ribbon來實現(xiàn)的。

在(1)中提到了服務(wù)消費者是將服務(wù)從注冊中心獲取服務(wù)生產(chǎn)者的服務(wù)列表并維護在本地的,,這種客戶端發(fā)現(xiàn)模式的方式是服務(wù)消費者選擇合適的節(jié)點進行訪問服務(wù)生產(chǎn)者提供的數(shù)據(jù),,這種選擇合適節(jié)點的過程就是Spring Cloud Ribbon完成的。

Spring Cloud Ribbon客戶端負載均衡器由此而來,。

(3)Spring Cloud Feign

上述(1),、(2)中我們已經(jīng)使用最簡單的方式實現(xiàn)了服務(wù)的注冊發(fā)現(xiàn)和服務(wù)的調(diào)用操作,如果具體的使用Ribbon調(diào)用服務(wù)的話,,你就可以感受到使用Ribbon的方式還是有一些復(fù)雜,,因此Spring Cloud Feign應(yīng)運而生。

Spring Cloud Feign 是一個聲明web服務(wù)客戶端,,這使得編寫Web服務(wù)客戶端更容易,,使用Feign 創(chuàng)建一個接口并對它進行注解,它具有可插拔的注解支持包括Feign注解與JAX-RS注解,,F(xiàn)eign還支持可插拔的編碼器與解碼器,,Spring Cloud 增加了對 Spring MVC的注解,,Spring Web 默認使用了HttpMessageConverters, Spring Cloud 集成 Ribbon 和 Eureka 提供的負載均衡的HTTP客戶端 Feign。

簡單的可以理解為:Spring Cloud Feign 的出現(xiàn)使得Eureka和Ribbon的使用更為簡單,。

(4)Spring Cloud Hystrix

我們在(1),、(2)、(3)中知道了使用Eureka進行服務(wù)的注冊和發(fā)現(xiàn),,使用Ribbon實現(xiàn)服務(wù)的負載均衡調(diào)用,,還知道了使用Feign可以簡化我們的編碼。但是,,這些還不足以實現(xiàn)一個高可用的微服務(wù)架構(gòu),。

例如:當(dāng)有一個服務(wù)出現(xiàn)了故障,而服務(wù)的調(diào)用方不知道服務(wù)出現(xiàn)故障,,若此時調(diào)用放的請求不斷的增加,,最后就會等待出現(xiàn)故障的依賴方 相應(yīng)形成任務(wù)的積壓,最終導(dǎo)致自身服務(wù)的癱瘓,。

Spring Cloud Hystrix正是為了解決這種情況的,,防止對某一故障服務(wù)持續(xù)進行訪問。Hystrix的含義是:斷路器,,斷路器本身是一種開關(guān)裝置,,用于我們家庭的電路保護,防止電流的過載,,當(dāng)線路中有電器發(fā)生短路的時候,,斷路器能夠及時切換故障的電器,防止發(fā)生過載,、發(fā)熱甚至起火等嚴重后果,。

(5)Spring Cloud Config

對于微服務(wù)還不是很多的時候,各種服務(wù)的配置管理起來還相對簡單,,但是當(dāng)成百上千的微服務(wù)節(jié)點起來的時候,,服務(wù)配置的管理變得會復(fù)雜起來。

分布式系統(tǒng)中,,由于服務(wù)數(shù)量巨多,為了方便服務(wù)配置文件統(tǒng)一管理,,實時更新,,所以需要分布式配置中心組件。在Spring Cloud中,,有分布式配置中心組件Spring Cloud Config ,,它支持配置服務(wù)放在配置服務(wù)的內(nèi)存中(即本地),也支持放在遠程Git倉庫中,。在Cpring Cloud Config 組件中,,分兩個角色,一是Config Server,二是Config Client,。

Config Server用于配置屬性的存儲,,存儲的位置可以為Git倉庫、SVN倉庫,、本地文件等,,Config Client用于服務(wù)屬性的讀取。

(6)Spring Cloud Zuul

我們使用Spring Cloud Netflix中的Eureka實現(xiàn)了服務(wù)注冊中心以及服務(wù)注冊與發(fā)現(xiàn),;而服務(wù)間通過Ribbon或Feign實現(xiàn)服務(wù)的消費以及均衡負載,;通過Spring Cloud Config實現(xiàn)了應(yīng)用多環(huán)境的外部化配置以及版本管理。為了使得服務(wù)集群更為健壯,,使用Hystrix的融斷機制來避免在微服務(wù)架構(gòu)中個別服務(wù)出現(xiàn)異常時引起的故障蔓延,。

先來說說這樣架構(gòu)需要做的一些事兒以及存在的不足:

1、首先,,破壞了服務(wù)無狀態(tài)特點,。為了保證對外服務(wù)的安全性,我們需要實現(xiàn)對服務(wù)訪問的權(quán)限控制,,而開放服務(wù)的權(quán)限控制機制將會貫穿并污染整個開放服務(wù)的業(yè)務(wù)邏輯,,這會帶來的最直接問題是,破壞了服務(wù)集群中REST API無狀態(tài)的特點,。從具體開發(fā)和測試的角度來說,,在工作中除了要考慮實際的業(yè)務(wù)邏輯之外,還需要額外可續(xù)對接口訪問的控制處理,。

2,、其次,無法直接復(fù)用既有接口,。當(dāng)我們需要對一個即有的集群內(nèi)訪問接口,,實現(xiàn)外部服務(wù)訪問時,我們不得不通過在原有接口上增加校驗邏輯,,或增加一個代理調(diào)用來實現(xiàn)權(quán)限控制,,無法直接復(fù)用原有的接口。

面對類似上面的問題,,我們要如何解決呢,?下面進入本文的正題:服務(wù)網(wǎng)關(guān)!

為了解決上面這些問題,,我們需要將權(quán)限控制這樣的東西從我們的服務(wù)單元中抽離出去,,而最適合這些邏輯的地方就是處于對外訪問最前端的地方,我們需要一個更強大一些的均衡負載器,,它就是本文將來介紹的:服務(wù)網(wǎng)關(guān),。

服務(wù)網(wǎng)關(guān)是微服務(wù)架構(gòu)中一個不可或缺的部分,。通過服務(wù)網(wǎng)關(guān)統(tǒng)一向外系統(tǒng)提供REST API的過程中,除了具備服務(wù)路由,、均衡負載功能之外,,它還具備了權(quán)限控制等功能。Spring Cloud Netflix中的Zuul就擔(dān)任了這樣的一個角色,,為微服務(wù)架構(gòu)提供了前門保護的作用,,同時將權(quán)限控制這些較重的非業(yè)務(wù)邏輯內(nèi)容遷移到服務(wù)路由層面,使得服務(wù)集群主體能夠具備更高的可復(fù)用性和可測試性,。

(7)Spring Cloud Bus

在(5)Spring Cloud Config中,,我們知道的配置文件可以通過Config Server存儲到Git等地方,通過Config Client進行讀取,,但是我們的配置文件不可能是一直不變的,,當(dāng)我們的配置文件放生變化的時候如何進行更新哪?

一種最簡單的方式重新一下Config Client進行重新獲取,,但Spring Cloud絕對不會讓你這樣做的,,Spring Cloud Bus正是提供一種操作使得我們在不關(guān)閉服務(wù)的情況下更新我們的配置。

Spring Cloud Bus官方意義:消息總線,。

當(dāng)然動態(tài)更新服務(wù)配置只是消息總線的一個用處,,還有很多其他用處。

六,、總結(jié)

Spring Cloud 的組件還不止這些,,通過上邊的口水話的介紹,應(yīng)該可以大致有一定的了解,,但是每一個組件的功能遠不止上述介紹的那些,,每一個組件還有很多其他的功能點,這里的介紹希望能夠帶大家入個門,,不要對微服務(wù)這個這么大的概念有所畏懼,。

————————————————

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多