Spring Cloud Eureka--服务注册组件配置与使用

目标:使用Spring Cloud Eureka建立服务注册中心

开发环境:IntelliJ IDEA

操作步骤:基础环境配置->Eureka组件配置->应用参数配置->应用运行测试->HA配置

1.基础环境配置

Spring Cloud是在Spring Boot基础上构建的用于快速构建分布式系统的通用模式的工具集,因此需要简单了解Spring Boot的基本概念、开发流程。

基本概念:

Spring Boot是为了改善传统Java开发中配置繁重、开发效率低下、部署流程复杂等缺陷而产生的,使用习惯优于配置的理念让项目快速运行,以下简要介绍本项目开发相关的Spring Boot两大核心功能。

(1)可独立运行的Spring项目

Spring Boot可以以jar包形式独立运行:java -jar xx.jar;

(2)内嵌Servlet容器 

Spring Boot可选择内嵌Tomcat、Jetty或者Undertow,无需以war包的形式部署项目。

开发流程:

(1)新建Maven项目命名为Spring_Cloud_Eureka

File->New->Project:选择Maven项目类型,并设置Project JDK为本地1.8版本


填写项目参数:



项目结构:其中src文件夹已删除,采用多module的工程开发模式(在后文中详述)


(2)基础配置及其说明

修改项目主配置文件pom.xml:

a.spring-boot-release设置

设置spring boot版本为1.5.3,版本参考地址:

https://repo.spring.io/milestone/org/springframework/boot/spring-boot-cli/

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.3.RELEASE</version>
</parent>

b.环境变量设置

设置编码类型为UTF-8,java版本为1.8,Spring Cloud的版本为Edgware.SR3

Spring Cloud版本参考地址:

http://projects.spring.io/spring-cloud/

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <spring-cloud.version>Edgware.SR3</spring-cloud.version>
</properties>
c.spring-cloud依赖配置

<dependencyManagement>
    <dependencies>
        <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>
(3)Import Changes应用配置

等待配置相关依赖导入完成即可。

2.Eureka组件配置

服务注册与发现组件是为了解决服务提供者与服务消费者之间的直接耦合问题而产生的。因此服务注册与发现组件、服务提供者、服务消费者三者之间的关系可分为四个部分。

(1)各微服务启动时,将自己的网络地址等信息注册到服务发现组件中,服务发现组件存储这些信息

(2)服务消费者从服务发现组件查询服务提供者的网络地址,并使用该地址调用服务提供者的接口

(3)各个微服务与服务发现组件使用一定机制(例如心跳)通信,服务发现组件长时间无法与某微服务实例通信,则注销实例

(4)微服务网络地址发生变更会重新注册到服务发现组件

因此服务注册与发现的核心功能如下:

(1)服务注册表

组件的核心,记录微服务信息,如名称、IP、端口等,提供查询API和管理API

(2)服务注册与发现

服务注册:微服务启动时将信息注册到服务发现组件上的过程

服务发现:查询可用微服务列表及其网络地址的机制

(3)服务检查

使用一定机制定时检测已注册的服务


Spring Cloud Eureka组件:集成自Netflix开源的服务发现组件Eureka,Eureka自身是一个基于REST的服务,包含Server和Client两部分,项目地址:

https://github.com/Netflix/Eureka

在上一节主项目的基础上,新建module工程作为Eureka注册服务端模块。

开发流程:

(1)新建Module工程-CaaS_Eureka_Server

File->New->Module:选择Maven项目类型,JDK版本选择本地版本




Module结构:



(2)添加配置依赖

Eureka Server组件依赖

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

spring boot maven插件支持

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

(3)编写子项目运行主程序

新建package:com.boe.caas.eureka

新建EurekaServerApplication.java

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

说明:

Spring Boot通常有一个名为*Application的入口类,其中包含一个main方法。

@SpringBootApplication是Spring Boot的核心注解,是一个组合注解,主要组合了@Configuration、@EnableAutoConfiguration、@ComponentScan

@EurekaServerApplication启用Eureka内置服务

3.应用参数配置

在src/main/resources下新建配置文件application.yml,配置应用启动的相关参数

其中register-with-eureka表示是否将自身注册到服务注册中心,该处设置为false

fetch-registry表示是否同步信息,此处为server集群配置,单点设置为false

server:
  port: 8761
eureka:
  instance:
    hostname: localhost
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

4.应用运行测试

操作:run EurekaServerApplication.java

地址:http://localhost:8761/


5.HA配置

作为项目所有微服务的注册中心,Eureka Server需要有一定的高可用特性,最简单的方法为创建Server集群。

与单sever module类似,新建一个module工程,命名为CaaS_Eureka_Server_HA

与单节点的主要区别在配置文件:application.yml

spring:
  application:
    name: CaaS_Eureka_Server_HA

---
spring:
  profiles: peer1
server:
  port: 8761
eureka:
  instance:
    hostname: peer1
  client:
    service-url:
      defaultZone: http://peer2:8762/eureka/
      
 ---
spring:
  profiles: peer2
server:
  port: 8762
eureka:
  instance:
    hostname: peer2
  client:
    service-url:
      defaultZone: http://peer1:8761/eureka/

配置本地hosts文件,加入解析:drivers/etc/hosts

127.0.0.1    peer1    peer2

使用maven插件编译子项目CaaS_Eureka_Server_HA或者mvn命令编译打包

mvn compile


mvn package


使用不同参数启动server:

java -jar xxx.jar --spring.profiles.active=peer1

java -jar xxx.jar --spring.profiles.active=peer2


可以看到peer1 server作为一个服务注册到了注册中心,并且其replica为peer2


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值