springCoud多个微服务实现分布式部署(不同linux主机部署)

一.介绍下系统背景

先贴出eureka注册中心上的注册信息
在这里插入图片描述
拿登录举例子吧,我的登录流程是前端输入用户名密码,通过网关将请求转发到mall-user微服务上,mall-user通过Feign远程调用oauth2微服务进行登录验证然后返回消息,oauth2是部署在两台虚拟机上的,这就涉及到分布式部署负载均衡了。看起来并不难,但绝知此事要躬行,如果只是在自己电脑上改个端口然后像我上面类似流程请求成功的话并无难度,因为你的所有微服务都是在一个局域网下的一台主机上,你可能什么困难也碰不到就轻松运行成功了。
在eureka的status列是根据项目中的yml配置文件显示的,我刚开始小看它了,以为它只是展示作用,然而它却并不简单,尤其在涉及分布式部署的时候,由于ip的不同就一定会出问题。

先看看我原来的配置(mall-product微服务)。这是网上99%人的配置。
在这里插入图片描述
这样的配置在单机情况下没有问题,运行之后看看是什么样子的
在这里插入图片描述
本地运行的在eureka上的ip是在当前局域网下分配的ip,所以虽然注册到了eureka上,但是显然其他服务包括网关是无法请求到本地的微服务的(我一直没有解决这个问题),如果就将这样的配置的微服务打包部署到服务器上又会什么样子的呢?这里就不尝试了,直接说出我的亲测结论,如果部署在服务器运行上面的信息是 linux内网ip+端口,注意是内网,别的微服务还是无法请求到该服务的(404),之前上面eureka注册信息ip都是服务器公网ip,也就是任何人都可以请求到。租的服务器都有一个公网一个内网ip的。

二、解决方式

将原来的内网ip配置方式改为公网ip配置方式(写死是一遗憾)。
在这里插入图片描述
这样的话部署到服务器上就会是你指定的服务器公网ip地址了,根据部署在不同服务器来修改不同的ip地址并分开部署。这是我的解决方式,写死我总感觉不太好,但目前没有找到更好的方式了。

三 、测试

用最开始说的登录测试吧,打开postman 输入网址测试。负载均衡到两台服务器上的oauth2服务。先负载到A
在这里插入图片描述
轮询机制下次请求会到B服务器上的Oauth2服务
在这里插入图片描述
请求流程如下图
在这里插入图片描述
源码方面:
包>package org.springframework.cloud.netflix.eureka;

private String ipAddress;
public void setIpAddress(String ipAddress) {
   this.ipAddress = ipAddress;
   this.hostInfo.override = true;
}
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值