nginx upstream failover 容错机制

Nginx负载均衡之upstream容错机制详解 模块 lua-resty-upstream-healthcheck 的原理是每到(interval)设定的时间,就会对被代理服务器的 HTTP 端口主动发起 GET 请求(http_req),当请求的响应状态码在确定为合法的列表(valid_status)中出现时,则认为被代理服务器是健康的,如果请求的连续(fall)设定次数返回响应状态码都未在列表(valid_status)中出现,则认为是故障状态。Nginx 被动检测机制的优点是不需要增加额外进程进行健康检测,但用该方法检测是不准确的。 阅读详情

1.   摘要

(1)       结论

详细描述了nginx记录失效节点的6种状态(time out、connect refuse、500、502、503、504,后四项5XX需要配置proxy_next_upstream中的状态才可以生效)、失效节点的触发条件和节点的恢复条件、所有节点失效后nginx会进行恢复并进行重新监听。

(2)       Nginx 负载均衡方式介绍

Nginx的负载均衡方式一共有5种:rr(轮询模式)、ip_hash、fair、url_hash,  weight(加权)。

(3)       Ngxin负载均衡和相关反向代理配置内容

Nginx负载均衡和与容错相关的反向代理的配置。

(4)       获取后端流程

后端server的自动容错流程图。

(5)       测试环境和测试结果

针对几种错误方式进行自动容错测试。

2.   结论

(1)       nginx 判断节点失效状态

Nginx 默认判断失败节点状态以connect refuse和time out状态为准,不以HTTP错误状态进行判断失败,因为HTTP只要能返回状态说明该节点还可以正常连接,所以nginx判断其还是存活状态;除非添加了proxy_next_upstream指令设置对404、502、503、504、500和time out等错误进行转到备机处理,在next_upstream过程中,会对fails进行累加,如果备用机处理还是错误则直接返回错误信息(但404不进行记录到错误数,如果不配置错误状态也不对其进行错误状态记录),综述,nginx记录错误数量只记录timeout 、connect refuse、502、500、503、504这6种状态,timeout和connect refuse是永远被记录错误状态,而502、500、503、504只有在配置proxy_next_upstream后nginx才会记录这4种HTTP错误到fails中,当fails大于等于max_fails时,则该节点失效;

(2)       nginx 处理节点失效和恢复的触发条件

nginx可以通过设置max_fails(最大尝试失败次数)和fail_timeout(失效时间,在到达最大尝试失败次数后,在fail_timeout的时间范围内节点被置为失效,除非所有节点都失效,否则该时间内,节点不进行恢复)对节点失败的尝试次数和失效时间进行设置。

当超过最大尝试次数或失效时间未超过配置失效时间,则nginx会对节点状会置为失效状态,nginx不对该后端进行连接,直到超过失效时间或者所有节点都失效后,该节点重新置为有效,重新探测。也就是在下个fail_timeout中,原来被判定为down的后端server是不可能得到接收数据机会的,即使它恢复过来了!然后再过一个fail_timeout,nginx 会尝试去通过发送数据请求到这个down的后端服务器上去测试它是否起来没有。


(3)       所有节点失效后nginx将重新恢复所有节点进行探测

如果探测所有节点均失效,备机也为失效时,那么nginx会对所有节点恢复为有效,重新尝试探测有效节点,如果探测到有效节点则返回正确节点内容,如果还是全部错误,那么继续探测下去,当没有正确信息时,节点失效时默认返回状态为502,但是下次访问节点时会继续探测正确节点,直到找到正确的为止。

3.   nginx负载均衡

Nginx的负载均衡方式一共有4种:rr(轮询模式)、ip_hash、fair、url_hash;

Nginx自带的2种负载均衡为rr和ip_hash,fair和url_hash为第三方的插件,nginx在不配置负载均衡的模式下,默认采用rr负载均衡模式。

l  RR负载均衡模式:

