摘要:服務(wù)治理上是由開源的一款基于的服務(wù)治理組件,包括及。由于種種原因,版本已經(jīng)凍結(jié)開發(fā),目前最新版本是年月份發(fā)布的版本。服務(wù)發(fā)現(xiàn)選型其中比較受眾關(guān)注的就是和這兩款產(chǎn)品,這兩款產(chǎn)品各有所長(zhǎng),各有所適,開發(fā)者可用按需選擇。
服務(wù)治理:Spring Cloud Eureka(上)
Netflix Eureka是由Netflix開源的一款基于REST的服務(wù)治理組件,包括Eureka Server及Eureka Client。由于種種原因,Eureka 2.x版本已經(jīng)凍結(jié)開發(fā),目前最新版本是2018年8月份發(fā)布的1.9.4版本。1. 服務(wù)發(fā)現(xiàn) 1.1 Eureka簡(jiǎn)介
Spring Cloud Eureka是Pivotal公司為Netflix Eureka整合于Spring Cloud生態(tài)系統(tǒng)提供的版本。
Eureka是Netflix公司提供的開源服務(wù)發(fā)現(xiàn)組件(現(xiàn)已閉源),最新版本是1.9.4,該組件提供的服務(wù)發(fā)現(xiàn)可以為負(fù)載均衡、failover等提供支持。Eureka包括Eureka Server和Eureka Client。Eureka Server提供REST服務(wù),Eureka Clinet多數(shù)是使用Java編寫的客戶端(Eureka Client可以使用其他語(yǔ)言編寫,比如Node.js或.NET),用于簡(jiǎn)化和Eureka Server的交互。1.2 Eureka Server簡(jiǎn)單案例
所有工程使用Spring Cloud的新版Greenwich.SR1和Maven構(gòu)建。
1.2.1 創(chuàng)建Spring Cloud Eureka Server工程pom.xml內(nèi)容如下:
4.0.0 org.springframework.boot spring-boot-starter-parent 2.1.4.RELEASE watermelon.cloud eureka-server 0.0.1-SNAPSHOT eureka-server Spring Cloud Eureka Server 1.8 Greenwich.SR1 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
Finchley版本之后,Eureka的depenecy片段稍微有點(diǎn)不同
1.2.2 開啟EurekaServer支持org.springframework.cloud spring-cloud-starter-eureka-server org.springframework.cloud spring-cloud-starter-netflix-eureka-server
在啟動(dòng)類上加上@EnableEurekaServer注解。
@SpringBootApplication @EnableEurekaServer public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } }1.2.3 修改application.yml配置文件
server: port: 1111 spring: application: name: eureka-server eureka: instance: hostname: localhost client: register-with-eureka: false fetch-registry: false serviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ server: waitTimeInMsWhenSyncEmpty: 0 enableSelfPreservation: false # 后面詳細(xì)講配置1.2.4 編譯、啟動(dòng)
瀏覽器訪問http://localhost:1111/出現(xiàn)如下頁(yè)面就說明服務(wù)端簡(jiǎn)單案例構(gòu)建成功。
1.3 Eureka Client簡(jiǎn)單案例 1.3.1 創(chuàng)建Eureka Client工程pom.xml內(nèi)容如下:
1.3.2 啟動(dòng)類啟用DiscoveryClient支持4.0.0 org.springframework.boot spring-boot-starter-parent 2.1.4.RELEASE watermelon.cloud eureka-client 0.0.1-SNAPSHOT eureka-client Spring Cloud Eureka Client 1.8 Greenwich.SR1 org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.projectlombok lombok true 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
@SpringBootApplication @EnableDiscoveryClient public class EurekaClientApplication { public static void main(String[] args) { SpringApplication.run(EurekaClientApplication.class, args); } }1.3.3 修改applicaiton.yml配置文件
server: port: 2222 spring: application: name: eureka-client # 如果不配置name屬性,在注冊(cè)中心的實(shí)例名都將是UNKNOWN eureka: client: serviceUrl: defaultZone: http://localhost:1111/eureka/ # 服務(wù)注冊(cè)中心地址1.3.4 HelloController簡(jiǎn)單打印輸出
@RestController @Slf4j public class HelloController { private final DiscoveryClient client; @Autowired public HelloController(DiscoveryClient client) { this.client = client; } @GetMapping("/hello") public String sayHello() { List先啟動(dòng)Eureka Server,再啟動(dòng)Eureka Client,測(cè)試serviceInstances = client.getInstances("eureka-client"); serviceInstances.forEach(serviceInstance -> { log.info("Host: {}, Port: {}", serviceInstance.getHost(), serviceInstance.getPort()); log.info("serviceId: {}, InstanceId: {}", serviceInstance.getServiceId(), serviceInstance.getInstanceId()); }); return "Hello, Spring Cloud Eureka. - " + LocalDateTime.now().toString(); } }
訪問http://localhost:111/eureka/,如果Server和Client都啟動(dòng)成功并且配置正確的情況將會(huì)如下情況。
訪問http://localhost:2222/hello/,會(huì)出現(xiàn)文字信息和日志輸出。
簡(jiǎn)單的入門案例就此搭建結(jié)束,雖然沒實(shí)現(xiàn)什么功能,但是我們可以從服務(wù)注冊(cè)中心觀察到可用的Eureka Client實(shí)例,和在日志中打印服務(wù)實(shí)例的一些簡(jiǎn)短信息。
1.4 Eureka Server的REST APIEureka 在 GitHub 的 wiki 上專門寫了一篇《 Eureka REST operations》來介紹 Eureka Server 的 REST API 接口,Spring Cloud Netfix Eureka 跟 Spring Boot 適配之后,提供的 REST API 與原始的 REST API 有一點(diǎn)點(diǎn)不同,其路徑中的 {version} 值固定為 eureka,其他的變化不大.
以下簡(jiǎn)單演示apps的REST端點(diǎn):訪問http://localhost:1111/eureka/apps,會(huì)得到以下返結(jié)果。
1 UP_1_ EUREKA-CLIENT localhost:eureka-client:2222 localhost EUREKA-CLIENT 192.168.91.1 UP UNKNOWN 2222 443 1 MyOwn 30 90 1557113978372 1557114128293 0 1557113978373 2222 http://localhost:2222/ http://localhost:2222/actuator/info http://localhost:2222/actuator/health eureka-client eureka-client false 1557113978373 1557113978278 ADDED
文末提供一些,服務(wù)發(fā)現(xiàn)選型對(duì)比,下篇文章介紹Eureka的核心類及其內(nèi)容。
2. 服務(wù)發(fā)現(xiàn)選型
其中比較受眾關(guān)注的就是Eureka和Consul這兩款產(chǎn)品,這兩款產(chǎn)品各有所長(zhǎng),各有所適,開發(fā)者可用按需選擇。
個(gè)人微信公眾號(hào),歡迎交流鴨!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/74427.html
摘要:屬性對(duì)應(yīng)服務(wù)注冊(cè)中心的配置內(nèi)容,指定服務(wù)注冊(cè)中心的位置。項(xiàng)目是針對(duì)的服務(wù)治理實(shí)現(xiàn)。下面可以嘗試讓的服務(wù)提供者運(yùn)行起來。我們可以用下面的命令啟動(dòng)的開發(fā)模式服務(wù)端啟動(dòng)完成之后,我們?cè)賹⒅案脑旌蟮姆?wù)提供者啟動(dòng)起來。 已經(jīng)有非常長(zhǎng)的時(shí)間沒有更新《Spring Cloud構(gòu)建微服務(wù)架構(gòu)》系列文章了,自從開始寫Spring Cloud的專題內(nèi)容開始就獲得了不少的閱讀量和認(rèn)可,當(dāng)然也有一些批評(píng)...
摘要:服務(wù)續(xù)約在服務(wù)注冊(cè)完成之后,服務(wù)提供者需要維護(hù)一個(gè)心跳來告知注冊(cè)中心服務(wù)實(shí)例處于正常運(yùn)行狀態(tài)中,防止注冊(cè)中心將正常的服務(wù)實(shí)例剔除出注冊(cè)中心。 Spring Cloud Eureka 目錄 前言 構(gòu)建服務(wù)注冊(cè)中心 服務(wù)注冊(cè)與發(fā)現(xiàn) Eureka的基礎(chǔ)架構(gòu) Eureka的服務(wù)治理機(jī)制 Eureka的配置 代碼地址 前言 服務(wù)治理 ?隨著微服務(wù)應(yīng)用的不斷增加,靜態(tài)配置會(huì)越來越難以維護(hù),并且...
摘要:下一篇介紹基于的服務(wù)注冊(cè)與調(diào)用。服務(wù)提供者工程配置這里服務(wù)提供者是使用之前進(jìn)階教程第三篇整合連接池以及監(jiān)控改造而來,這里一樣的部分就不再重復(fù)說明,下面將說明新增的部分。 Spring Cloud簡(jiǎn)介 Spring Cloud是一個(gè)基于Spring Boot實(shí)現(xiàn)的云應(yīng)用開發(fā)工具,它為基于JVM的云應(yīng)用開發(fā)中涉及的配置管理、服務(wù)發(fā)現(xiàn)、斷路器、智能路由、微代理、控制總線、全局鎖、決策競(jìng)選、分...
摘要:下面的例子,我們將利用上一篇中構(gòu)建的作為服務(wù)注冊(cè)中心作為服務(wù)提供者作為基礎(chǔ)。我們先來創(chuàng)建一個(gè)服務(wù)消費(fèi)者工程,命名為。初始化,用來真正發(fā)起請(qǐng)求。注解用來將當(dāng)前應(yīng)用加入到服務(wù)治理體系中。 通過上一篇《Spring Cloud構(gòu)建微服務(wù)架構(gòu):服務(wù)注冊(cè)與發(fā)現(xiàn)》,我們已經(jīng)成功地將服務(wù)提供者:eureka-client或consul-client注冊(cè)到了Eureka服務(wù)注冊(cè)中心或Consul服務(wù)端...
閱讀 1183·2021-10-20 13:48
閱讀 2224·2021-09-30 09:47
閱讀 3116·2021-09-28 09:36
閱讀 2361·2019-08-30 15:56
閱讀 1212·2019-08-30 15:52
閱讀 2031·2019-08-30 10:48
閱讀 622·2019-08-29 15:04
閱讀 582·2019-08-29 12:54