业余草 SpringCloud教程 | 第十篇: 高可用的服务注册中心(Finchley版本)
前面第一篇文章:业余草 SpringCloud 教程 | 第一篇: 服务的注册与发现Eureka(Finchley版本)
介绍了服务注册与发现,其中服务注册中心Eureka Server,是一个实例,当成千上万个服务向它注册的时候,它的负载是非常高的,这在生产环境上是不太合适的,这篇文章主要介绍怎么将Eureka Server集群化。
一、准备工作
Eureka can be made even more resilient and available by running multiple instances and asking them to register with each other. In fact, this is the default behaviour, so all you need to do to make it work is add a valid serviceUrl to a peer, e.g.
摘自官网
Eureka通过运行多个实例,使其更具有高可用性。事实上,这是它默认的熟性,你需要做的就是给对等的实例一个合法的关联serviceurl。
这篇文章我们基于第一篇文章的工程,来做修改。
二、改造工作
在eureka-server工程中resources文件夹下,创建配置文件application-peer1.yml:
server: port: 8761 spring: profiles: peer1 eureka: instance: hostname: peer1 client: serviceUrl: defaultZone: http://peer2:8769/eureka/
并且创建另外一个配置文件application-peer2.yml:
server: port: 8769 spring: profiles: peer2 eureka: instance: hostname: peer2 client: serviceUrl: defaultZone: http://peer1:8761/eureka/
这时eureka-server就已经改造完毕。
ou could use this configuration to test the peer awareness on a single host (there’s not much value in doing that in production) by manipulating /etc/hosts to resolve the host names.
按照官方文档的指示,需要改变etc/hosts,linux系统通过vim /etc/hosts ,加上:
127.0.0.1 peer1 127.0.0.1 peer2
windows电脑,在c:/windows/systems/drivers/etc/hosts 修改。
这时需要改造下service-hi:
eureka: client: serviceUrl: defaultZone: http://peer1:8761/eureka/ server: port: 8762 spring: application: name: service-hi
三、启动工程
启动eureka-server:
java -jar eureka-server-0.0.1-SNAPSHOT.jar - -spring.profiles.active=peer1
java -jar eureka-server-0.0.1-SNAPSHOT.jar - -spring.profiles.active=peer2
启动service-hi:
java -jar service-hi-0.0.1-SNAPSHOT.jar
访问:localhost:8761,如图:
你会发现注册了service-hi,并且有个peer2节点,同理访问localhost:8769你会发现有个peer1节点。
client只向8761注册,但是你打开8769,你也会发现,8769也有 client的注册信息。
个人感受:这是通过看官方文档的写的demo ,但是需要手动改host是不是不符合Spring Cloud 的高上大?
Prefer IP Address
In some cases, it is preferable for Eureka to advertise the IP Adresses of services rather than the hostname. Set eureka.instance.preferIpAddress to true and when the application registers with eureka, it will use its IP Address rather than its hostname.
摘自官网
eureka.instance.preferIpAddress=true是通过设置ip让eureka让其他服务注册它。也许能通过去改变去通过改变host的方式。
此时的架构图:
Eureka-eserver peer1 8761,Eureka-eserver peer2 8769相互感应,当有服务注册时,两个Eureka-eserver是对等的,它们都存有相同的信息,这就是通过服务器的冗余来增加可靠性,当有一台服务器宕机了,服务并不会终止,因为另一台服务存有相同的数据。
本文源码下载:
https://github.com/forezp/SpringCloudLearning/tree/master/sc-f-chapter10
四、参考文献
感谢您的关注!可加QQ1群:135430763,QQ2群:454796847,QQ3群:187424846。QQ群进群密码:xttblog,想加微信群的朋友,可以微信搜索:xmtxtt,备注:“xttblog”,添加助理微信拉你进群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作可添加助理微信进行沟通!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
业余草 SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)(Finchley版本)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xmt1139057136/article/details/81412940 这篇文章主要讲述服务追踪组件zipkin,Spring Cloud Sleuth集成了zipkin组件。 一、简介 Add sleuth to the classpath of a Spring Boot application (see below for Maven and Gradle examples), and you will see the correlation data being collected in logs, as long as you are logging requests. ——摘自官网 Spring Cloud Sleuth 主要功能就是在分布式系统中提供追踪解决方案,并且兼容支持了 zipkin,你只需要在pom文件中引入相应的依赖即可。 二、服务追踪分析 微服务架构上通过业务来划分服务的,通过REST调用,对外暴露的一个接口,可能需要很多个服务协同才能完成这个接口功能,如...
- 下一篇
面包店里的编程狂想
小黑最近手头有点紧,于是想着去面包店里兼职赚点外快。刚刚到面包店里上班就看到面包师傅在做蛋糕和面包,但是都是手工一个个在做,半个小时才能做出一个蛋糕。程序员出身的小黑就不由自主地思考起来,要是能开发出一台机器,它能自动做蛋糕,那该多好啊。10分钟就能做出一个蛋糕,10分钟就能做好一批面包,这样效率又高,又可以减掉人力成本。我们用 Java 语言描述一下这个场景: 小黑把这个想法告诉了店长,店长说:不错,小伙子很有想法。我会尝试着去做一做,要是做出来了肯定能大大提高生产效率!不知道过了多久,小黑发现店里竟然真的用机器来做蛋糕和面包了。 但生活中的场景往往是复杂多变的。就在小黑惊讶的时候,店里来了一个顾客,他想要一个水果蛋糕,但他特别喜欢杏仁,希望在水果蛋糕上加上一层杏仁。这时候我们应该怎么做呢? 最简单的办法是直接修改水果蛋糕机的程序,做一台能做杏仁水果蛋糕的蛋糕机。这种方式对应的代码修改也很简单,直接在原来的代码上进行修改,生成一台专门做杏仁水果蛋糕的机器就好了,修改后的 FruitCakeMachien 类应该是这样子: 虽然上面这种方式实现了我们的业务需求。但是仔细想一想,在现实生...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Hadoop3单机部署,实现最简伪集群