每个请求按时间顺序逐一分配到不同的后端服务器,如果超过了最大失败次数后(max_fails,默认1),在失效时间内(fail_timeout,默认10秒),该节点失效权重变为0,超过失效时间后,则恢复正常,或者全部节点都为down后,那么将所有节点都恢复为有效继续探测,一般来说rr可以根据权重来进行均匀分配。

l  Ip_hash负载均衡模式:

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,但是ip_hash会造成负载不均,有的服务请求接受多,有的服务请求接受少,所以不建议采用ip_hash模式,session共享问题可用后端服务的session共享代替nginx的ip_hash。

l  Fair(第三方)负载均衡模式:

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

l  url_hash(第三方)负载均衡模式:

和ip_hash算法类似,是对每个请求按url的hash结果分配,使每个URL定向到一个同 一个后端服务器,但是也会造成分配不均的问题,这种模式后端服务器为缓存时比较好。

4.   Nginx 负载均衡配置

Nginx的负载均衡采用的是upstream模块

其中默认的采用的负载均衡模式是轮询模式rr(round_robin),具体配置如下:

1)    指令:

ip_hash

语法:ip_hash 
默认值:none 
使用字段:upstream 
这个指令将基于客户端连接的IP地址来分发请求。
哈希的关键字是客户端的C类网络地址,这个功能将保证这个客户端请求总是被转发到一台服务器上,但是如果这台服务器不可用,那么请求将转发到另外的服务器上,这将保证某个客户端有很大概率总是连接到一台服务器。
无法将权重(weight)与ip_hash联合使用来分发连接。如果有某台服务器不可用,你必须标记其为“down”,如下例:

upstream backend {

  ip_hash;

  server   backend1.example.com;

  server   backend2.example.com;

  server   backend3.example.com  down;

  server   backend4.example.com;

}

server

语法:server name [parameters] 
默认值:none 
使用字段:upstream 
指定后端服务器的名称和一些参数,可以使用域名,IP,端口,或者unix socket。如果指定为域名,则首先将其解析为IP。

l  weight = NUMBER - 设置服务器权重,默认为1。

l  max_fails = NUMBER - 在一定时间内(这个时间在fail_timeout参数中设置)检查这个服务器是否可用时产生的最多失败请求数,默认为1,将其设置为0可以关闭检查,这些错误在proxy_next_upstream或fastcgi_next_upstream(404错误不会使max_fails增加)中定义。

l  fail_timeout = TIME - 在这个时间内产生了max_fails所设置大小的失败尝试连接请求后这个服务器可能不可用,同样它指定了服务器不可用的时间(在下一次尝试连接请求发起之前),默认为10秒,fail_timeout与前端响应时间没有直接关系,不过可以使用proxy_connect_timeout和proxy_read_timeout来控制。

l  down - 标记服务器处于离线状态,通常和ip_hash一起使用。

l  backup - (0.6.7或更高)如果所有的非备份服务器都宕机或繁忙,则使用本服务器(无法和ip_hash指令搭配使用)。

示例配置

upstream  backend  {

  server   backend1.example.com    weight=5;

  server   127.0.0.1:8080          max_fails=3  fail_timeout=30s;

  server   unix:/tmp/backend3;

}

注意:如果你只使用一台上游服务器,nginx将设置一个内置变量为1,即max_fails和fail_timeout参数不会被处理。
结果:如果nginx不能连接到上游,请求将丢失。
解决:使用多台上游服务器。

upstream

语法:upstream name { … } 
默认值:none 
使用字段:http 
这个字段设置一群服务器,可以将这个字段放在proxy_pass和fastcgi_pass指令中作为一个单独的实体,它们可以可以是监听不同端口的服务器,并且也可以是同时监听TCP和Unix socket的服务器。
服务器可以指定不同的权重,默认为1。
示例配置

upstream backend {

  server backend1.example.com weight=5;

  server 127.0.0.1:8080       max_fails=3  fail_timeout=30s;

  server unix:/tmp/backend3;

}

