spring cloud系列教程第六篇-Eureka集群版
spring cloud系列教程第六篇-Eureka集群版
本文主要内容:
本文来源:本文由凯哥Java(kaigejava)发布在龙果博客的。转载请注明
1:Eureka执行步骤理解
2:集群原理
3:Eureka集群搭建
4:修改payment和order项目注册到集群中
本文是由凯哥(凯哥Java:kagejava)发布的《spring cloud系列教程》教程的总第六篇:《spring cloud系列教程第六篇-Eureka集群版》。
本文是几个维度中的第一个维度:注册与发现维度配置中心管理之Eureka相关教程第三篇。
一:eureka注册与发现步骤
服务注册:将服务信息注册到注册中心
服务发现:从注册中心上获取到服务信息
其实质就是:key-value形式的。Key:服务的名字 value:服务调用地址
执行步骤:
1:先启动eureka注册中心
2:启动服务提供者(我们这里的服务提供者就是payment支付服务)
3:服务提供者在启动后会把自身的信息(如服务地址,以别名方式注册到)注册到eureka中
4:消费者(我们这里是order服务)在需要调用接口的时候,使用服务别名去注册中心获取到实际的RPC远程调用地址
5:消费者获取到调用地址后,底层实际是利用HttpClient技术实现远程调用的
6:消费者获得服务地址后会缓存在本地的JVM内存中,默认每隔30秒更新移除服务调用地址。
问题:微服务RPC远程调用最核心的是什么?
高可用。试想下,如果你的注册中心有且仅有一个 only One.那么,如果注册中心故障了,那就呵呵了,会导致整个服务的不可用。后果可是很严重的。所以,解决办法就是:搭建Eureka注册中心集群。实现负载均衡+故障容错(其实从上图中也可以看出,eureka server是多个,provider也是多个)
二:Eureka集群原理:
互相注册,相互守望
什么意思呢?集群的话,肯定是多个。比如我们现在单台的eureka端口是7001,假设还有一台服务是7002.那么7001的注册地址应该是7002,7002的注册地址是7001.这样就相互注册了。7001会每30s给7002同步一次心跳,同理7002也会的。所以就相互守望了。
简单的示意图如下:
三:Eureka集群搭建
3.1:新建cloud-eureka-server7002项目。作为第二台eureka服务
3.2:修改pom.将7001的pom中相关依赖复制到7002中
3.3:修改hosts文件。添加两个映射:
修改后的hosts:
3.4:修改yml文件。
在修改yml文件的时候,需要注意:现在是多台eureka server。需要互相注册和相互守望。这个的写法和单机版的不一样了。我们先来看看单机版yml配置文件。
单机版yml文件配置:
集群的时候,因为要互相注册,相互守望。所以yml文件有些不同。
7001服务的yml不同地方:
7002的yml:
我们可以看到hostname和defaultZone不同了
配置完成之后,启动7001和7002,访问两个连接查看有什么不同
我们可以看到,DS Replicas的不同。
当我们访问7001的时候,可以看到ds列表是eureka7002说明我们集群配置已建成成功了。
本文教程相关代码版本号:v0.0.9-20200504
接下来,我们就要修改payment和order这两个微服务,将这两个微服务注册到eureka集群中。欢迎大家和凯哥(凯哥Java:kaigejava)继续一起学习。
四:将payment和order这两个服务注册到集群中
4.1:payment修改
只需要修改payment8001的yml文件中,和eureka相关的配置即可。
我们开看看单机版的时候配置:
Eureka.client.service-url.defaultZone是localhost的。如下图:
进行修改:
Order80的修改一样。
配置完成之后,启动服务进行测试。
启动顺序:
先启动注册中心服务:eurekaSever 7001/7002服务
再启动服务提供者:payment8001服务
再启动服务提供者:payment8001服务
访问根据订单id获取连接,查看返回信息
查看7001上注册的eureka客户端:
查看7002上客户端:
我们发现这两个注册中心都有order server和payment server服务。说明我们服务已经成功注册到集群中了。
查看访问效果:
可以正常访问。说明集群搭建及服务注册到集群中成功。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
无声的性能杀手——伪共享(False Sharing)
性能杀手 缓存系统中是以缓存行(cache line)为单位存储的。缓存行是2的整数幂个连续字节,一般为32-256个字节。最常见的缓存行大小是64个字节。当多线程修改互相独立的变量时,如果这些变量共享同一个缓存行,就会无意中影响彼此的性能,这就是伪共享。缓存行上的写竞争是运行在SMP系统中并行线程实现可伸缩性最重要的限制因素。有人将伪共享描述成无声的性能杀手,因为从代码中很难看清楚是否会出现伪共享。 为了让可伸缩性与线程数呈线性关系,就必须确保不会有两个线程往同一个变量或缓存行中写。两个线程写同一个变量可以在代码中发现。为了确定互相独立的变量是否共享了同一个缓存行,就需要了解内存布局,或找个工具告诉我们。Intel VTune就是这样一个分析工具。本文中我将解释Java对象的内存布局以及我们该如何填充缓存行以避免伪共享。 上图说明了伪共享的问题。在Core1上运行的线程想更新变量X,同时Core2上的线程想要更新变量Y。不幸的是,这两个变量在同一个缓存行中。每个线程都要去竞争缓存行的所有权来更新变量。如果Core1获得了所有权,缓存子系统将会使Core2中对应的缓存行失效。当Core...
- 下一篇
PingPangChat 2.0.0 发布
睡得早,醒的也早 O(∩_∩)O,2.X.X版本发布 服务端支持了netty的集群部署 实现了单聊、群聊跨服务器(在不同用户绑定了不同服务器)信息传输 服务端netty负载均衡 实现了随机和按照最小连接数轮询 修改了一些bug https://gitee.com/0X00000000/PingPangChat/tree/2.0.0/ 欢迎提意见和star
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS8安装Docker,最新的服务器搭配容器使用