zoukankan      html  css  js  c++  java
  • 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: 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自动会发送心跳给每个服务,检查服务状态,如果服务状态正常就可以正常使用了。

     
  • 相关阅读:
    Spring Boot 使用 Dom4j XStream 操作 Xml
    Spring Boot 使用 JAX-WS 调用 WebService 服务
    Spring Boot 使用 CXF 调用 WebService 服务
    Spring Boot 开发 WebService 服务
    Spring Boot 中使用 HttpClient 进行 POST GET PUT DELETE
    Spring Boot Ftp Client 客户端示例支持断点续传
    Spring Boot 发送邮件
    Spring Boot 定时任务 Quartz 使用教程
    Spring Boot 缓存应用 Memcached 入门教程
    ThreadLocal,Java中特殊的线程绑定机制
  • 原文地址:https://www.cnblogs.com/baoyi/p/springcloud_master_cluster.html
Copyright © 2011-2022 走看看