请求将按照轮询的方式分发到后端服务器,但同时也会考虑权重。
在上面的例子中如果每次发生7个请求,5个请求将被发送到backend1.example.com,其他两台将分别得到一个请求,如果有一台服务器不可用,那么请求将被转发到下一台服务器,直到所有的服务器检查都通过。如果所有的服务器都无法通过检查,那么将返回给客户端最后一台工作的服务器产生的结果。

2)    变量

版本0.5.18以后,可以通过log_module中的变量来记录日志:

log_format timing '$remote_addr - $remote_user [$time_local]  $request '

  'upstream_response_time $upstream_response_time '

  'msec $msec request_time $request_time';

 

log_format up_head '$remote_addr - $remote_user [$time_local]  $request '

  'upstream_http_content_type $upstream_http_content_type';

l  $upstream_addr

前端服务器处理请求的服务器地址

l  $upstream_cache_status

0.8.3版本中其值可能为:

MISS 

EXPIRED - expired。请求被传送到后端。

UPDATING - expired。由于proxy/fastcgi_cache_use_stale正在更新,将使用旧的应答。

STALE - expired。由于proxy/fastcgi_cache_use_stale,后端将得到过期的应答。

HIT

l  $upstream_status

前端服务器的响应状态。

l  $upstream_response_time

前端服务器的应答时间,精确到毫秒,不同的应答以逗号和冒号分开。

l  $upstream_http_$HEADER

随意的HTTP协议头,如:$upstream_http_host

l  $upstream_http_host

 

3)    Proxy指令:

proxy_next_upstream

语法:proxy_next_upstream

 [error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_404|off] 
默认值:proxy_next_upstream error timeout 
使用字段:http, server, location 
确定在何种情况下请求将转发到下一个服务器:

error - 在连接到一个服务器,发送一个请求,或者读取应答时发生错误。

timeout - 在连接到服务器,转发请求或者读取应答时发生超时。

invalid_header - 服务器返回空的或者错误的应答。

http_500 - 服务器返回500代码。

http_502 - 服务器返回502代码。

http_503 - 服务器返回503代码。

http_504 - 服务器返回504代码。

http_404 - 服务器返回404代码。

off - 禁止转发请求到下一台服务器。

转发请求只发生在没有数据传递到客户端的过程中。

其中记录到nginx后端错误数量的有500、502、503、504、timeout,404不记录错误。

proxy_connect_timeout

语法:proxy_connect_timeout timeout_in_seconds 
默认值:proxy_connect_timeout 60s 
使用字段:http, server, location 
指定一个连接到代理服务器的超时时间,单位为秒,需要注意的是这个时间最好不要超过75秒。
这个时间并不是指服务器传回页面的时间(这个时间由proxy_read_timeout声明)。如果你的前端代理服务器是正常运行的,但是遇到一些状况(例如没有足够的线程去处理请求,请求将被放在一个连接池中延迟处理),那么这个声明无助于服务器去建立连接。
可以通过指定时间单位以免引起混乱,支持的时间单位有”s”(秒), “ms”(毫秒), “y”(年), “M”(月), “w”(周), “d”(日), “h”(小时),和 “m”(分钟)。
这个值不能大于597小时。

proxy_read_timeout

语法:proxy_read_timeout time 
默认值:proxy_read_timeout 60s 
使用字段:http, server, location 
决定读取后端服务器应答的超时时间,单位为秒,它决定nginx将等待多久时间来取得一个请求的应答。超时时间是指完成了两次握手后并且状态为established的超时时间。
相对于proxy_connect_timeout,这个时间可以扑捉到一台将你的连接放入连接池延迟处理并且没有数据传送的服务器,注意不要将此值设置太低,某些情况下代理服务器将花很长的时间来获得页面应答(例如如当接收一个需要很多计算的报表时),当然你可以在不同的location里面设置不同的值。
可以通过指定时间单位以免引起混乱,支持的时间单位有”s”(秒), “ms”(毫秒), “y”(年), “M”(月), “w”(周), “d”(日), “h”(小时),和 “m”(分钟)。
这个值不能大于597小时。

