eureka的高可用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_25484147/article/details/83211517

概述

这篇文章主要介绍的内容是如何实现eureka的高可用。这篇文章是建立在前一篇文章的基础上,所以,如果没有看过
前一篇文章的,可以访问[ spring cloud eureka](https://blog.csdn.net/qq_25484147/article/details/83211369)
这一篇文章。

实现eureka高可用的基本原理

Eureka Server的高可用实际上就是将自己作为服务向其他服务注册中心注册自己,这样就可以形成一组互相注册的服务
注册中心,以实现服务清单的互相同步,达到高可用的效果。

对eureka server进行改造

配置文件目录

在这里插入图片描述

	要实现高可用,最少需要两台eureka server,这里只是模拟一下。
application.properties
#server.port=11111
#spring.application.name=eureka
#eureka.instance.hostname=localhost
#eureka.client.fetch-registry=false
#eureka.client.register-with-eureka=false
spring.profiles.active=peer2
spring.profiles.active指明的是那个配置文件,一般在企业开发中用来区分环境,(dev,test,aliyun,online)这些环境。
application-peer1.properties
spring.application.name=eureka-server
server.port=11111
eureka.instance.hostname=peer1
eureka.client.serviceUrl.defaultZone=http://peer2:11114/eureka/
这里这个要实现相互注册,所以注册地址是11114端口的,表示注册到peer2这台主机上。
application-peer2.properties
spring.application.name=eureka-server
server.port=11114
eureka.instance.hostname=peer2
eureka.client.serviceUrl.defaultZone=http://peer1:11111/eureka/

这里表示注册到peer1这台主机上。

peer1,peer2代表的是不同的主机。这里在window下需要修改hosts文件,把127.0.0.1指向到peer1, peer2.

idea配置不同的环境

在这里插入图片描述

如果要启动peer这个配置文件,则application.propertes配置文件中的spring.profiles.active=peer1,如果要启动peer2这
个配置文件,则application.properties中的spring.profiles.active=peer2,这里有一个问题是,因为这里同一时间只能启
动一个,所以在启动第一个的时候回报错,但是不用关心,等到第二个eureka server启动之后,spring cloud会通过心
跳自动检测。第二个启动之后,第一个也会好。
当两个server 都启动之后的结果。
如果去访问http://localhost:11111/

在这里插入图片描述

如果去访问http://localhost:11114

在这里插入图片描述

修改 eureka client

在client的配置文件中eureka.client.serviceUrl.defaultZone=http://localhost:11111/eureka/修改为eureka.client.serviceUrl.defaultZone=http://localhost:11111/eureka/,http://localhost:11114/eureka/。
同时修改java代码:
package com.bobo.eurekaserver.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

/**
 * 测试类
 *
 * @author [email protected]
 * @create 2018-10-15 17:27
 **/
@RestController
public class HelloController {

    private Logger logger = LoggerFactory.getLogger(HelloController.class);
    @Autowired
    private DiscoveryClient discoveryClient;

    @RequestMapping(value = "/hello",method = RequestMethod.GET)
    public String index() {
        String services = "Services: " + discoveryClient.getServices();
        System.err.println(services);
        return "hello world";
    }

}

修改eureka comsume
在client的配置文件中eureka.client.serviceUrl.defaultZone=http://localhost:11111/eureka/修改为eureka.client.serviceUrl.defaultZone=http://localhost:11111/eureka/,http://localhost:11114/eureka/。

分别启动 client和Comsume

访问http://localhost:11111/

在这里插入图片描述

访问 http://localhost:11114

在这里插入图片描述

访问消费者代码

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_25484147/article/details/83211517