什么是Spring Cloud Eureka
創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),吉木乃網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:吉木乃等地區(qū)。吉木乃做網(wǎng)站價(jià)格咨詢:028-86922220Spring Cloud Eureka 是 Spring Cloud 中的一個(gè)組件,它是基于 Netflix Eureka 做了二次封裝,主要是負(fù)責(zé)完成微服務(wù)框架中服務(wù)治理的功能。Spring Cloud通過(guò)為 Eureka 增加了 Spring Boot 風(fēng)格的自動(dòng)化配置,我們只需要通過(guò)簡(jiǎn)單的引用依賴和注解就能讓 Spring Boot 夠?qū)⒌奈⒎?wù)應(yīng)用輕松的與 Eureka 服務(wù)治理體系進(jìn)行整合。
服務(wù)治理
服務(wù)治理是微服務(wù)框架中最為核心和基礎(chǔ)的模塊,它主要是用來(lái)實(shí)現(xiàn)各個(gè)微服務(wù)實(shí)例的自動(dòng)化注冊(cè)與發(fā)現(xiàn)。
最初開(kāi)始,可能構(gòu)建的微服務(wù)系統(tǒng)服務(wù)并不是很多,我們可以通過(guò)一些靜態(tài)配置來(lái)完成服務(wù)的調(diào)用。比如有兩個(gè)服務(wù) A 和 B,其中 A 服務(wù)需要調(diào)用 B 服務(wù)來(lái)完成一個(gè)業(yè)務(wù)操作時(shí),為了實(shí)現(xiàn) B 服務(wù)的高可用,無(wú)論我們采用服務(wù)端的復(fù)雜均衡,還是客戶端的負(fù)載均衡,我們都需要手工的來(lái)維護(hù)一份 B 的實(shí)例列表。但是隨著業(yè)務(wù)的發(fā)展,系統(tǒng)功能越來(lái)越復(fù)雜,相應(yīng)的微服務(wù)也是越來(lái)越多,這種靜態(tài)手工維護(hù)的難度會(huì)越來(lái)越高。
為了解決這種問(wèn)題,產(chǎn)生了大量的服務(wù)治理的框架和產(chǎn)品。這些框架其實(shí)都是圍繞著服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)機(jī)制來(lái)完成對(duì)微服務(wù)應(yīng)用實(shí)例的自動(dòng)化管理。
服務(wù)注冊(cè)
在服務(wù)治理框架中,通常都會(huì)構(gòu)建一個(gè)服務(wù)注冊(cè)中心,每個(gè)服務(wù)實(shí)例單元向注冊(cè)中心登記自己的服務(wù),將實(shí)例主機(jī)位置、端口號(hào)、版本號(hào)、通信協(xié)議等一系列附加信息告訴注冊(cè)中心,注冊(cè)中心按服務(wù)名分類組織服務(wù)清單。
服務(wù)發(fā)現(xiàn)
由于在服務(wù)治理框架下操作,服務(wù)間的通信與調(diào)用不再是通過(guò)指定具體的實(shí)例地址來(lái)實(shí)現(xiàn),而是通過(guò)向服務(wù)名發(fā)起請(qǐng)求調(diào)用實(shí)現(xiàn)。所以,服務(wù)調(diào)用方在調(diào)用服務(wù)提供方的接口時(shí),并不知道具體的服務(wù)實(shí)例位置。因此,需要先向注冊(cè)中心發(fā)起查詢請(qǐng)求,獲取實(shí)例清單,以實(shí)現(xiàn)對(duì)具體服務(wù)實(shí)例的訪問(wèn)。
搭建 Eureka 注冊(cè)中心服務(wù)
搭建單中心Eureka
我們之后的所有開(kāi)發(fā)都會(huì)基于以上版本進(jìn)行操作,需要注意的是:Sring Cloud 使用的是 SNAPSHOT 版,所以需要在 pom 文件中指定倉(cāng)庫(kù)的地址。
首先,我們新建一個(gè) Spring Boot 工程,命名為:spring-cloud-eureka,并在 pom 中添加必要的依賴,具體 pom 文件如下:
<?xml version="1.0" encoding="UTF-8"?>4.0.0 com.sagesource spring-cloud-eureka 0.0.1-SNAPSHOT jar spring-cloud-eureka org.springframework.boot spring-boot-starter-parent 2.0.2.RELEASE UTF-8 UTF-8 1.8 Finchley.BUILD-SNAPSHOT org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-starter-netflix-eureka-server org.springframework.boot spring-boot-starter-test test org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import org.springframework.boot spring-boot-maven-plugin spring-snapshots Spring Snapshots https://repo.spring.io/snapshot true spring-milestones Spring Milestones https://repo.spring.io/milestone false