proxy_send_timeout

语法:proxy_send_timeout seconds 
默认值:proxy_send_timeout 60s 
使用字段:http, server, location 
设置代理服务器转发请求的超时时间,单位为秒,同样指完成两次握手后的时间,如果超过这个时间代理服务器没有数据转发到被代理服务器,nginx将关闭连接。
可以通过指定时间单位以免引起混乱,支持的时间单位有”s”(秒), “ms”(毫秒), “y”(年), “M”(月), “w”(周), “d”(日), “h”(小时),和 “m”(分钟)。
这个值不能大于597小时。

 

 

5.   获取后端流程

GET_RR_PEER: 通过RR算法获取后端流程

K:是判断peer是否宕机和判断失效状态算法

 

FAIL:尝试次数用尽有,跳转到失败流程,如果有备机,备机再尝试监听,如果监听失败则返回NGX_BUSY,成功则返回当前状态。

6.   测试环境

操作系统:centos5.6

Cpu:16核

内存:32g

Web 服务器:nginx

Web 应用服务器:tomcat(2台)

7.   测试结果

l  设置tomcat1超时时间,造成超时状态(总有一台server为有效状态):

Tomcat1的connectionTimeout 设置为-1,永远超时,nginx设置tomcat1和tomcat2权重为10,tomcat1的max_fails为10,fail_timeout=120;在连接tomcat1的10次后,返回给nginx为10次超时,ngxin判断tomcat1为失效,然后将tomcat1超时时间恢复为1000重新启动tomcat1,在这段时间内nginx判断tomcat1还是失效状态,所以在2分钟后,nginx继续监听到tomcat1正常后,那么nginx会将tomcat1判断为有效,将连接继续均匀分配到2个tomcat上。

l  设置tomcat1连接数量,造成超时状态(总有一台server为有效状态):

Tomcat1的线程数量设置为1,nginx设置tomcat1和tomcat2权重为10,tomcat1的max_fails为10,fail_timeout=120;在连接tomcat1超过线程接受数量后,tomcat1会返回超时状态,在返回给nginx10次超时状态后,ngxin判断tomcat1为失效,然后将tomcat线程数量恢复为700,重新启动tomcat1,在这段时间内nginx判断tomcat1还是失效状态,超过2分钟失效后,nginx继续监听到tomcat1正常后,那么nginx会将tomcat1判断为有效,将连接继续均匀分配到2个tomcat上。

l  设置tomcat1关闭,造成拒绝状态(总有一台server为有效状态):

Tomcat1为关闭,nginx设置tomcat1和tomcat2权重为10,tomcat1的max_fails为10,fail_timeout=120;在连接tomcat1的10次后,nginx收到tomcat1返回connect refuse状态,ngxin判断tomcat1为失效,然后重新启动tomcat1,在这段时间内nginx判断tomcat1还是失效状态,超过2分钟失效后,nginx继续监听到tomcat1正常后,那么nginx会将tomcat1判断为有效,将连接继续均匀分配到2个tomcat上。

l  设置tomcat1在nginx1标记失效,tomcat1恢复正常,在nginx失效范围内,将全部服务变为失效,然后重启:

Tomcat1为关闭,nginx设置tomcat1和tomcat2权重为10,tomcat1的max_fails为10,fail_timeout=120;在连接tomcat1的10次后,nginx收到tomcat1返回connect refuse状态,ngxin判断tomcat1为失效,然后重新启动tomcat1,在这段时间内nginx判断tomcat1还是失效状态,然后将tomcat2关闭,然后重启tomcat2,由于所有服务均失效,所以nginx 将所有服务重新置为有效进行监听,然后将2连接均匀分布到了tomcat1和tomcat2上。

l  http错误状态,nginx是否记录失效:

nginx设置tomcat1和tomcat2权重为10,tomcat1的max_fails为10,fail_timeout=120;配置proxy_next_upstream 500、404、502、503、504、timeout后,当HTTP状态为500、502、503、504(timeout和refuse默认是记录失效的)时,nginx会判断该次请求为失败记录失败状态,其他所有HTTP均不记录失败。

 

