【Spring Cloud系统】- 轻量级高可用工具Keepalive详解

这篇具有很好参考价值的文章主要介绍了【Spring Cloud系统】- 轻量级高可用工具Keepalive详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Spring Cloud系统】- 轻量级高可用工具Keepalive详解


【Spring Cloud系统】- 轻量级高可用工具Keepalive详解,Spring Cloud,spring cloud,spring,后端

一、概述

Keepalive是Linux下一个轻量级高可用解决方案。高可用(High Avaliability简称HA)就是主机的冗余和接管。

基本功能:心跳检测、资源接管、检测集群中的服务,在集群结点共享IP地址的所有者。

Keepalive主要是通过路由冗余来实现高可用功能,配置简单,只需要一个配置文件即可完成。

Keepalive起初是为 LVS(Liunx Virtual Server虚拟的服务器集群负载均衡系统)设计的,专门用来监控集群系统中各个服务节点的状态,它根据TCP/IP参考模型的第三、第四层、第五层交换机制检测每个服务节点的状态,如果某个服务器节点出现异常,或者工作出现故障,Keepalived将检测到,并将出现的故障的服务器节点从集群系统中剔除,这些工作全部是自动完成的,不需要人工干涉,需要人工完成的只是修复出现故障的服务节点。

二、Keepalive分类

KeepAlive 分为TCP的 KeepAlive 和 HTTP的 Keep-Alive,两者是完全不同的概念,不能混为一谈。

2.1 TCP的keepalive

  • 侧重在保持客户端和服务端的连接,一方会不定期发送心跳包给另一方,当一方挂掉的时候,没有挂掉的一方会定时发送几次心跳包,如果间隔发送几次,对方都返回的是RST,而不是ACK,那么就释放当前链接。
  • TCP的keepalive 就是查看客户端和服务端是否都在线,当有一方不在线的时候就释放连接。防止连接一直没有释放,造成服务器资源浪费。

2.2 HTTP的keep-alive

普通的http连接是客户端连接上服务端,然后结束请求后,由客户端或者服务端进行http连接的关闭。下次再发送请求的时候,客户端再发起一个连接,传送数据,关闭连接。这个流程反复,但是一旦客户端发送connection:keep-alive头给服务端,且服务端也接受这个keep-alive的话,两边对上暗号,这个连接就可以复用了,一个http处理完之后,另外一个http数据直接从这个连接走了。

HTTP的Keep-alive的作用: 减少新建和断开TCP连接的消耗。

2.3 TCP的 KeepAlive 和 HTTP的 Keep-Alive区别

HTTP的Keep-Alive意图在于短时间内连接复用,希望可以短时间内在同一个连接上进行多次请求/响应。

TCP的KeepAlive机制意图在于保活、心跳,检测连接错误。当一个TCP连接两端长时间没有数据传输时(通常默认配置是2小时),发送keepalive探针,探测链接是否存活。

三、nginx的keepalive配置

3.1 nginx保持keepalive需做那些事情

  1. client到nginx的连接是长连接
  2. nginx到server的连接是长连接

3.2 nginx的文件配置

  1. 配置TCP层keepalive探活机制的三个参数:

    #情况1:
    http {
    server {
        listen 127.0.0.1:3306 so_keepalive=on;#开启keepalive探活,探测策略走系统默认
        }
    }
    #情况2:
    http {
        server {
            listen 127.0.0.1:3306 so_keepalive=7m:75s:9;#把空闲时长从系统默认的5分钟改为了7分钟
        }
    }
    
    

    其中so_keepalive有如下选择配置:

    so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]
    *   on: 开启,探测参数更加系统默认值
    *   off: 关闭
    *   keepidle: 连接空闲等待时间 
    *   keepintvl: 发送探测报文间隔时间
    *   keepcent: 探测报文重试次数
    
    

    如果nginx未设置so_keepalive配置,则走系统默认的探活策略

  2. nginx与客户端(一般为浏览器、APP等)保持的长连接进行限制管理:

    http {
        keepalive_timeout  120s 120s;
        keepalive_requests 100;
    }
    
    keepalive_timeout timeout [header_timeout];
    

    第一个参数:客户端连接在服务器端空闲状态下保持的超时值(默认75s);值为0会禁用keep-alive,也就是说默认不启用长连接;第二个参数:响应的header域中设置“Keep-Alive: timeout=time”;告知浏览器对长连接的维持时间;

    keepalive_requests number;
    

    keepalive_requests:默认100,某个长连接连续处理请求次数限制,超过次数则该长连接被关闭;如果需要释放某个连接占用的内存,必须关闭该链接,内存不大的情况下,不建议开大该配置;在QPS较高的场景,则有必要加大这个参数;

  3. nginx与上游server保持长连接

    http {
        upstream  BACKEND {
            server 127.0.0.1:8000;
            server 127.0.0.1:8001;
            server 127.0.0.1:8002;
            keepalive 300; //空闲连接数   
            keepalive_timeout  120s;//与上游空闲时间
            keepalive_requests 100;//与上游请求处理最大次数
        }
        server{
            listen 8080;
            location /{
                proxy_pass http://BACKEND;
                proxy_http_version 1.1;
                proxu_set_header Connection "";
            }
        }
    }
    

    keepalive:限制nginx某个worker最多空闲连接数,此处不会限制worker与上游服务长连接的总数;
    keepalive_timeout:nginx与上游长连接最大空闲时间,默认值为60s;
    keepalive_requests:nginx与上游长连接最大交互请求的次数,默认值为100;文章来源地址https://www.toymoban.com/news/detail-708057.html

