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: http://192.168.1.1:8002/lcs-discover/eureka/,http://192.168.1.2:8002/lcs-discover/eureka/,http://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 http://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. 前端请求说明:

http://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发消息通知。消息接口
http://localhost:8002/lcs-discover/eureka/apps/appID/instanceID delete 请求
可以通过http://localhost:8002/lcs-discover/eureka/apps 这个查询当前discover 下面有哪些服务。
2. 发布说明
在高可用的系统部署中,发布很重要,因为发布的时候要考虑这个节点下面的服务是否正在使用。
所以有三种发布方案:灰度发布,轮询发布,平滑发布,具体发布细节,后面实战了补上。
9. 在多个节点发布说明
当业务量特别大的时候,发布服务需要不影响业务的情况下进行发布。怎么能做到不影响业务呢,当通过discover的时候,你可以看到当前有哪些服务注册到这个节点上了,然后用命令

curl -X PUT -i http://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自动会发送心跳给每个服务,检查服务状态,如果服务状态正常就可以正常使用了。

 

springcloud微服务多节点高性能、高可用、高并发部署的更多相关文章

  1. Java生鲜电商平台-SpringCloud微服务架构高并发参数优化实战

    Java生鲜电商平台-SpringCloud微服务架构高并发参数优化实战 一.写在前面 在Java生鲜电商平台平台中相信不少朋友都在自己公司使用Spring Cloud框架来构建微服务架构,毕竟现在这 ...

  2. SpringCloud微服务学习笔记

    SpringCloud微服务学习笔记 项目地址: https://github.com/taoweidong/Micro-service-learning 单体架构(Monolithic架构) Mon ...

  3. Java生鲜电商平台-SpringCloud微服务架构中分布式事务解决方案

    Java生鲜电商平台-SpringCloud微服务架构中分布式事务解决方案 说明:Java生鲜电商平台中由于采用了微服务架构进行业务的处理,买家,卖家,配送,销售,供应商等进行服务化,但是不可避免存在 ...

  4. SpringCloud微服务基础学习

    看了蚂蚁课堂的微服务学习,确实学习了不少关于微服务的知识,现在总结学习如下 : SpringCloud微服务基础单点系统架构传统项目架构传统项目分为三层架构,将业务逻辑层.数据库访问层.控制层放入在一 ...

  5. SpringCloud微服务治理技术入门(SCN)

    1.集群.分布式.微服务 首先先理解三个感念 什么是集群?: 同一个业务,部署在多个服务器上,目的是实现高可用,保证节点可用! 什么是分布式?: 一个业务分拆成多个子业务,部署在不同的服务器上,每个子 ...

  6. 【微服务】之四:轻松搞定SpringCloud微服务-负载均衡Ribbon

    对于任何一个高可用高负载的系统来说,负载均衡是一个必不可少的名称.在大型分布式计算体系中,某个服务在单例的情况下,很难应对各种突发情况.因此,负载均衡是为了让系统在性能出现瓶颈或者其中一些出现状态下可 ...

  7. springcloud微服务架构搭建

    SpringCloud微服务框架搭建 一.微服务架构 1.1什么是分布式 不同模块部署在不同服务器上 作用:分布式解决网站高并发带来问题 1.2什么是集群 多台服务器部署相同应用构成一个集群 作用:通 ...

  8. SpringCloud微服务笔记-Nginx实现网关反向代理

    背景 当前在SpringCloud微服务架构下,网关作为服务的入口尤为重要,一旦网关发生单点故障会导致整个服务集群瘫痪,为了保证网关的高可用可以通过Nginx的反向代理功能实现网关的高可用. 项目源码 ...

  9. Java生鲜电商平台-SpringCloud微服务架构中核心要点和实现原理

    Java生鲜电商平台-SpringCloud微服务架构中核心要点和实现原理 说明:Java生鲜电商平台中,我们将进一步理解微服务架构的核心要点和实现原理,为读者的实践提供微服务的设计模式,以期让微服务 ...

随机推荐

  1. 一个适合于.NET Core的超轻量级工作流引擎:Workflow-Core

    一.关于Workflow-Core 近期工作上有一个工作流的开发需求,自己基于面向对象和职责链模式捣鼓了一套小框架,后来在github上发现一个轻量级的工作流引擎轮子:Workflow-Core,看完 ...

  2. C语言程序设计100例之(18):火柴棒等式

    例18   火柴棒等式 用n根火柴棍,可以拼出多少个形如“A+B=C”的等式?等式中的A.B.C是用火柴棒拼出的整数(若该数非零,则最高位不能是0).用火柴棒拼数字0~9的拼法如图1所示. 图1  用 ...

  3. 【linux命令 】文件特殊权限(SUID、SGID、SBIT)

    chmod 2770 /home/admins,刚看到这个命令,有点不解,后边770分别表示用户,组,其他人,前面的2不知道代表的是什么意思.百度之后发现2是代表八进制数,也是一种权限,它的三个bit ...

  4. 【转载】【PAT】PAT甲级题型分类整理

    最短路径 Emergency (25)-PAT甲级真题(Dijkstra算法) Public Bike Management (30)-PAT甲级真题(Dijkstra + DFS) Travel P ...

  5. mkdir函数 (创建文件夹函数)

    mkdir函数 #include <stdio.h> int main(){ mkdir("C:\\Users\\admin\\desktop\\test"); ; }

  6. docker 部署springcloud项目

    一.首先从 docker.hub[地址:https://hub.docker.com] 中根据各自的需求 pull 对应的 openjdk镜像(本次直接在修改后的docker镜像源中下载) docke ...

  7. 关于如何获取项目所部署的本机IP和端口的问题

    关于如何获取项目所部署的本机IP和端口的问题 今天在写一个需求的时候碰到一个不常见的问题,在没有继承或者实现服务器提供的接口或者实现类的时候,比如说部署在tomacat上,某个类不去继承servelt ...

  8. CSS学习笔记-边框图片等属性

      1.边框图片:        1.1含义:            告诉浏览器指定一张图片作为边框        1.2格式:             border-image-source:url ...

  9. 在vue组件中设置定时器和清除定时器

    由于项目中难免会碰到需要实时刷新,无论是获取短信码,还是在支付完成后轮询获取当前最新支付状态,这时就需要用到定时器.但是,定时器如果不及时合理地清除,会造成业务逻辑混乱甚至应用卡死的情况,这个时就需要 ...

  10. m3u8视频格式分析

    “ 学习m3u8格式.” 一段时间之前,乘着某美女CEO的东风,学习了一个新的数据格式,即m3u8格式. 经过一段时间的沉淀,美女CEO的热潮大概已经褪去,今天才对这个格式进行分析,嘻嘻. 先介绍下来 ...