高可用架构实战:Nginx+Keepalived实现Web服务自动故障切换 高可用性是现代分布式系统的核心设计目标,旨在确保服务在局部故障时仍能持续可用。其实现原理主要依赖于故障切换机制,通过主备节点间的状态监控与流量重定向,在检测到故障时自动或手动将服务从故障节点迁移至健康节点。这一技术对于保障业务连续性、提升系统可靠性具有关键价值,广泛应用于电商、金融、在线服务等对稳定性要求极高的场景。本文以Nginx负载均衡和Keepalived虚拟IP管理为核心,结合Docker容器化环境,详细演示了如何构建一套能够自动应对后端服务及负载均衡器故障的完整高可用解决方案,涵盖了从监控探活、服 阅读详情

相关推荐

MuleSoft+LangChain企业级AI编排实战指南

AI编排是将大语言模型(LLM)深度融入CRM、ERP等企业核心系统的工程方法,其本质是解耦数据管道与AI智能处理。通过MuleSoft构建安全、可治理的数据接入与交付层,结合LangChain实现语义理解、多步推理与内容生成,形成高可靠、易审计、可扩展的协同架构。该模式显著提升AI在销售风控、智能客服、合规邮件生成等场景的落地效率,避免了单点工具在权限管理、连接器生态、链路追踪等方面的生产级短板。本文聚焦真实项目中的MuleSoft配置、LangChain接口契约与跨系统错误熔断机制。

weixin_30596735的博客 419

Nginx——Nginx主从,双主高可用架构实战

可以认为它是实现路由器高可用的容错协议,即将N台提供相同功能的路由器组成一个路由器组(RouterGroup),这个组里面有一个master和多个backup,但在外界看来就像一台一样,构成虚拟路由器,拥有一个虚拟IP(vip,也就是路由器所在局域网内其他机器的默认路由),占有这个IP的master实际负责ARP相应和转发IP数据包,组中的其它路由器作为备份的角色处于待命状态。自Nginx 发布以来,Nginx 已经因为它的稳定性、丰富的功能集、 示例配置文件和低系统资源的消耗而闻名了。

庄小焱 4738

【信息科学与工程学】计算机科学与自动化 第二百三十三篇 凤凰架构01

编号类型领域系统软件/硬件或系统集成方案及系统架构模块子模块函数名称/算法名称算法的数学分析及计算机体系架构及数据结构与算法详细设计及参数列表及数值范围设计关联知识1共识算法分布式基石状态机复制架构:Proposer/Acceptor/Learner 多节点角色模型,基于操作转移(Operation Transfer)分布式共识PaxosPaxos 协议(Prepare/Promise/Accept/Accepted 两阶段)数学基础:多数派(Quorum)投票,基于鸽巢原理保证 W+R>N 时读写集合必有

weixin_49199313的博客 263

failover 故障检测、报警、自动切换 程序 monitor_nginx.sh 用于对web server (Nginx) 监测与故障处理

前言 前几天,群里有人说用shell程序实现failover,所以今天自己写一个shell程序 monitor_nginx.sh failover,fault detection and switching ,故障转移与切换程序(shell) 一.程序功能 用于检测web server (Nginx)是否宕掉,如果是用短信报警(sendmail139邮箱报警)并自动故障处理,浮动

mousever的专栏 1394

Redis

redis

の博客 381

【信息科学与工程学】计算机科学与技术——第二百二十五篇 架构设计 03 云原生架构02

启用HPA Controller Partial Cache(只缓存必要字段)、调整Informer Resync Period减少内存、启用Controller Memory Limit、监控Informer Cache内存。: 设置HPA stabilizationWindowSeconds大于CA扩容时间、启用CA scale-down-delay-after-add、使用PriorityBased策略优先保留Pod、监控HPA-CA震荡频率。模型并行allreduce需5TB/s→满足;

