国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

spring cloud 使用Eureka 進行服務治理方法

2024-07-14 08:40:32
字體:
來源:轉載
供稿:網友

服務治理可以說是微服務架構中最為核心和基礎的模塊,它主要用來實現各個微服務實例的自動化注冊和發現。

Spring Cloud Eureka是Spring Cloud Netflix 微服務套件的一部分,主要負責完成微服務架構中的服務治理功能。

本文通過簡單的小例子來分享下如何通過Eureka進行服務治理:

  1. 搭建服務注冊中心
  2. 注冊服務提供者
  3. 服務發現和消費

==========我是華麗的分割線========================

一、搭建服務注冊中心

先列出完整目錄結構:

spring,cloud,Eureka,服務治理,springcloud

搭建過程如下:

1.創建maven工程:eureka(具體實現略)

2.修改pom文件,引入依賴

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.sam</groupId> <artifactId>eureka</artifactId> <version>0.0.1-SNAPSHOT</version> <parent>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-parent</artifactId>  <version>1.5.1.RELEASE</version> </parent> <properties>  <javaVersion>1.8</javaVersion> </properties> <!-- 使用dependencyManagement進行版本管理 --> <dependencyManagement>  <dependencies>   <dependency>    <groupId>org.springframework.cloud</groupId>    <artifactId>spring-cloud-dependencies</artifactId>    <version>Camden.SR6</version>    <type>pom</type>    <scope>import</scope>   </dependency>  </dependencies> </dependencyManagement> <dependencies>  <!-- 引入eureka server依賴 -->  <dependency>   <groupId>org.springframework.cloud</groupId>   <artifactId>spring-cloud-starter-eureka-server</artifactId>  </dependency> </dependencies></project>

3.創建啟動類

/** *  * @EnableEurekaServer * 用來指定該項目為Eureka的服務注冊中心 */@EnableEurekaServer@SpringBootApplicationpublic class EurekaApp { public static void main(String[] args) {  SpringApplication.run(EurekaApp.class, args); }}

4.配置application.properties文件

#設置tomcat服務端口號server.port=1111#設置服務名稱spring.application.name=eureka-serviceeureka.instance.hostname=localhost#注冊中心不需要注冊自己eureka.client.register-with-eureka=false#注冊中心不需要去發現服務eureka.client.fetch-registry=false#設置服務注冊中心的URLeureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka

5.啟動服務并訪問,我們會看到這樣的畫面:

spring,cloud,Eureka,服務治理,springcloud

二、注冊服務提供者

先列出完整目錄結構:

spring,cloud,Eureka,服務治理,springcloud

搭建過程如下:

1.創建maven工程:hello-service(具體實現略)

2.修改pom文件,引入依賴

 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.sam</groupId> <artifactId>hello-service</artifactId> <version>0.0.1-SNAPSHOT</version> <parent>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-parent</artifactId>  <version>1.5.1.RELEASE</version> </parent> <properties>  <javaVersion>1.8</javaVersion> </properties> <dependencyManagement>  <dependencies>   <dependency>    <groupId>org.springframework.cloud</groupId>    <artifactId>spring-cloud-dependencies</artifactId>    <version>Camden.SR6</version>    <type>pom</type>    <scope>import</scope>   </dependency>  </dependencies> </dependencyManagement> <dependencies>  <!-- 引入eureka 客戶端依賴 -->  <dependency>   <groupId>org.springframework.cloud</groupId>   <artifactId>spring-cloud-starter-eureka</artifactId>  </dependency> </dependencies></project>

3.創建啟動類

/*** *  * @EnableDiscoveryClient * 讓服務使用eureka服務器 * 實現服務注冊和發現 * */@EnableDiscoveryClient@SpringBootApplicationpublic class HelloApp { public static void main(String[] args) {  SpringApplication.run(HelloApp.class, args); }}

4.創建controller

@RestControllerpublic class HelloController { Logger logger = LoggerFactory.getLogger(HelloController.class); @Autowired DiscoveryClient discoveryClient;  @RequestMapping("/hello") public String hello() {  ServiceInstance instance = discoveryClient.getLocalServiceInstance();  //打印服務的服務id  logger.info("*********" + instance.getServiceId());  return "hello,this is hello-service"; }}

5.配置application.properties文件

server.port=9090#設置服務名spring.application.name=hello-service#設置服務注冊中心的URL,本服務要向該服務注冊中心注冊自己eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka

6.啟動并測試

1.)啟動后再hello-service的控制臺會有這種字樣(xxx代表你的PC名)

 

復制代碼 代碼如下:
Registered instance HELLO-SERVICE/xxx:hello-service:9090 with status UP (replication=false)

 

eureka的控制臺會打印出如下字樣(xxx代表你的PC名)

 

復制代碼 代碼如下:
Registered instance HELLO-SERVICE/xxx:hello-service:9090 with status UP (replication=false)

 

2.)再次訪問localhost:1111,會發現有服務注冊到注冊中心了

