0、搭建Eureka注册中心

Eureka是什么

      Eureka是Netflix使用Java开发的服务治理框架,提供服务注册与发现功能,分为客户端与服务端。
      Eureka Server服务端,提供服务注册功能,会维护一个服务列表,存储所有节点的信息。
      Eureka Client客户端,默认每30s向服务端发送心跳连接注册自身,超时会被认为服务不可用。客户端分为服务提供者和服务消费者。

Eureka搭建实战

  1. 新建maven项目,archetype选择maven-archetype-quickstart,并在pom.xml中引入依赖
依赖:dependencies中添加
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
:
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Finchley.SR3</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-start-parent</artifactId>
            <version>2.0.2.RELEASE</version>
        </dependency>
    </dependencies>
</dependencyManagement>

问题一:为什么使用spring-cloud-starter-netflix-eureka-server而不是spring-cloud-starter-eureka-server依赖?

答:spring-cloud-starter-eureka-server依赖已经废弃;
spring-cloud-starter-netflix-eureka-server依赖官方推荐使用。

问题二:为什么使用dependencyManagement管理父pom而不是使用parent?

答:
parent代表父pom的意思,有继承关系,但是只能继承一个,单继承;
parent引用的父pom,子pom中必须显示声明group和artifactId才可以使用,只是无需使用version。
dependencyManagement是声明本pom中的依赖,统一管理版本,可以写多个;

问题三:为什么org.springframework.cloud的版本号与正常版本号不同?

因为Spring Cloud包含多个组件每个组件有自己的版本号,Spring Cloud只是做了一个整合,因此,使用命名来取代版本号。
  1. src/main下新建resource文件夹,并设置成资源目录,编写配置文件application.yml
server:
  port: 8888
eureka:
  instance:
    hostname: test
  client:
    register-with-eureka: false
    fetch-registry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

参数详解:

//是否向注册中心注册服务,本身就是注册中心,不需要注册;
register-with-eureka: false

//获取服务列表,本身是注册中心,不需要获取;
fetch-registry: false
//指定注册中心地址,单实例指向自身;
serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  1. 启动类编码
package com.dl;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
/**
 * Hello world!
 *
 */
@EnableEurekaServer
@SpringBootApplication
public class App 
{
    public static void main( String[] args )
    {
        SpringApplication.run(App.class,args);
    }
}

Eureka高可用

      高可用通常指系统可用性高,减少系统不可用的时间,可以通过冗余(集群) + 自动故障转移来实现。
      Eureka高可用,可以通过配置集群来实现,集群中某个节点出现故障,其它节点仍可提供服务。
      相对于单个节点,application.ymlv中配置需要修改:

节点一:
spring:
  application:
    //名称相同
    name: eureka-one
eureka:
  instance:
    hostname: test
  client:
    //必须设置为true
    register-with-eureka: true
    fetch-registry: true
    serviceUrl:
      //指向其它Eureka注册中心地址
      defaultZone: http://localhost:8887/eureka/
节点二:
spring:
  application:
    name: eureka-one
eureka:
  instance:
    hostname: test_two
  client:
    register-with-eureka: true
    fetch-registry: true
    serviceUrl:
      defaultZone: http://localhost:8888/eureka/

问题

  1. 出现Correct the classpath of your application so that it contains a single, compatible version of com.google.gson.GsonBuilder;更换Gson版本,在pom.xml中增加依赖
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.5</version>
</dependency>

源码地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值