weixin_49199313的博客 351

Nginx 故障转移

Nginx 故障转移机制是高可用性架构的核心组成部分。通过结合负载均衡、健康检查、自动化重启和外部工具如 Keepalived、HAProxy,Nginx 能够提供稳定的故障转移机制,确保 Web 服务的持续可用性。在实现高可用性时,Nginx 不仅充当反向代理和负载均衡器的角色,还能与其他工具协作,确保服务在任何情况下都能保持可用。

Flying_Fish_roe的博客 2193

【信息科学与工程学】【产品体系】第三十三篇 DPU/smartinic芯片中的学科知识03

需求实现DMA 与流边界检测优化​分级超时状态机(短/中/长)+ 积压计数 + 批量触发DMA 控制器优化​描述符预取(深度 4)+ 中断合并(阈值 8)Fence 语义正确性验证​RTL 断言 + C 语言序列号检测 + 性能对比 + 硬件计数器所有代码均为可综合 Verilog,已在仿真器中通过基本功能测试。在 FPGA 原型上运行上述 RTL,配合 ChipScope 观察 fence 时序在 BlueField-3 上运行 DOCA DPA 测试程序,对比加/不加 fence 的结果。

weixin_49199313的博客 274

记一次nginx配置不当引发的499与failover 机制失效

在未明确指定的情况下其超时时间均默认为60s,简单来说(实际情况更复杂一些但这里不进一步探讨)只有在upstream处理请求耗时超过60s的情况下nginx才能判定其Gateway Timeout 并按照504处理,然而客户端设置的HTTP请求超时时间其实只有15s--这其中还包括外网数据传输的时间,于是问题来了:每一个服务端处理耗时超过15s的请求,nginx由于还没达到60s的超时阈值不会判定504,而客户端则会由于超过本地的15s超时时间直接断开连接,nginx于是就会记录为499。

有志者事竟成 731

创业公司大数据平台选型与演进实战

数据架构从单体向分布式演进,是技术团队应对业务增长的必由之路。MySQL在早期能快速验证产品,但连接数激增、SQL性能下降、实时与离线口径分化,迫使架构升级。Kafka作为消息暂存区解耦采集与计算,Spark承担离线批处理,HBase实现增量留存统计,Elasticsearch提供实时聚合查询,CDH统一管理组件降低运维成本。选型的关键不在一味追求先进技术,而是匹配业务所处阶段,避免过度设计。本文结合创业公司实际案例,拆解各阶段组件的引入时机与配置要点,梳理常见踩坑,为技术负责人在平台建设与重构时提供可复用

weixin_33892359的博客 111

webview腾讯x5内核离线安装

离线集成腾讯TBS浏览器服务,彻底解决官方下载限流问题,永久免费

观千剑而后识器,操千曲而后晓声。 7908

SSE 流式响应与 Failover 容错机制深度解析

SSE 是 AI API 的标配:首字节延迟从 30s 降到 <1s,用户体验质变流已发不可切换是铁律:任何已写入客户端的数据都无法撤回Flusher 是流式关键:没有 Flush,数据会积压在缓冲区异步计费分离性能:流式路径只负责转发,计费走异步 Worker连接池要针对长连接优化:timeout 配置与非流式场景截然不同写在最后:流式响应让 AI 交互从"等待"变成了"对话",但它也给网关开发带来了全新的复杂性。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 206

别再羡慕专业版!用这个批处理脚本,一键给Win11家庭版装上官方沙盒

本文详细介绍了如何通过批处理脚本在Windows 11家庭版上安装官方Windows沙盒(Windows Sandbox),无需复杂操作即可享受专业版功能。脚本自动激活系统内置组件,提供安全隔离的虚拟化环境,适用于软件测试、安全浏览等场景。

weixin_26757925的博客 490

分布式系统核心模块面试要点与实战解析

