集群防护的实用追问
集群部署后,业务代码需要做哪些改造?
大多数情况下,无状态应用(比如纯API服务、Web应用)只需要很小的改动,关键是不要在代码里写死服务器IP,不要用本地文件存储用户数据,会话信息要放到Redis或数据库等共享存储中,有状态应用(如数据库、消息队列)需要额外考虑数据同步和一致性机制,改造工作量会大一些,但主流的中间件(MySQL、Kafka、Zookeeper)都已经内置了成熟的集群方案,按官方文档配置即可。

集群中某个节点突然宕机,正在处理的用户请求会发生什么?

如果负载均衡层配置了健康检查自动摘除,新请求不会继续发往故障节点,已连到故障节点的请求会短暂失败(连接重置或超时),用户的浏览器可能会报一次错误,为了减少这类体验问题,前端可以配置

重试机制(比如Nginx的proxy_next_upstream),把失败的请求自动转发给其他正常节点,用户往往感知不到后端的节点更替,核心原则是:集群负责把故障影响降到最低,但完全无感需要一个逐步优化的过程。