springCloud Finchley 实战入门(基于springBoot 2.0.3)【三 Eureka-高可用服务注册中心】...

Eureka高可用注册中心

Eureka Server的设计一开始就考虑到了高可用的问题,在eureka服务治理设计中,所有的节点即是是服务提供方,也是服务消费方。

在部署高可用注册中心前我们先需要准备一下,本地环境。因为我们实例是在单台电脑上的,所以需要模拟堕胎服务器,我们需要修改一下本机的host文件。
windows的host文件在C:\Windows\System32\drivers\etc\hosts
在host文件后面加上

127.0.0.1 peer1
127.0.0.1 peer2

修改完成,我们就来尝试搭建高可用的服务注册中心集群。接着上一章的服务中心的基础上面扩展,来构建一个双节点服务注册中心集群。

在resource目录下面:
创建application-peer1.yml配置文件,作为peer1服务中心的配置,并将serviceId指向peer2.

server:port: 8762
spring:application:name: service-register
eureka:instance:prefer-ip-address: falsehostname: peer1client:fetch-registry: trueregister-with-eureka: trueserviceUrl:defaultZone: http://peer2:8763/eureka/server:wait-time-in-ms-when-sync-empty: 0

创建application-peer2.yml配置文件,作为peer2服务中心的配置,并将serviceId指向peer1.

server:port: 8763
spring:application:name: service-register
eureka:instance:prefer-ip-address: falsehostname: peer2client:fetch-registry: trueregister-with-eureka: trueserviceUrl:defaultZone: http://peer1:8762/eureka/server:wait-time-in-ms-when-sync-empty: 0

接下来通过spring.profiles.active属性来分别启动peer1和peer2.
我启动的做法是不在idea里启动,而是把服务注册中心打包,通过cmd启动。
maven打包


img_e9c6d5d7bef5a5fa064aeb1da91c3b87.png
15324251491.jpg

然后通过cmd命令分别启动服务
[图片上传中...(15324253911.jpg-db47b5-1532490920148-0)]


img_f19773cff9b7f8364bc3a4bec0424342.png
15324254351.jpg

java -jar eureka-register-center-0.0.1-SNAPSHOT.jar --spring.profiles.active

img_6ba5a6eeaa5da3ed18ae0f6e5ac3a3c0.png
15324253911.jpg

java -jar eureka-register-center-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2

两个服务启动后,我们访问一下http://localhost:8762/或者http://localhost:8763/

img_9cd763114c7ecad679d0a661903a0d4a.png
15324255261.jpg

这里可以看到两个注册中心部署相互注册成功了。

关闭其中一个服务我们可以看到对应的节点变成不可用了。


img_1a09860744b4f032cf6eb34b5c57bc7b.png
15324256591.jpg

设置多个服务注册中心后,服务提供者还需要做一些简单的配置才能将服务注册到Eureka server集群中。

在这里我们按照前面的做法,重新新建一个服务提供者module,命名为"eureka-bussniss-service-user"当作是我们平时项目中用户服务模块,专门处理用户相关服务的。
因为目前服务注册中心是多个的,所以我们在服务提供者的配置文件上还需要做一些配置。
添加下面的属性,表示把服务注册到指定的注册中心,注册中心地址用逗号隔开;

eureka.client.serviceUrl.defaultZone=http://peer1:8762/eureka/,http://peer2:8763/eureka/

完整的application.yml配置如下:

spring:application:name: service-user
server:port: 8802
eureka:client:serviceUrl:defaultZone: http://peer1:8762/eureka/,http://peer2:8763/eureka/

记得主类添加@EnableEurekaClient注解,然后在确保服务注册中心正常的情况下,启动该项目。如果项目没有报错那就说明我们的配置应该是正常的。打开http://localhost:8763/或者http://localhost:8762/我们可以看到service-user已经同时注册到了服务注册中心。

img_e645bdf435fc0e173984201e3c0aa9f3.png
15324796051.jpg

此时若断开peer1服务,由于service-user服务也向peer2注册,因此peer2上面的其他服务依然能够访问到service-user。从而实现了注册中心的高可用。

项目的源码

服务提供者已经完成了,下一篇我们将会实现服务消费者,以及使用ribbon实现负载均衡。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254004.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt使用两组RadioButton,两组之间相互独立

Qt中使用两组共四个RadioButton时,由于RadioButton的特性,所以两组一共四个按钮每次只能选择一个,要使得两组RadioButton相互独立,需要用到QButtonGroup这个功能,把RadioButton加到QButtonGroup里面,实现两…

sleep 和 wait 的区别

为什么80%的码农都做不了架构师?>>> 面试中常问的就是 sleep 和 wait 有什么不同吗?为了面试时候发挥的更好,我在这里总结分享下。 首先对于 sleep() 方法,我们首先要知道该方法是属于 Thread 类中的。而 wait() 方法…

QT 中textEdit 和 textBrowser 无法使用斜体及加粗等 解决办法

编辑框的几个种类 QT 中一共四个文本编辑框 分别是 Line Edit 、Text Edit、 Plait Text Edit和textBrowser四种文本编辑框架! 一、输入内容不同 1、LineEdit:LineEdit的输入内容为单行文本输入。 2、TextEdit:TextEdit的输入内容为多行文…