分布式系统是现代互联网架构的基石,其核心在于解决数据一致性与服务协同问题。从技术原理看,分布式事务通过2PC/TCC等协议保证ACID特性,而Redis/ZooKeeper等组件实现的分布式锁则解决并发控制问题。消息队列通过持久化与ACK机制确保消息可靠传输,ZooKeeper的选举算法和Dubbo的服务治理机制共同构建了高可用架构。在工程实践中,这些技术被广泛应用于电商交易、库存扣减等场景,例如Seata框架处理跨服务事务,RocketMQ保证订单状态变更的顺序性。掌握这些分布式核心技术,不仅能应对面试挑

weixin_34409357的博客 340

Vue3 与 Bpmn-js:打造现代化 BPMN 流程设计器

随着业务流程的复杂化,流程设计器成为企业级应用中不可或缺的一部分。BPMN(Business Process Model and Notation)是一种标准的业务流程建模语言,广泛应用于业务流程管理。本文将介绍如何使用 Vue3 和 Bpmn-js 打造一个现代化的 BPMN 流程设计器。

九天的专栏 2114

HTML5期末大作业:关于家乡介绍的HTML网页设计——郑州美景HTML+CSS(5页) 学生DW家乡介绍网页设计作业成品 web课程设计网页规划与设计

HTML5期末大作业:我的家乡——郑州美景HTML+CSS(5页) 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 明星、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他 等网页设计题目, A+水平作业, 可满足大学生网页大作业网页设计需求, 喜

qq_365392777 1万+

从健康检查到流量调度:构建高可用切换系统的核心原理与实践

在分布式系统与微服务架构中,高可用性是保障服务稳定性的基石,其核心依赖于一套健壮的故障切换机制。切换系统的原理本质上是基于状态感知、策略决策与执行反馈的闭环控制,通过持续的健康检查监控服务实例状态,一旦检测到故障或性能下降,系统便依据预设策略自动或手动将流量路由至健康节点。这一过程的技术价值在于最大化服务可用性、实现负载均衡并支持无缝的运维操作(如发布与扩缩容)。其典型应用场景包括数据库主从切换、多活数据中心流量调度以及服务实例的优雅上下线。本文以证书更新引发的切换需求为切入点,深入剖析了如何基于服务发现与

weixin_33892359的博客 333

LinuxMint 22.1(Ubuntu24.04)下通过Wine完美运行同花顺远航版的实战指南

本文详细介绍了在LinuxMint 22.1(Ubuntu24.04)系统下通过Wine完美运行同花顺远航版的实战指南。从基础环境准备到深度优化,包括Wine环境配置、同花顺远航版安装、字体显示调优、任务栏兼容性修复等关键步骤,帮助Linux用户高效使用同花顺远航版进行股票交易和行情分析。

weixin_30919429的博客 570

Dubbo负载均衡全解析:内置策略源码与权重预热细节

在微服务架构中,负载均衡是保障系统稳定性的关键环节。与Nginx等服务端负载均衡不同,RPC框架(如Dubbo)在消费端本地维护Provider列表,通过多种策略实现无中心化的流量分发。Dubbo内置的随机、轮询、最少活跃数及一致性哈希等策略,各自适用于不同业务场景:加权随机适合无状态服务,平滑轮询保证绝对均匀,最少活跃数能感知慢节点,而一致性哈希通过160个虚拟节点实现参数路由,显著提升本地缓存命中率。此外,权重预热机制让新启动节点平滑承接流量,避免冷启动风险。深入理解这些策略的源码逻辑与配置细节,有助于

weixin_34246551的博客 249

【WorkBuddy从入门到精通实战教程】第 4 章 快速完成第一个 WorkBuddy 任务

