當(dāng)前微服務(wù)架構(gòu)逐漸成為系統(tǒng)開發(fā)的主流方向圈匆,搭建微服務(wù)方式可以有多種邻吭,例如springcloud、dubbo焕檬、k8s等姆坚,本系列文章將基于本人參與的實(shí)際項(xiàng)目,來(lái)介紹基于springcloud搭建微服務(wù)的方式实愚,Spring Cloud是一個(gè)基于Spring Boot實(shí)現(xiàn)的云應(yīng)用開發(fā)工具兼呵,它為基于JVM的云應(yīng)用開發(fā)中涉及的配置管理、服務(wù)發(fā)現(xiàn)腊敲、斷路器击喂、智能路由、微代理碰辅、控制總線懂昂、全局鎖、決策競(jìng)選没宾、分布式會(huì)話和集群狀態(tài)管理等操作提供了一種簡(jiǎn)單的開發(fā)方式凌彬。其主要模塊有:
- eureka: 是springcloud體系結(jié)構(gòu)中的服務(wù)治理模塊,spring cloud eureka 由兩個(gè)模塊組成循衰,Eureka服務(wù)器 和 Eureka客戶端铲敛。Eureka服務(wù)器充當(dāng)微服務(wù)架構(gòu)體系中的服務(wù)注冊(cè)中心。其他的微服務(wù)会钝,使用 Eureka 客戶端連接到 Eureka Server伐蒋,并維持心跳連接,系統(tǒng)維護(hù)人員可以通過 Eureka Server 來(lái)監(jiān)控系統(tǒng)中各個(gè)微服務(wù)是否正常運(yùn)行顽素。
- zuul:充當(dāng)微服務(wù)架構(gòu)中api網(wǎng)關(guān)對(duì)外進(jìn)行統(tǒng)一暴露咽弦,起到限流、動(dòng)態(tài)路由等作用胁出,此處可以根據(jù)需要進(jìn)行擴(kuò)展型型,實(shí)現(xiàn)日志記錄、權(quán)限驗(yàn)證等系統(tǒng)級(jí)功能全蝶;
- ribbon:Spring Cloud Ribbon 是一個(gè)基于Http和TCP的客服端負(fù)載均衡工具闹蒜,它是基于Netflix Ribbon實(shí)現(xiàn)的。它不像服務(wù)注冊(cè)中心(eureka)抑淫、API網(wǎng)關(guān)(zuul)那樣獨(dú)立部署绷落,但是它幾乎存在于每個(gè)微服務(wù)的基礎(chǔ)設(shè)施中,當(dāng)Ribbon可以方便的從注冊(cè)中心中獲取已有服務(wù)的列表始苇,因此可以方便的實(shí)現(xiàn)服務(wù)的負(fù)載均衡
- feign:Spring Cloud Feign是一套基于Netflix Feign實(shí)現(xiàn)的聲明式服務(wù)調(diào)用客戶端,它使得編寫Web服務(wù)客戶端變得更加簡(jiǎn)單
,只需要?jiǎng)?chuàng)建接口并用注解來(lái)進(jìn)行配置砌烁,既可以實(shí)現(xiàn)對(duì)
其他微服務(wù)的訪問; -
熔斷器hystrix:微服務(wù)架構(gòu)中,可能會(huì)存在多個(gè)微服務(wù)的級(jí)聯(lián)調(diào)用,例如 A為服務(wù)提供者函喉,B即消費(fèi)A服務(wù)避归,也為C和D提供服務(wù);這時(shí)管呵,如果A不可用梳毙,不僅僅會(huì)造成B服務(wù)不可用,也會(huì)將不可用傳到至C和D捐下;從而造成雪崩效應(yīng)image.png
熔斷器的原理與電路中的保險(xiǎn)絲很強(qiáng)账锹,其實(shí)本質(zhì)就是快速失敗坷襟;當(dāng)一定時(shí)間內(nèi)奸柬,hystrix檢測(cè)到一定數(shù)量的相同錯(cuò)誤,會(huì)強(qiáng)迫之后的訪問快速失敗啤握,不需要系統(tǒng)資源浪費(fèi)在等待超時(shí)連接上鸟缕;防止造成整個(gè)系統(tǒng)的崩潰;
- Spring Cloud Config:為分布式應(yīng)用或微服務(wù)提供外部的配置支持排抬。其分為客戶端和服務(wù)端2部分懂从。服務(wù)端也可以稱之為分布式配置中心,可以作為一個(gè)單獨(dú)的微服務(wù)進(jìn)行部署蹲蒲,用來(lái)連接配置倉(cāng)庫(kù)番甩,并為客戶端提供配置信息訪問接口;
- spring cloud bus:通過消息中間件連接微服務(wù)中的各個(gè)節(jié)點(diǎn)届搁,他可以用于推送配置文件變更通知或節(jié)點(diǎn)間的通訊缘薛。其本質(zhì)是利用MQ廣播機(jī)制在節(jié)點(diǎn)間傳送信息