到了这里,关于【Spring Cloud系统】- 轻量级高可用工具Keepalive详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 轻量级SQLite可视化工具Sqliteviz

    什么是 Sqliteviz ? Sqliteviz 是一个单页面离线优先的渐进式网络应用( PWA ),用于完全客户端的 SQLite 数据库或 CSV 文件的可视化。 所谓完全客户端,就是您的数据库永远不会离开您的计算机。使用 sqliteviz ,您可以: 对 SQLite 数据库运行 SQL 查询,并基于结果集创建 Plotly 图

    2024年04月25日
    浏览(49)
  • Docker轻量级可视化工具Portainer

    掌握Portainer的部署和使用。现在是web,命令端看容器,镜像--------》》web端管理容器,镜像。-------------------就是把命令封装成web Portainer 是一款轻量级的应用, 它提供了图形化界面,用于方便地管理Docker环境,包括单机环境和集群环境。 Portainer(https://www.portainer.io/)是一个

    2024年02月13日
    浏览(61)
  • 简要介绍Spring原生框架与Spring是轻量级框架的原因

    😉😉  学习交流群: ✅✅ 1: 这是孙哥suns给大家的福利! ✨✨ 2:我们 免费分享 Netty、Dubbo、k8s、Mybatis、Spring... 应用和源码级别 的 视频资料 🥭🥭 3:QQ群: 583783824     📚📚  工作微信: BigTreeJava 拉你进微信群,免费领取! 🍎🍎 4:本文章内容出自上述:Spring应用课

    2024年02月05日
    浏览(167)
  • Spring Boot整合Postgres实现轻量级全文搜索

    有这样一个带有搜索功能的用户界面需求: 搜索流程如下所示: 这个需求涉及两个实体: “评分(Rating)、用户名(Username)”数据与 User 实体相关 “创建日期(create date)、观看次数(number of views)、标题(title)、正文(body)”与 Story 实体相关 需要支持的功能对 User

    2024年02月19日
    浏览(46)
  • 轻量级服务器nginix:如何实现Spring项目的负载均衡

    点两下这个package,就会在target目录下生成一个war包 把这个warb包拿出来,放在桌面上备用 数据多的话,选择sql文件,直接运行 数据导入成功了 8080和8081都可以 虚拟机的位置: nginx的位置 /usr/local/nginx/conf 两台虚拟机所在的位置: tomcat Tomcat2 运行状态良好 首先在 修改nginx里的

    2024年02月01日
    浏览(48)
  • docker 笔记10:Docker轻量级可视化工具Portainer

    Portainer 是一款轻量级的应用,它提供了图形化界面,用于方便地管理Docker环境,包括单机环境和集群环境。  https://docs.portainer.io/v/ce-2.9/start/install/server/docker/linux 步骤  docker命令安装  第一次登录需创建admin,访问地址:xxx.xxx.xxx.xxx:9000 用户名,直接用默认admin 密码记得8位,

    2024年02月09日
    浏览(55)
  • LLM-Client一个轻量级的LLM集成工具

    大型语言模型(llm)已经彻底改变了我们与文本交互的方式,OpenAI、Google、AI21、HuggingfaceHub、Anthropic和众多开源模型提供了不同的功能和优势。但是每个模型都有其独特的体系结构、api和兼容性需求,集成这些模型是一项耗时且具有挑战性的任务。 所以这时候LangChain就解决了这

    2024年02月11日
    浏览(204)
  • Kubernetes轻量级日志工具Loki安装及踩坑记录

    Loki是Grafana出品的一个轻量级日志系统,熟悉ELK的都知道ELK使用起来的成本,而且仅仅是日志检索使用ELK的话有点大材小用了。Loki8技术栈中使用了以下组件。 Promtail 用来将容器日志发送到 Loki 或者 Grafana 服务上的日志收集工具,该工具主要包括发现采集目标以及给日志流添

    2024年02月03日
    浏览(58)
  • 自从项目上了这款轻量级压力测试工具,睡觉真香

    单接口压测是为了能够在开发阶段对单个接口进行性能测试,快速了解接口的承载能力、发现性能瓶颈,在开发早期就能发现问题,消除性能风险。 作为一名优秀的后端工程师,在交付线上环境前,对自己的每一个接口进行简单的性能检测,是一种良好的职业习惯。 另外,

    2023年04月08日
    浏览(58)
  • SimSearch:一个轻量级的springboot项目索引构建工具,实现快速模糊搜索

    大部分项目都会涉及模糊搜索功能,而实现模糊搜索一般分为两个派系: like简约派系 搜索引擎派系 对于较为大型的项目来说,使用Solr、ES或者Milvus之类的引擎是比较流行的选择了(效果只能说优秀),而对于中小型项目,如果考虑这些较为重型的引擎,就意味着开发成本和

    2024年02月02日
    浏览(93)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包