springcloud微服务多节点⾼性能、⾼可⽤、⾼并发部署
1. 共有三个服务 discovery服务,domain服务,gateway服务。
discovery服务是⽤来注册其他服务的,作为服务治理⽤。
domain服务是主业务服务。
gateway服务是所有服务的⼀个⼊⼝,⽤来做⼀些服务的判断和过滤⽤。
2. 有三台机器分别为192.168.1.1,192.168.1.2,192.168.1.3
3. 三台服务器上分别部署各个服务。
4. domain服务的需要注册到每个disscover服务上。
8002 是 discover服务的端⼝。
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: 192.168.1.1:8002/lcs-discover/eureka/,192.168.1.2:8002/lcs-discover/eureka/,192.168.1.3:8002/lcs-discover/eureka/
5. 前端访问⽤nginx,配置如下:
这段在server外⾯
upstream gateway {
server 192.168.1.1:8001;
server 192.168.1.2:8001;
server 192.168.1.3:8001;
}
这段在server⾥⾯
location /lcs-gateway {
proxy_pass gateway;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 1;
proxy_read_timeout 1;
proxy_send_timeout 1;
}
6. 前端请求说明:
localhost:8090/lcs-gateway
7. 实现说明:
当前端请求到8090 端⼝下⾯的lcs-gateway的时候,gateway拦截住并做了⼀个转发,转发的时候负载到不同的服务器(轮询机制)。
当⼀台gateway接收到请求后,去对应的服务发现eureka,所有的服务都注册在discover上⾯了,discover会随机⼀个domain服务提供⽅法。
当⼀个服务的domain挂掉后,discover会其他的domain顶替,这个是discover的选举原理。
当⼀台服务器的gateway挂掉后,在nginx 请求转发的时候做了⼀个连接超时的判断,如果1s内不通,他会⾃动连接另外的服务器。
8. 问题汇总
1. 当把⼀个节点的服务kill掉,⼀定记得要给discover发消息通知。消息接⼝
nginx部署前端项目localhost:8002/lcs-discover/eureka/apps/appID/instanceID delete 请求
可以通过localhost:8002/lcs-discover/eureka/apps 这个查询当前discover 下⾯有哪些服务。
2. 发布说明
在⾼可⽤的系统部署中,发布很重要,因为发布的时候要考虑这个节点下⾯的服务是否正在使⽤。
所以有三种发布⽅案:灰度发布,轮询发布,平滑发布,具体发布细节,后⾯实战了补上。
9. 在多个节点发布说明
当业务量特别⼤的时候,发布服务需要不影响业务的情况下进⾏发布。怎么能做到不影响业务呢,当通过discover的时候,你可以看到当前有哪些服务注册到这个节点上了,然后⽤命令
curl -X PUT -i 10.118.218.151:8002/lcs-discover/eureka/apps/DATAIMP-SERVICE/LCS218151:dataimp-service:8005/status? value=OUT_OF_SERVICE
DATAIMP-SERVICE 这个为服务名称
LCS218151:dataimp-service:8005 这个为discover中看到的服务节点名称
当执⾏完这个命令之后,在discover 中看到的服务状态为 out_of_service这个红⾊的显⽰。
这样当前端访问到⽹关的时候,⽹关就不会给这个服务上发送请求了。
然后运维就可以在这个服务上进⾏换包,上线等操作,当上线完成后,重启服务,discover⾃动会发送⼼跳给每个服务,检查服务状态,如果服务状态正常就可以正常使⽤了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。