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. Umi + Dva + Antd的React项目实践

    记录一下最近项目所用到的技术React + Dva + Antd + umi ,以免忘记.之前没有用过它们其中一个,也是慢慢摸索,了解数据整个流程. 先了解下概念 React 不多说,3大框架之一: ...

  2. win7怎么使用远程桌面连接(win10类似,同样适用)

     win7使用远程桌面比mac要简单多了,只需在桌面点击“开始”,找到并打开“附件”,点击“远程桌面连接”即可   mac使用远程桌面连接:https://www.cnblogs.com/tu-071 ...

  3. 目前下载VS2017你可能会遇到这个坑

    可能现在大伙都已经开始使用VS2019进行开发了.VS2019的下载使用也都很简单.由于工作需要,今天要在笔记本上安装VS2017,结果发现,VS2017的下载变得不是那么容易了,官方的下载方式也隐藏 ...

  4. PalletOne调色板跨链的BTC实现

    之前已经讲到了PalletOne调色板跨链以太坊ETH和ERC20的技术原理,接下来我们来讲解PalletOne跨链比特币BTC的技术原理. 一.BTC充币 假如用户A持有一定数量的比特币BTC,他希 ...

  5. python进程基础点整理

    操作系统 串行: 一个程序完完整整的执行完再执行下一个 并发: 看起来像是同时运行,其实就是程序间的切换频率比较快,看不出来 并行:真正的同时运行 多道技术 空间复用:共用一个内存条,多个进程相互隔离 ...

  6. Java入门系列之类继承、抽象类、接口(五)

    前言 C#和Java关于类.抽象类.接口使用方式基本相似,只是对应关键字使用不同罢了,本节呢,我们只是对照C#和Java中关于这三个概念在具体使用时,看看有哪些不一样的地方. 类继承 C#和Java在 ...

  7. 一起学SpringMVC之Json

    本文主要以一个简单的小例子,简述SpringMVC开发中,Json的相关应用,仅供学习分享使用,如有不足之处,还请指正. 什么是Json ? JSON 指的是 JavaScript 对象表示法(Jav ...

  8. 解析innodb中的MVCC

    本人免费整理了Java高级资料,涵盖了Java.Redis.MongoDB.MySQL.Zookeeper.Spring Cloud.Dubbo高并发分布式等教程,一共30G,需要自己领取.传送门:h ...

  9. 使用Kubernetes进行ProxySQL本机群集

    自v1.4.2起,ProxySQL支持本机群集.这意味着多个ProxySQL实例可识别群集; 他们了解彼此的状态,并能够通过根据配置版本,时间戳和校验和值同步最新的配置来自动处理配置更改. Proxy ...

  10. 记一次微信小程序的开发

    使用工具: 1.微信Web开发者工具 2.Visual Studio 2019 前端采用color UI,后端采用c# .net 过程中的几个重点点记录 1.color UI使用 下载colorUI以 ...