eureka基本使用

原创 Laughing  2020-03-08 11:10  阅读 24 次 评论 1 条

Eureka提供基于REST的服务,在集群中主要用于服务管理,Eureka提供了基于Java语言的客户端组件,客户端组件实现了负载均衡功能。

Eureka需要一个服务器、若干服务提供者。我们可以把业务组件注册到Eureka服务器中,其他客户端组件可以向服务端获取服务并进行性远程调用。

下面演示一个简单的过程

Springboot各种依赖着实蛋疼,以下代码基于2.2.5.RELEASE版本

构件服务器

    创建Maven工程,在pom.xml文件增加以下依赖
    1. <properties>  
    2.        <java.version>1.8</java.version>  
    3.        <spring-cloud.version>Hoxton.SR3</spring-cloud.version>  
    4.    </properties>  
    5.   
    6.    <dependencies>  
    7.        <dependency>  
    8.            <groupId>org.springframework.cloud</groupId>  
    9.            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>  
    10.        </dependency>  
    11.   
    12.        <dependency>  
    13.            <groupId>org.springframework.boot</groupId>  
    14.            <artifactId>spring-boot-starter-test</artifactId>  
    15.            <scope>test</scope>  
    16.            <exclusions>  
    17.                <exclusion>  
    18.                    <groupId>org.junit.vintage</groupId>  
    19.                    <artifactId>junit-vintage-engine</artifactId>  
    20.                </exclusion>  
    21.            </exclusions>  
    22.        </dependency>  
    23.    </dependencies>  
    24.   
    25.    <dependencyManagement>  
    26.        <dependencies>  
    27.            <dependency>  
    28.                <groupId>org.springframework.cloud</groupId>  
    29.                <artifactId>spring-cloud-dependencies</artifactId>  
    30.                <version>${spring-cloud.version}</version>  
    31.                <type>pom</type>  
    32.                <scope>import</scope>  
    33.            </dependency>  
    34.        </dependencies>  
    35.    </dependencyManagement>  
    启动类增加@EnableEurekaServer注解
    1. @SpringBootApplication  
    2. @EnableEurekaServer  
    3. public class FirstEkServerApplication {  
    4.   
    5.     public static void main(String[] args) {  
    6.         SpringApplication.run(FirstEkServerApplication.class, args);  
    7.     }  
    8.   
    9. }  
修改配置文件,加入以下内容
  1. server.port=8761  
  2. eureka.client.register-with-eureka=false  
  3. eureka.client.fetch-registry=false  
  4.   
  5. eureka.instance.prefer-ip-address=true  
  6.   
  7. eureka.client.service-url.defaultZone = http://localhost:8761/eureka  

这样,服务端就配置完成了,我们运行代码,打开浏览器,可以看到如下界面

服务提供者

创建Maven工程,在pom.xml文件增加以下依赖
  1. <properties>  
  2.     <java.version>1.8</java.version>  
  3.     <spring-cloud.version>Hoxton.SR3</spring-cloud.version>  
  4. </properties>  
  5.   
  6.   
  7. <dependencies>  
  8.     <dependency>  
  9.         <groupId>org.springframework.cloud</groupId>  
  10.         <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>  
  11.     </dependency>  
  12.     <dependency>  
  13.         <groupId>org.springframework.boot</groupId>  
  14.         <artifactId>spring-boot-starter-web</artifactId>  
  15.         <version>2.2.5.RELEASE</version>  
  16.         <scope>compile</scope>  
  17.     </dependency>  
  18. </dependencies>  
  19.   
  20. <dependencyManagement>  
  21.     <dependencies>  
  22.         <dependency>  
  23.             <groupId>org.springframework.cloud</groupId>  
  24.             <artifactId>spring-cloud-dependencies</artifactId>  
  25.             <version>${spring-cloud.version}</version>  
  26.             <type>pom</type>  
  27.             <scope>import</scope>  
  28.         </dependency>  
  29.     </dependencies>  
  30. </dependencyManagement>  
启动类增加@EnableEurekaClient注解
  1. package demo.com.first.ek.service.provider;  
  2.   
  3. import org.springframework.boot.SpringApplication;  
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  5. import org.springframework.cloud.netflix.eureka.EnableEurekaClient;  
  6.   
  7. @SpringBootApplication  
  8. @EnableEurekaClient  
  9. public class FirstEkServiceProviderApplication {  
  10.     public static void main(String[] arg){  
  11.         SpringApplication.run(FirstEkServiceProviderApplication.class);  
  12.     }  
  13.   
  14. }  
修改配置文件,加入以下内容
  1. server:  
  2.   port: 8081  
  3. eureka:  
  4.   client:  
  5.     service-url:  
  6.       defaultZone: http://localhost:8761/eureka  
  7. spring:  
  8.   application:  
  9.     name: first-ek-service-provider  