spring,cloud,Eureka,服務治理,springcloud

三、服務發現和消費

完整目錄結構如下:

spring,cloud,Eureka,服務治理,springcloud

搭建過程:

1.創建maven工程(具體實現略)

2.修改pom文件,引入依賴

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.sam</groupId> <artifactId>hello-consumer</artifactId> <version>0.0.1-SNAPSHOT</version> <parent>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-parent</artifactId>  <version>1.5.1.RELEASE</version> </parent> <properties>  <javaVersion>1.8</javaVersion> </properties> <dependencyManagement>  <dependencies>   <dependency>    <groupId>org.springframework.cloud</groupId>    <artifactId>spring-cloud-dependencies</artifactId>    <version>Camden.SR6</version>    <type>pom</type>    <scope>import</scope>   </dependency>  </dependencies> </dependencyManagement> <dependencies>  <!-- 引入eureka 客戶端依賴 -->  <dependency>   <groupId>org.springframework.cloud</groupId>   <artifactId>spring-cloud-starter-eureka</artifactId>  </dependency>  <!-- 引入ribbon 依賴 ,用來實現負載均衡,我們這里只是使用,先不作其他介紹-->  <dependency>   <groupId>org.springframework.cloud</groupId>   <artifactId>spring-cloud-starter-ribbon</artifactId>  </dependency> </dependencies></project>

這里比hello-service服務提供者,多了ribbon的依賴

3.創建啟動類

@EnableDiscoveryClient@SpringBootApplicationpublic class ConsumerApp { //@Bean 應用在方法上,用來將方法返回值設為為bean @Bean @LoadBalanced //@LoadBalanced實現負載均衡 public RestTemplate restTemplate() {  return new RestTemplate(); }  public static void main(String[] args) {  SpringApplication.run(ConsumerApp.class, args); }}

這里也要用到@EnableDiscoveryClient, 讓服務使用eureka服務器, 實現服務注冊和發現 

4.創建controller

@RestControllerpublic class ConsumerController { //這里注入的restTemplate就是在com.sam.ConsumerApp中通過@Bean配置的實例 @Autowired RestTemplate restTemplate; @RequestMapping("/hello-consumer") public String helloConsumer() {  //調用hello-service服務,注意這里用的是服務名,而不是具體的ip+port  restTemplate.getForObject("http://hello-service/hello", String.class);  return "hello consumer finish !!!"; }}

5.配置application.properties文件

server.port=9999spring.application.name=hello-consumereureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka#這里的配置項目和服務提供者hello-service一樣

6.啟動,測試1.)啟動eureka。為了展示負責均衡的效果,我們的hello-service啟動兩個服務,啟動兩個服務的具體步驟如下

spring,cloud,Eureka,服務治理,springcloud

spring,cloud,Eureka,服務治理,springcloud

spring,cloud,Eureka,服務治理,springcloud

spring,cloud,Eureka,服務治理,springcloud

以上是hello-service1的啟動步驟,端口號為9090;同樣方法設置hello-service2,端口號為9091(具體實現略)。

2.)啟動hello-consumer

3.)再次訪問http://localhost:1111/,會發現有2個hello-service服務(端口號一個是9090,一個是9091),1個hello-consume服務

4.) 多次訪問http://localhost:9999/hello-consumer,會發現hello-service1和hello-service2會輪流被調用(已經實現了負責均衡),可以通過兩者的控制臺打印內容確認(還記得我們在hello-service的controller中有個loggerlogger.info("*********" + instance.getServiceId());嗎?對,就是這個打印)

spring,cloud,Eureka,服務治理,springcloud

spring,cloud,Eureka,服務治理,springcloud

spring,cloud,Eureka,服務治理,springcloud

spring,cloud,Eureka,服務治理,springcloud

四、總結

以上實例實現了基本的服務治理:

  1. 通過spring-cloud-starter-eureka-server和@EnableEurekaServer實現服務注冊中心
  2. 通過spring-cloud-starter-eureka和@EnableDiscoveryClient使用并注冊到服務注冊中心
  3. 通過spring-cloud-starter-eureka和@EnableDiscoveryClient使用注冊中心并發現服務,通過spring-cloud-starter-ribbon來實現負載均衡消費服務

PS:這里說明下,我用的IDE是Spring Tool Suite,是spring定制版的eclipse,方便我們使用spring進行開發,有興趣的朋友可以自行百度了解下。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嘉峪关市| 罗平县| 铜梁县| 丰都县| 洛隆县| 隆子县| 翼城县| 华容县| 宜川县| 建平县| 蓬莱市| 上林县| 桃源县| 陇西县| 大足县| 黄山市| 三门县| 涿鹿县| 昭苏县| 天峨县| 通州市| 新疆| 双牌县| 麟游县| 化德县| 凤凰县| 故城县| 林州市| 城步| 凌海市| 莆田市| 星子县| 高密市| 襄垣县| 广灵县| 炎陵县| 库伦旗| 应城市| 喀什市| 苍溪县| 科技|