Spring-Cloud(三)Eureka注册中心实现高可用
前言:
spring-cloud为基础的微服务架构,所有的微服务都需要注册到注册中心,如果这个注册中心阻塞或者崩了,那么整个系统都无法继续正常提供服务,所以,这里就需要对注册中心进行集群,换言之,高可用(HA)
前提:
阅读并完成第一个注册中心的项目,环境无需改变。本文是模拟的高可用,可以复制两个注册中心的项目单独修改各自的配置文件达到同样的效果
修改hosts,在文件末添加两行如下:
127.0.0.1 peer1
127.0.0.1 peer2
推荐使用notepad++,如果是win10会提醒提权限,确定,然后保存即可。
项目搭建:
打开注册中心的项目,在src/resources下创建一个application-peer1.properties
#应用名
spring.application.name=eureka-server
#提供服务端口1111
server.port=1111
#提供服务的域名,这里在hosts文件中修改了
eureka.instance.hostname=peer1
#向第二个注册中心注册自己
eureka.client.service-url.defaultZone=http://peer2:1112/eureka/
在src/resources下创建一个application-peer2.properties
#应用名称与第一个注册中心一样
spring.application.name=eureka-server
#提供服务端口1112
server.port=1112
#提供服务的域名,这里在hosts文件中修改了
eureka.instance.hostname=peer2
#向第一个注册中心注册自己
eureka.client.service-url.defaultZone=http://peer1:1111/eureka/
本文使用idea进行测试,首先需要对这个项目进行打成jar包,因为在pom.xml中已经引入了maven编译工具和打包工具并指定打包格式为jar包,这里直接操作,屏幕右上方


打包完成,该jar包位于target文件夹下,如图

如图打开terminal,屏幕下方

打开terminal之后,因为jar包在target目录下,而当前目录为项目目录,所以先cd到target目录下,然后输入如下命令:
小技巧:输入命令的时候为了防止输错文件名,可以输入文件名的前几个字母,然后使用tab键进行自动补全
java -jar EurekaServerDemo-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
输入完成此命令后,peer1配置文件的项目启动,如图

接下来我们启动第二个项目,这里需要另开一个terminal,cd到target目录
注意:我们这里用的是同一个项目,读者可以使用两个项目进行测试,需要特别注意的是端口不要冲突了

java -jar EurekaServerDemo-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2

等待项目启动完成,查看有无报错。
测试
浏览器输入:localhost:1112进行查看,也可以输入localhost:1111进行查看

结语
在设置了多节点的注册中心后,实现了高可用,但是此时我们的微服务应用仅仅是注册到这一个服务之中,所以,我们需要将新节点的注册服务路径同样配到微服务应用中。
多节点间使用","分开,如图

这样微服务提供者从其中一个地方断开之后,因为在其他节点有注册,所以还可以提供服务,如果不想使用主机名进行访问注册中心,也可以使用ip,但是需要先添加一条配置,该值默认false
eureka.instance.prefer-ip-address=true
本文为作者实际操作记录,如需转载请注明出处
Spring-Cloud(三)Eureka注册中心实现高可用的更多相关文章
- Spring Cloud 之服务注册中心高可用
服务注册中心高可用 服务注册中心 eureka-server 高可用实施 版本 Spring Boot 版本 # Spring Boot 版本: <parent> <groupId& ...
- 如何优化Spring Cloud微服务注册中心架构?
作者: 石杉的架构笔记 1.再回顾:什么是服务注册中心? 先回顾一下什么叫做服务注册中心? 顾名思义,假设你有一个分布式系统,里面包含了多个服务,部署在不同的机器上,然后这些不同机器上的服务之间要互相 ...
- spring cloud(二)服务(注册)中心Eureka
Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现.也是springcloud体系中最重要最核心的组 ...
- Spring Cloud之服务注册中心搭建Eureka Server服务注册中⼼
Spring Cloud并不与Spring MVC类似是一个开源框架,而是一组解决问题的规范(个人理解).解决哪些问题呢?如下: 1)服务管理:⾃动注册与发现.状态监管 2)服务负载均衡 3)熔断 4 ...
- 架构师入门:搭建双注册中心的高可用Eureka架构(基于项目实战)
本文的案例是基于 架构师入门:搭建基本的Eureka架构(从项目里抽取) 改写的. 在上文里,我们演示Eureka客户端调用服务的整个流程,在这部分里我们将在架构上有所改进.大家可以想象下,在上文里案 ...
- Spring Cloud--搭建Eureka注册中心服务
使用RestTemplate远程调用服务的弊端: Eureka注册中心: Eureka原理: 搭建Eureka服务 引pom 启动类: 启动类上要加上@EnableEurekaServer注解: 配置 ...
- 使用Spring Cloud搭建服务注册中心
我们在之前的博客中已经介绍过阿里的分布式服务框架dubbo[Linux上安装Zookeeper以及一些注意事项][一个简单的案例带你入门Dubbo分布式框架],但是小伙伴们应该也看到了,阿里的dubb ...
- spring cloud(服务注册中心及服务提供者——初学一)
Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现.也是springcloud体系中最重要最核心的组 ...
- 从零开始学spring cloud(三) -------- Eureka简介
1.服务发现组件:Eureka Eureka的开源文档介绍地址:https://github.com/Netflix/eureka/wiki/Eureka-at-a-glance What is Eu ...
随机推荐
- ELK学习笔记(二)-HelloWorld实例+Kibana介绍
这次我们通过一个最简单的HelloWolrd来了解一下ELK的使用. 进入logstash的config目录,创建stdin.conf 文件. input{ stdin{ } } output{ st ...
- 【Docker】 Swarm简单介绍
[Swarm] Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源.Swarm ...
- PHP源代码加密
加密软件(php_screw) >下载网站:http://sourceforge.net/projects/php-screw/ >描述:php文件通常以文本格式存贮在服务器端, 很容易被 ...
- 02-Python的下载和安装_Python编程之路
原文发布在特克斯博客www.susmote.com 之前给大家讲了关于python的背景知识,还有Python的优点和缺点,相信通过之前的介绍很多人已经清楚自己到底要不要选择学习Python,如果已经 ...
- Python中的classmethod与staticmethod
首先,这是一个经典的问题. 我们首先做一个比较: classmethod的第一个参数是cls,即调用的时候要把类传入 这意味着我们我们可以在classmethod里使用类的属性,而不是类的实例的属性( ...
- Jquery点击除了指定div元素其他地方,隐藏该div
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script ty ...
- NVisionXRFBXConverter(Beta版)实践课程
一.前言 NVisionXR引擎使用的模型格式为.mesh(具体请看NVisionXR引擎基本介绍:http://www.arvrschool.com/read-7381 ),为了能够将常见的格式转换 ...
- spring学习笔记一 入门及配置
Spring是一个开源框架,为了解决企业应用开发的复杂性而创建的.主要优势之一就是其分层架构.Spring的核心是控制反转和面向切面.简单来说,Spring是一个分层的一站式轻量级开源框架. 使用Sp ...
- Java基础学习笔记二十二 网络编程
络通信协议 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样.在计算机网络中,这些连接和通信的规则 ...
- Go语言的数组
在 Go 语言里,数组是一个长度固定的数据类型,用于存储一段具有相同的类型的元素的连续块.数组存储的类型可以是内置类型,如整型或者字符串,也可以是某种结构类型. 1 数组特性 (1)内存是连续分配,C ...