对外提供服务
  1. package demo.com.first.ek.service.provider.controller;  
  2.   
  3. import demo.com.first.ek.service.provider.entity.Person;  
  4. import org.springframework.http.MediaType;  
  5. import org.springframework.web.bind.annotation.GetMapping;  
  6. import org.springframework.web.bind.annotation.PathVariable;  
  7. import org.springframework.web.bind.annotation.RestController;  
  8.   
  9. @RestController  
  10. public class FirstController {  
  11.   
  12.     @GetMapping(value = "/person/{name}",produces = MediaType.APPLICATION_JSON_VALUE)  
  13.     public Person findPerson(@PathVariable("name") String name){  
  14.         Person person = new Person();  
  15.         person.setAge(30);  
  16.         person.setName(name);  
  17.         return person;  
  18.     }  
  19.   
  20. }  

服务消费者

创建Maven工程,在pom.xml文件增加以下依赖
  1. <properties>  
  2.         <java.version>1.8</java.version>  
  3.         <spring-cloud.version>Hoxton.SR3</spring-cloud.version>  
  4.     </properties>  
  5.   
  6.     <dependencies>  
  7.         <dependency>  
  8.             <groupId>org.springframework.cloud</groupId>  
  9.             <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>  
  10.         </dependency>  
  11.   
  12.         <dependency>  
  13.         <groupId>org.springframework.cloud</groupId>  
  14.             <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>  
  15.         </dependency>  
  16.   
  17.         <dependency>  
  18.             <groupId>org.springframework.boot</groupId>  
  19.             <artifactId>spring-boot-starter-test</artifactId>  
  20.             <scope>test</scope>  
  21.             <exclusions>  
  22.                 <exclusion>  
  23.                     <groupId>org.junit.vintage</groupId>  
  24.                     <artifactId>junit-vintage-engine</artifactId>  
  25.                 </exclusion>  
  26.             </exclusions>  
  27.         </dependency>  
  28.         <dependency>  
  29.             <groupId>org.springframework.boot</groupId>  
  30.             <artifactId>spring-boot-starter-web</artifactId>  
  31.         </dependency>  
  32.         <dependency>  
  33.             <groupId>org.springframework.boot</groupId>  
  34.             <artifactId>spring-boot-starter-web</artifactId>  
  35.         </dependency>  
  36.     </dependencies>  
  37.   
  38.     <dependencyManagement>  
  39.         <dependencies>  
  40.             <dependency>  
  41.                 <groupId>org.springframework.cloud</groupId>  
  42.                 <artifactId>spring-cloud-dependencies</artifactId>  
  43.                 <version>${spring-cloud.version}</version>  
  44.                 <type>pom</type>  
  45.                 <scope>import</scope>  
  46.             </dependency>  
  47.         </dependencies>  
  48.     </dependencyManagement>  
启动类增加@EnableEurekaClient注解
  1. package com.example.first.ek.service.invoker;  
  2.   
  3. import org.springframework.boot.SpringApplication;  
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  5. import org.springframework.cloud.client.discovery.EnableDiscoveryClient;  
  6. import org.springframework.cloud.client.loadbalancer.LoadBalanced;  
  7. import org.springframework.cloud.netflix.eureka.EnableEurekaClient;  
  8. import org.springframework.context.annotation.Bean;  
  9. import org.springframework.web.client.RestTemplate;  
  10.   
  11. @SpringBootApplication  
  12. @EnableEurekaClient  
  13. public class FirstEkServiceInvokerApplication {  
  14.   
  15.     @Bean  
  16.     @LoadBalanced  
  17.     RestTemplate getRestTemplate(){  
  18.         return new RestTemplate();  
  19.     }  
  20.   
  21.     public static void main(String[] args) {  
  22.         SpringApplication.run(FirstEkServiceInvokerApplication.class, args);  
  23.     }  
  24.   
  25. }  
修改配置文件,加入以下内容
  1. server.port=9000  
  2.   
  3. eureka.client.service-url.defaultZone = http://localhost:8761/eureka  
  4. spring.application.name=first-ek-service-invoker  
调用服务
  1. package com.example.first.ek.service.invoker.controller;  
  2.   
  3. import org.springframework.cloud.client.loadbalancer.LoadBalanced;  
  4. import org.springframework.context.annotation.Bean;  
  5. import org.springframework.http.MediaType;  
  6. import org.springframework.web.bind.annotation.GetMapping;  
  7. import org.springframework.web.bind.annotation.RestController;  
  8. import org.springframework.web.client.RestTemplate;  
  9.   
  10. import javax.annotation.Resource;  
  11.   
  12. @RestController  
  13. public class FirstController {  
  14.   
  15.     @Resource  
  16.     RestTemplate restTemplate;  
  17.   
  18.     @GetMapping(value = "/router",produces = MediaType.APPLICATION_JSON_VALUE)  
  19.     public String router(){  
  20. //        RestTemplate restTemplate = getRestTemplate();  
  21.         String json = restTemplate.getForObject("http://first-ek-service-provider/person/lisen",String.class);  
  22.         return json;  
  23.     }  
  24.   
  25.   
  26. }  

查看服务调用

历史上的今天:

本文地址:https://www.lisen.me/basic-use-of-eureka.html
版权声明:本文为原创文章,版权归 木子网 所有,欢迎分享本文,转载请保留出处!

发表评论


表情