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. RTP通用头部扩展

    概览 本文为阅读RFC5285时对RTP头部扩展的记录笔记,介绍了one-byte-header和two-byte-header情况下的rtp头部扩展 rtp头部扩充 在RFC3550中, 一个通用的 ...

  2. 手机投屏工具与HOSTS切换工具

    ApowerMirror windows -->switchhosts

  3. 剑指Offer-39.把数组排成最小的数(C++/Java)

    题目: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 分析: 将数组 ...

  4. idea中导入别人的vue项目并运行

    1. 下载node.js 在搭建vue的开发环境之前,先下载node.js,下载地址:https://nodejs.org/en/ https://blog.csdn.net/antma/articl ...

  5. 基于python的yaml配置文件使用方法

    一.介绍 YAML是一种简洁的非标记语言 YAML以数据为中心,使用空白.缩进.分行组织数据,从而使表达更加简洁易懂 二.基本规则 大小写敏感 使用缩进表示层级关系 禁止使用Tab缩进,只能使用空格键 ...

  6. java中窗口的打开与关闭

    作为小白的我,今天学习了java中打开与关闭窗口的方法. 1.在java中创建一个窗口 import java.awt.*;import java.awt.event.*;public class L ...

  7. 【构建之法教学项目】一个简单的基于C#的电子商务系统演练场景的代码示例

    电子商务平台,是一个历史悠久而又充满挑战的行业,他和社交一起成为中国互联网市场的两极.电子商务系统是一个非常复杂的系统,他实现了人与物.人与人的链接,同时也需要大量的技术来支撑,实现系统的高可用.这些 ...

  8. Java注解简单学习

    注解(也被称作元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们在稍后某个时刻可以很方便的使用这些数据,其在一定程度上将元数据与源代码文件结合在一起,而不是保存在外部文档中. 注解使我们可以 ...

  9. Thymeleaf常用语法:自定义数据转换类

    在模板文件中,可以使用“${{...}}”表达式进行数据转换,Thymeleaf会使用配置好的数据转换类,来实现转换.例如一个User对象,简单起见假设有姓名和年龄两个字段,对象的toString() ...

  10. ABP入门教程3 - 解决方案

    点这里进入ABP入门教程目录 创建项目 点这里进入ABP启动模板 如图操作,我们先生成一个基于.NET Core的MPA(多页面应用).点击"Create my project!" ...