32、微服务注册中心 Eureka

1、创建Eureka 服务器cloud-eureka-server7001 添加pom依赖

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <parent>
        <artifactId>springcloud2021</artifactId>
        <groupId>com.atguigu.springcloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>cloud-eureka-server7001</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
        <dependency>
            <groupId>com.atguigu.springcloud</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

    </dependencies>

</project>

6、编写eureka的服务段配置application.yml

spring:
  application:
    name: cloud-eureka-7001

server:
  port: 7001

eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

3、编写主启动类

@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication7001 {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication7001.class,args);
    }
}

4、将cloud-provider-payment8001 服务提供者注册带Eureka中去

添加pom依赖

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

修改application.yml配置文件

server:
  port: 8001

spring:
  application:
    name: cloud-payment-service
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://8.129.215.115:3306/cloud2021?useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    password: root

mybatis-plus:
  global-config:
    db-config:
      logic-delete-value: 1 # 逻辑已删除值(默认为 1)
      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
  mapper-locations: classpath:mapper/*Mapper.xml
  type-aliases-package: com.atauigu.springcloud.entity



logging:
  level:
    com.atauigu.springcloud.mapper: debug

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:7001/eureka

修改主启动类 加上 @EnableEurekaClient 注解

@SpringBootApplication
@EnableEurekaClient
public class PaymentApplication8001 {
    public static void main(String[] args) {
        SpringApplication.run(PaymentApplication8001.class,args);
    }
}

5、将cloud-consumer-order80 服务提供者注册带Eureka中去

添加eureka依赖,修改pom文件

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

修改application.yml配置文件

server:
  port: 80

spring:
  application:
    name: cloud-order-service

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:7001/eureka

修改主启动类 加上 @EnableEurekaClient 注解

@SpringBootApplication
@EnableEurekaClient
public class OrderApplication80 {
    public static void main(String[] args) {
        SpringApplication.run(OrderApplication80.class,args);
    }
}

6、Eureka 集群原理搭建,cloud-eureka-server7001 已经搭建好了,但是做集群要修改配置文件

 

 7、创建cloud-eureka-server7002 第二个eureka服务,基本上和cloud-eureka-server7001 一样,修改7002的配置文件

 

 重启两个eureka服务,测试是否正常访问

8、将cloud-provider-payment8001服务提供者注册到eureka集群中,只需要修改服务的配置文件

 

 

9、将cloud-consumer-order80服务提供者注册到eureka集群中,只需要修改服务的配置文件

 10、创建两个一样一样的服务提供者cloud-provider-payment8002 做提供者的集群,复制cloud-provider-payment8001

   复制cloud-provider-payment8001 的pom文件,复制cloud-provider-payment8002 的application.yml 修改端口号

   修改PaymentController类,标识掉的是哪个端口号,测试轮询访问

 

 

11、cloud-consumer-order80 服务消费者,修改 OrderController类

 

 

 修改RestConfig配置类

 

 12、修改服务名称,和是否显示IP地址

 

 13、DiscoveryClient 的使用

 @Resource
    private DiscoveryClient discoveryClient;

@GetMapping("/discovery")
    public Object discovery () {
        List<String> services = discoveryClient.getServices();
        for(String element : services) {
            log.info("***** element: "+ element);
        }
        List<ServiceInstance> instances = discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE");
        for (ServiceInstance instance : instances) {
            log.info(instance.getInstanceId()+"\t"+ instance.getHost()+"\t"+ instance.getPort()+"\t"+ instance.getUri());
        }
        return this.discoveryClient;
    }

主启动类上加 @EnableDiscoveryClient

14、Eureka的自我保护机制:由于网络是不可靠的,eureka默认不会立马注销客户端的注册信息,因为有可能客户端是正常的由于网络延迟导致eureka没有收到客户端的心跳,默认还是会保留客户端的注册信息,这就是Eureka的自我保护

如何禁用eureka的自我保护,到eureka服务端的 application.yml 修改配置

 

 修改客户端(服务提供者/服务消费者)application.yml修改配置

 

posted @ 2021-06-28 14:58  shunnWcs  阅读(49)  评论(0)    收藏  举报