網(wǎng)站開發(fā)的報告自己怎么做網(wǎng)站網(wǎng)頁
目錄
1.什么是微服務(wù)?談?wù)勀銓ξ⒎?wù)的理解?
2.什么是Spring Cloud?
3.Springcloud中的組件有哪些?
3.具體說說SpringCloud主要項目?
5.SpringCloud項目部署架構(gòu)?
1.什么是微服務(wù)?談?wù)勀銓ξ⒎?wù)的理解?
? ? 微服務(wù)
以前所有的代碼都放在同一個工程中、部署在同一個服務(wù)器、同一項目的不同模塊不同功能互相搶占資源,微服務(wù)就是將工程根據(jù)不同的業(yè)務(wù)拆分成微服務(wù),部署在不同的服務(wù)器上,服務(wù)之間相互調(diào)用,Java中有的微服務(wù)有dubbo(只能用來做微服務(wù)),Springcloud(提供了 服務(wù)的發(fā)現(xiàn),斷路器等)。
? 微服務(wù)的特點(diǎn)
1.按業(yè)務(wù)劃分為一個獨(dú)立運(yùn)行的程序,即服務(wù)單元
2.服務(wù)之間通過HTTP協(xié)議相互通信
3.自動化部署
4.可以用不同的編程語言
5.可以用不同的存儲技術(shù)
6.服務(wù)集中化管理
7.微服務(wù)是一個分布式系統(tǒng)
微服務(wù)的優(yōu)勢
1.將一個復(fù)雜的業(yè)務(wù)拆分成若干小的業(yè)務(wù),將復(fù)雜的業(yè)務(wù)簡單化,新人只需要了解他所接管的服務(wù)代碼,減少新人的學(xué)習(xí)成本。
2.由于微服務(wù)是分布式服務(wù),服務(wù)于服務(wù)之間沒有任何耦合。微服務(wù)系統(tǒng)的微服務(wù)單元具有很強(qiáng)的橫向擴(kuò)展能力。
3.服務(wù)與服務(wù)之間采用HTTP網(wǎng)絡(luò)通信協(xié)議來通信,單個服務(wù)內(nèi)部高度耦合,服務(wù)與服務(wù)之間完全獨(dú)立,無耦合。這使得微服務(wù)可以采用任何開發(fā)語言和技術(shù)來實現(xiàn),提高開發(fā)效率,降低開發(fā)成本。
4.微服務(wù)是按照業(yè)務(wù)進(jìn)行拆分的,并有堅實的服務(wù)邊界,若要重寫某一業(yè)務(wù)代碼,不需了解所有業(yè)務(wù),重寫簡單。
5.微服務(wù)的每個服務(wù)單元是獨(dú)立部署的,即獨(dú)立運(yùn)行在某個進(jìn)程中,微服務(wù)的修改和部署對其他服務(wù)沒有影響。
6.微服務(wù)在CAP理論中采用的AP架構(gòu),具有高可用分區(qū)容錯特點(diǎn)。高可用主要體現(xiàn)在系統(tǒng)7*24不間斷服務(wù),他要求系統(tǒng)有大量的服務(wù)器集群,從而提高系統(tǒng)的負(fù)載能力。分區(qū)容錯也使得系統(tǒng)更加健壯。
微服務(wù)的不足
1.微服務(wù)的復(fù)雜度:構(gòu)建一個微服務(wù)比較復(fù)雜,服務(wù)與服務(wù)之間通過HTTP協(xié)議或者其他消息傳遞機(jī)制通信,開發(fā)者要選出最佳的通信機(jī)制,并解決網(wǎng)絡(luò)服務(wù)差時帶來的風(fēng)險。
2.分布式事務(wù):將事務(wù)分成多階段提交,如果一階段某個節(jié)點(diǎn)失敗仍會導(dǎo)致數(shù)據(jù)不正確。如果事務(wù)涉及的節(jié)點(diǎn)很多,某一節(jié)點(diǎn)的網(wǎng)絡(luò)出現(xiàn)異常會導(dǎo)致整個事務(wù)處于阻塞狀態(tài),大大降低數(shù)據(jù)庫的性能。
3.服務(wù)劃分:將一個完整的系統(tǒng)拆分成很多個服務(wù),是一件非常困難的事,因為這涉及了具體的業(yè)務(wù)場景。
4.服務(wù)部署:最佳部署容器Docker。
微服務(wù)和SOA的關(guān)系
微服務(wù)相對于和ESB聯(lián)系在一起的SOA輕便敏捷的多,微服務(wù)將復(fù)雜的業(yè)務(wù)組件化,也是一種面向服務(wù)思想的體現(xiàn)。對于微服務(wù)來說,他是SOA的一種體現(xiàn),但是他比ESB實現(xiàn)的SOA更加輕便,敏捷和簡單。
2.什么是Spring Cloud?
?Spring? Cloud是一系列框架的有序集合。他利用SpringBoot的開發(fā)便利性巧妙地簡化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開發(fā),如服務(wù)發(fā)現(xiàn)注冊,配置中心,智能路由,消息總線,均衡負(fù)載,斷路器,數(shù)據(jù)監(jiān)控等,都可以用Spring Boot的開發(fā)風(fēng)格做到一鍵啟動和部署。
Spring Cloud并沒有重復(fù)制造輪子,他只是將各家公司開發(fā)的比較成熟,經(jīng)得起實際考驗的服務(wù)框架組合起來,通過Spring Boot風(fēng)格進(jìn)行再封裝屏蔽掉了復(fù)雜的配置和實現(xiàn)原理,最終個開發(fā)者留出了一套簡單易懂,易部署和易維護(hù)的分布式系統(tǒng)開發(fā)工具包。
SpringCloud的優(yōu)點(diǎn)
1.耦合度比較低。不會影響其他模塊的開發(fā)。
2.減輕團(tuán)隊的成本,可以并行開發(fā),不用關(guān)注其他人怎么開發(fā),先關(guān)注自己的開發(fā)。
3.配置比較簡單,基本用注解就能實現(xiàn),不用使用過多的配置文件。
4.微服務(wù)跨平臺的,可以用任何一種語言開發(fā)。
5.每個微服務(wù)可以有自己的獨(dú)立的數(shù)據(jù)庫也有用公共的數(shù)據(jù)庫。
6.直接寫后端的代碼,不用關(guān)注前端怎么開發(fā),直接寫自己的后端代碼即可,然后暴露接口,通過組件進(jìn)行服務(wù)通信。
SpringCloud的缺點(diǎn)
1.部署比較麻煩,給運(yùn)維工程師帶來一定的麻煩。
2.針對數(shù)據(jù)的管理比較麻煩,因為微服務(wù)可以每個微服務(wù)使用一個數(shù)據(jù)庫。
3.系統(tǒng)集成測試比較麻煩。
4.性能的監(jiān)控比較麻煩。
3.Springcloud中的組件有哪些?
1.Spring Cloud Eureka,服務(wù)注冊中心,特性有失效剔除,服務(wù)保護(hù)。
2.Spring Cloud Zuul,API服務(wù)網(wǎng)管,功能有路由分發(fā)和過濾。
3.Spring? Cloud? Config,分布式配置中心,支持本地倉庫,SVN,Git,Jar包配置等模式。
4.Spring Cloud Ribbon,客戶端負(fù)載均衡,特性有區(qū)域親和,重試機(jī)制
5.Spring? Cloud? Hystrix,客戶端容錯保護(hù),特性有服務(wù)降級,服務(wù)熔斷,請求緩存,請求合并,依賴隔離。
6.Spring Cloud Feign,聲明式服務(wù)調(diào)用本質(zhì)上就是Ribbon+Hystrix.
7.Spring? Cloud Stream,消息驅(qū)動,有Sink,Source,Processor三種通道,特性有訂閱發(fā)布,消息組,消息分區(qū)。
8.Spring Cloud Bus,消息總線,配合Config倉庫修改一種Stream實現(xiàn)。
9.Spring? Cloud Sleuth,分布式服務(wù)追蹤器,需要搞清楚TraceID和SpanID以及抽樣,如何與ELK整合。
3.具體說說SpringCloud主要項目?
?SpringCloud的子項目,大致分成兩類,一類是對現(xiàn)有成熟框架”SpringBoot化:的封裝和抽象,也是數(shù)量最多的項目,第二類是開發(fā)了一部分分布式系統(tǒng)的基礎(chǔ)設(shè)施的實現(xiàn),如Spring Cloud Stream扮演的就是Kafka,ActiveMQ這樣的角色。
Spring Cloud Config? Config能夠管理所有微服務(wù)的配置文件
集中配置管理工具,分布式系統(tǒng)中統(tǒng)一的外部配置管理,默認(rèn)使用Git來存儲配置??梢灾С挚蛻舳伺渲玫乃⑿乱约凹用?#xff0c;解密操作。
Spring? Cloud Netflix
Netflix? OSS 開源組件集成,包括Eureka,Hystrix,Ribbon,Feign,Zuul等核心組件。
1.Eureka:服務(wù)治理組件,包括服務(wù)端的注冊中心和客戶端的服務(wù)發(fā)現(xiàn)機(jī)制;
2.Ribbon:負(fù)責(zé)均衡的服務(wù)調(diào)用組件,具有多種負(fù)載均衡調(diào)用策略。
3.Hystrix:服務(wù)容錯組件,實現(xiàn)了斷路器模式,為依賴服務(wù)的出錯和延遲提供了容錯能力。
4.Feign:基于Ribbon和Hystrix的聲明式服務(wù)調(diào)用組件。
‘5.Zuul:API網(wǎng)關(guān)組件,對請求提供路由以及過濾功能。
Spring Cloud Bus
1.用于傳播集群狀態(tài)變化的消息總線,使用輕量級消息代理鏈接分布式系統(tǒng)中的節(jié)點(diǎn),可以用動態(tài)刷新集群中的服務(wù)配置信息。
2.簡單來說就是修改了配置文件,發(fā)送一次請求,所有客戶端便會重新讀取配置文件(需要利用中間插件MQ)。
Spring? ?Cloud? Consul
Consul是HashiCorp公司推出的開源工具,用于實現(xiàn)分布式系統(tǒng)的服務(wù)發(fā)現(xiàn)與配置。與其他分布式服務(wù)注冊與發(fā)現(xiàn)的方案,Consul的方案更“一站式”,內(nèi)置了服務(wù)注冊與發(fā)現(xiàn)框架,分布一致性協(xié)議實現(xiàn),健康檢查,Key/Value存儲,多數(shù)據(jù)中心方案,不再需要依賴其他工具(比如Zookeeper等)。使用起來比較簡單。Consul使用Go語言編寫,因此具有天然可移植性(支持Linux,Windows和Mac OS? X);安裝包僅包含一個可執(zhí)行文件,方便部署,與Docker等輕量級容器可無縫配合。
Spring? Cloud? Security
Spring? Cloud? Security提供了一組原語,用于構(gòu)建安全的應(yīng)用程序和服務(wù),而且操作簡便??梢栽谕獠?#xff08;或集中)進(jìn)行大量配置的聲明性模型有助于實現(xiàn)大型協(xié)作的遠(yuǎn)程組件系統(tǒng),通常具有中央身份管理服務(wù)。他也非常易于在Cloud? Foundry等服務(wù)平臺中使用。在SpringBoot和Spring Security? OAuth2的基礎(chǔ)上,可以快速創(chuàng)建實現(xiàn)常見模式的系統(tǒng),如單點(diǎn)登錄,令牌中繼和令牌交換。
Spring? Cloud Sleuth
在微服務(wù)中,通常根據(jù)業(yè)務(wù)分模塊,項目中前端發(fā)起一個請求,后端可能跨幾個服務(wù)調(diào)用才能完成這個請求(如下圖)。如果系統(tǒng)越來越龐大,服務(wù)之間的調(diào)用與被調(diào)用關(guān)系就會變得復(fù)雜,假如一個請求中需要跨幾個服務(wù)調(diào)用,其中一個服務(wù)由于網(wǎng)絡(luò)延遲等原因掛掉了,那么這時候我們需要分析具體哪一個服務(wù)出現(xiàn)問題了就會顯得困難。Spring Cloud Sleuth服務(wù)鏈路跟蹤功能就可以幫助我們快速的發(fā)現(xiàn)錯誤根源以及監(jiān)控分析每條請求鏈路上的性能等等。
Spring? ?Cloud? Stream?
輕量級事件驅(qū)動微服務(wù)框架,可以使用簡單的聲明式模型來發(fā)送以及接收消息,主要實現(xiàn)為Apache? Kafka以及RabbitMQ。
Spring? Cloud? Task
Spring Cloud Task的目標(biāo)是為Spring? Boot應(yīng)用程序提供創(chuàng)建短運(yùn)行期微服務(wù)的功能。在Spring? Cloud Task中,我們可以靈活的動態(tài)運(yùn)行任何任務(wù),按需分配資源并在任務(wù)完成后檢索結(jié)果。Tasks是Spring Cloud Data? Flow中的一個基礎(chǔ)項目,允許用戶將幾乎任何Spring? Boot應(yīng)用程序作為一個短期任務(wù)執(zhí)行。
Spring? Cloud? Zookeeper
Spring? ?Cloud 支持三種注冊方式Eureka,Consul(go語言編寫),zookeeper? Spring? Cloud? Zookeeper是基于Apache? Zookeeper的服務(wù)治理組件。
Spring? Cloud GateWay
?Spring? Cloud? Gateway是Spring官方基于Spring 5.0,SpringBoot2.0和Project? Reactor等技術(shù)開發(fā)的網(wǎng)關(guān),Spring? Cloud GateWay旨在為微服務(wù)架構(gòu)提供簡單,有效和統(tǒng)一的API路由管理方式,Spring Cloud GateWay作為Spring Cloud生態(tài)系統(tǒng)中的網(wǎng)關(guān),目標(biāo)是替代Neflix? Zuul,其不僅提供統(tǒng)一的路由方式,而且還基于Filer鏈的方式提供網(wǎng)關(guān)基本的功能,例如:安全,監(jiān)控/埋點(diǎn),限流等。
Spring? Cloud OpenFeign
Feign是一個聲明性的Web服務(wù)客戶端。他使編寫Web服務(wù)客戶端變得更容易。要使用Feign,我們可以將調(diào)用的服務(wù)方法定義成抽象方法保存在本地添加一點(diǎn)點(diǎn)注解就可以了,不需要自己構(gòu)建http請求了,直接調(diào)用接口就行了,不過要注意,調(diào)用方法要和本地抽象方法的簽名完全一致。