微服务:整合 Spring Cloud Eureka

目录

   微服务:整合 Spring Cloud Eureka - 注册中心 Eureka Server 

   微服务:整合 Spring Cloud Eureka - 服务注册 Eureka Client  

   微服务:整合 Spring Cloud Eureka - 服务发现 DiscoveryClient 

   微服务:整合 Spring Cloud Eureka - 服务消费以及Ribbon简单使用 

   微服务:整合 Spring Cloud Eureka - 高可用集群  

   微服务:整合 Spring Cloud Eureka - .NET Core Mvc Api (C#) 

   微服务:整合 Spring Cloud Eureka - 服务治理机制  

   微服务:整合 Spring Cloud Eureka - 服务事件监听  

   微服务:整合 Spring Cloud Eureka - 高级属性Region、Zone

   微服务:整合 Spring Cloud Eureka - Rest接口文档 

   微服务:整合 Spring Cloud Eureka - Security 安全保护

一、简介

  服务治理可以说是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册和发现。Spring Cloud Eureka是Spring Cloud Netflix 微服务套件的一部分,主要负责完成微服务架构中的服务治理功能。

  Eureka由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。

二、注册中心设计

  先来一张图感觉一下:

     

1、注册中心:Eureka Server

  • 提供服务注册和发现

2、服务提供者:Service Provider

  • 将自身服务注册到Eureka,从而使服务消费方能够找到

3、服务消费者:Service Consumer

  • 从Eureka获取注册服务列表,从而能够消费服者

三、Eureka注册中心搭建

1、项目结构

                

2、父pom.xml

<?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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.demo</groupId>
    <artifactId>spring-cloud-register</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>demo-register</module>
        <module>demo-service-provider</module>
        <module>demo-service-consumer</module>
    </modules>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Hoxton.SR1</spring-cloud.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>2.2.4.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

        </dependencies>
    </dependencyManagement>
</project>

3、demo-register 的 pom.xml

<?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>spring-cloud-register</artifactId>
        <groupId>com.demo</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>demo-register</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

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

    </dependencies>

</project>

4、RegisterApplication.java

package com.demo.register;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;


@EnableEurekaServer
@SpringBootApplication
public class RegisterApplication{

    public static void main(String[] args) {
        SpringApplication.run(RegisterApplication.class, args);
    }
}

5、application.yml

server:
  port: 8001
  servlet:
    context-path: /register

spring:
  application:
    name: demo-register

eureka:
  instance:
    hostname: localhost
  client:
    register-with-eureka: false
    fetch-registry: false
    instance-info-replication-interval-seconds: 30
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}${server.servlet.context-path}/eureka/

 配置说明:

  1、spring.application.name,定义服务名称为demo-register;

  2、eureka.instance.hostname,指定了Eureka服务端的地址,因为我们是在本地搭建的,所以填写为localhost即可;

  3、eureka.client.register-with-eureka,表示是否将服务注册到Eureka服务端,由于我们这里是单节点的Eureka服务端,所以这里指定false;

  4、eureka.client.fetch-registry,表示是否从Eureka服务端获取服务信息,因为这里是单节点的Eureka服务端,并不需要从别的Eureka服务端同步服务信息,所以这里设置为false;

  5、eureka.client.instance-info-replication-interval-seconds,微服务更新实例信息的变化到Eureka服务端的间隔时间,单位为秒,这里指定为30秒(这就是微服务启动后,要过一会才能注册到Eureka服务端的原因)。

  6、eureka.client.serviceUrl.defaultZone,指定Eureka服务端的地址,这里为当前项目地址,即 http://localhost:8001/register/eureka/

5、运行效果图

  通过以上四个步骤,一个微服务的注册中心已经搭建完毕。代码就是这么简单,不要怀疑自己。

  

 6、总结

  erueka的控制台颜值虽然不高,但是作为注册中心还是很不错的。eureka是一个高可用的注册中心,zookeeper是高一致性的注册中心。我们可以修改eureka的配置来提高eureka的高一致性。

  nacos是阿里系的微服务注册中心,同时nacos也是配置中心。eureka、zookeeper、nacos都可以做为注册中心,他们各有优点。最好是每个都了解一下。

原文地址:https://www.cnblogs.com/yansg/p/12494917.html