大型网站技术架构 构建高可用的网站 高可用的服务
本章介绍如何去构建高可用的服务,关键词:服务分级,超时设置,异步调用,服务降级,幂等性设计
服务分级
将核心应用与非核心应用进行分离,核心应用和服务优先使用更好的机器,在服务部署上也进行必要的隔离,避免故障的连锁反应
超时设置(针对通信)
设置服务连接超时时间,一旦超时,应用程序根据服务调度策略,可选择重试(配置重试次数)或将请求转移到提供相同服务的其它服务器上
例如:目前有A,B两个服务,分配部署在IP1(A服务),IP2(B服务),IP3(B服务)上,A服务调用B服务,第一次,A服务调用IP2所在B服务,假设超时时间为2S,当连接时间超过2S或者连接失败后,可进行重新连接,或者连接IP3上所在的B服务(目前大多分布式通信框架都有此配置:dubbo)
异步调用(消息队列)
在通信过程中,有同步和异步两个概念,异步调用在高并发性能方面能很好的处理一些场景
同步:需等待调用结果的返回
异步:不需要等待调用结果的返回,配置回调机制或者不需要去处理等待结果
服务降级
(保证核心应用和功能的正常运行)在高并发的场景下,系统刚不住的情况常用方案
拒绝服务 拒绝低优先级应用的调用,减少服务调用并发数,确保核心应用正常使用,随机拒绝部分请求调用,释放资源,让另一部分请求得以成功
关闭服务 关闭部分不重要的服务,或者服务器内部关闭不重要的功能,解决系统开销,为重要服务和功能让出资源
幂等性设置
防止重复调用,造成数据的准确性失误
例如:涉及支付系统,在服务端,需要做幂等性设计,当订单系统向支付系统提交了支付请求后,为防止订单系统重复提交而导致支付多笔,造成资金的损失
以上是一些架构设计中的常用方案,但是需要结合实际业务场景进行设计,没有一套方案能解决所有问题
本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!