摘要:WorkBuddy任务创建指南详细说明了从新建任务到结果验收的全流程。操作步骤包括:选择工作目录、设置模式(Craft/Ask/Plan)、指定AI模型、输入任务说明(需包含目标/输入/动作/约束/输出/验收6要素),可选配Skill等高级设置。文中提供三个入门示例:A)文件整理需保持原文件并生成分类方案;B)会议纪要要求结构化输出且所有内容有原文依据;C)Word转PPT需遵循品牌规范并控制页数。特别强调首次操作应在演练目录测试,处理真实数据前需确认授权范围,输出文件需检查涉密信息并按规范共享。(1

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 1309

基于PChmi.dll的PLC报警显示和记录(C#)

本文介绍了如何使用C#编写基于PChmi.dll的程序,实现PLC报警的显示和记录功能。通过订阅PLC的报警事件,我们可以实时显示报警信息,并通过日志文件记录报警历史。PLC(可编程逻辑控制器)在工业自动化领域中扮演着重要的角色,而报警显示和记录是PLC应用中常见的需求。本文将介绍如何使用C#编写基于PChmi.dll的程序,实现PLC报警的显示和记录功能。当然,这只是实现报警显示和记录的基本框架,具体的实现方式可能因不同的PLC和HMI库而有所差异。你需要根据你所使用的具体库和设备进行相应的调整和修改。

ByteLegend的博客 1670

企业级MCP治理三要素:注册中心、路由与可观测性实践

在构建现代分布式应用架构时,服务治理是保障系统稳定、高效运行的核心基础。其核心原理在于通过中心化的服务注册与发现机制,实现服务实例的动态管理;通过智能路由策略,控制请求流量在服务间的精准调度与分发;再结合可观测性技术,对系统运行状态进行实时监控与深度洞察。这套技术体系的价值在于,它能将松散的微服务或工具组件,整合成一个可控、可运维的有机整体,从而支撑企业级应用在规模化、复杂化场景下的稳定运行。具体到模型上下文协议(MCP)的应用生态中,这套治理理念同样至关重要。通过引入注册中心(Registry)来统一管理

weixin_34208185的博客 368

Dify 实战:使用 Firecrawl 插件高效爬取微信公众号文章

本文介绍了如何利用Dify平台和Firecrawl插件构建微信公众号文章自动化采集系统。Dify作为开源LLM应用开发平台,结合Firecrawl的智能网页爬取能力,可轻松实现文章爬取、清洗和结构化存储。文章详细讲解了环境部署、插件安装以及工作流创建过程,通过可视化节点操作即可完成从URL输入到Markdown格式输出的全流程。该方案无需复杂代码,能有效解决反爬、动态渲染等问题,适用于知识库构建、模型训练等场景,显著提升开发效率。

SmartSi 1822

Flink On Yarn深度实践:内存模型、部署模式与生产排障

Apache Flink作为主流实时计算引擎,其在Yarn上的稳定运行依赖于对资源调度、内存分层、网络通信等底层机制的深刻理解。Flink On Yarn并非简单部署,而是涉及Yarn资源契约、Flink进程内存(Process Memory)与JVM堆内存的精确配比、以及Session/Per-Job/Application三种部署模式的工程权衡。其技术价值在于实现作业隔离、弹性扩缩与故障自治,广泛应用于实时数仓、风控引擎、用户行为分析等高可靠场景。本文聚焦Flink On Yarn落地中最易被忽视的内存

weixin_34161064的博客 301

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

01-项目一_企业级高可用Web集群实施手册

目录本手册每一个章节标题下都标了「本章操作主机」,每一个小节标题下都标了「执行主机」。动手之前先看这个标注,确认自己登录的是哪台机器——多机集群最容易犯的错就是在错的机器上敲了对的命令。所有命令默认以 用户执行。除特别说明外,命令在标注的那台(或那几台)机器上执行。VIP 一览:(Web 业务)、(数据库)、(监控/状态页)成对节点只写一遍命令。/、/、/ 这类节点的命令完全相同,手册里只写一次,标注会写明"两台都执行"。如果两侧配置有差异(例如 Keepalived 的 priority、MySQL 的

2201_75701431的博客 282

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

上一篇: nginx upstream 模式的配置与探讨
下一篇: redis 配置文件redis.conf参数说明
大树叶
博客等级 码龄12年 1171粉丝 664原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值