变量属性

变量属性 C语言的变量属性 C语言中的变量可以有自己的属性在定义变量的时候加上“属性”关键字属性关键字指明变量的特有意义auto关键字 auto即C语言中局部变量的默认属性auto表明将被修饰的变量存储在栈上编译器默认所有的局部变量都是auto的register关键字 register关键字指明…

Dubbo 整合 Pinpoint 做分布式服务请求跟踪

2019独角兽企业重金招聘Python工程师标准>>> 在使用Dubbo进行服务化或者整合应用后,假设某个服务后台日志显示有异常,这个服务又被多个应用调用的情况下,我们通常很难判断是哪个应用调用的,问题的起因是什么&#xff0…

C#2.0 委托

委托 委托是一个非常不错的设计,允许我们把方法做为参数传递,实现了开放閉放原则。在方法中我们只要有一个委托占位,调用者就可以传入符合签名的方法来做不同的操作,这也面向对象开发中多态的魅力。 但是在C#1.0的时候&#xff…

qt乱码Could not decode“xxx.cpp“ with “UTF-8“-encoding.Editing not possible问题处理

问题描述:如题: 解决方法: 1、点击Select Encoding按钮 2、选择按照系统编码 3、选中System后点击按编码重新载入 4、问题解决

特斯拉自动驾驶系统秘密,来自特斯拉AI总监爆料

据外媒报道,特斯拉汽车公司人工智能(AI)总监安德烈卡帕西(Andrej Karpathy)日前参加2018年TRAIN AI大会时,剖析了该公司构建自动驾驶仪(Autopilot)计算机视觉解决方案的方法。据介绍,Autopilot编…

快捷键汇总

navicat 运行选中代码 ctrshiftr navicat 运行所有代码 ctrr 快速显示桌面 wind 转载于:https://www.cnblogs.com/caer/p/6064571.html

QT右键点击添加库不响应的解决办法

问题描述 QT在pro右键点击添加库不响应 解决方案 双击打开pro文件 在pro文件界面里单击鼠标右键,并选择添加库。 解决问题

爬取前尘无忧python职位信息并保存到mongo数据库

1.re实现 1 import re,os2 import requests3 from requests.exceptions import RequestException4 5 MAX_PAGE 10 #最大页数6 KEYWORD python7 headers {8 User-Agent:9 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, lik…

Apache JMeter 记一次使用HTTP工具POST提交JSON数据进行送积分高并发压测(二)

一、前言 前面文章已经介绍Apache JMeter的基本概率和如果使用,但作为一个开发人员,自己写的代码都应该要好好的COD EREVIEW,好好的自测吧。但是有些场景比如高并发、负载和性能测试的时候,不借助工具是不好进行测试的。Jmter工具设计之初是用…

【vim】几种模式的切换

很多初学者启动vim后,不知道怎么输入字符:按了半天字母,结果屏幕还是空的。 vim和记事本或WORD不一样,不是一打开后就可以输入文字,此时它处于正常模式。 vim一共有4个模式: 正常模式 (Normal-mode) 插入模…

SSH初体验系列--Hibernate--1--环境配置及demo

最近在学hibernate,常见的教程都是搭配mysql,因为公司本地电脑用的是pg,所以就尝试着做个pg的小demo. 自己也是边学边写,只当是加深印象.话不多说,直接开始; 一) 准备工作; 1) 本地安装postgresql ,这个不多说,自己去网上下载; 注: 本次使用的…

Qt学习:QAction系列详解

一、QAction类详解 【详细描述】 QAction类提供了抽象的用户界面action,这些action可以被放置在窗口部件中。 应用程序可以通过菜单,工具栏按钮以及键盘快捷键来调用通用的命令。由于用户期望每个命令都能以相同的方式执行,而不管命令所使用的…

Linux 文件系统 EXT4 的前世今生

在先前关于Linux文件系统的文章中,我写了一份说明书去介绍Linux文件系统,里面有一些高级的概念,比如说,一切都是文件。我很想去深入地讨论更多EXT文件系统的特性的信息。所以,首先让我们来回答这个问题:什么…

zabbix监控系列(5)之通过trap模式监控网络设备

转载于:https://www.cnblogs.com/liaojiafa/p/7216749.html

struts2框架下的一个简单的ajax例子

举个例子 jsp页面&#xff1a; <% page language"java" import"java.util.*" pageEncoding"utf-8"%> <% String path request.getContextPath(); String basePath request.getScheme()"://"request.getServerName()":…

第二部分:志愿录取标准

第二部分&#xff1a;志愿录取标准 零、概况一、传统志愿录取过程二、平行志愿录取过程三、17年志愿录取过程 零、概况自1977年&#xff0c;恢复高考以来&#xff0c;高考录取标准&#xff0c;作为公平线&#xff0c;都是相当透明的。这部分分享&#xff0c;以录取标准&#xf…

程序员懂点经济学-股票投资

2019独角兽企业重金招聘Python工程师标准>>> ▍写在前面 前面有文章 关于程序员如何赚点小钱 讲过 合理的投资理财&#xff0c;可以了解一下. 再次建议&#xff0c;不要将全身家当投入股市&#xff0c;建议投入10~30%就好了. (不要拿输不起的钱来炒股&#xff0c;比…