微服务架构:稳定性设计

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 通过依赖的管理,我们能够知道,当前系统调用了哪些服务,被哪些服务调用。接下来,我们便可以根据当前系统所依赖的服务,以及系统的流程,判断依赖的服务是否影响应用的流程,以此来决定当前应用依赖的优先级。

服务分级与容量规划

       

      通过依赖的管理,我们能够知道,当前系统调用了哪些服务,被哪些服务调用。接下来,我们便可以根据当前系统所依赖的服务,以及系统的流程,判断依赖的服务是否影响应用的流程,以此来决定当前应用依赖的优先级。


      对于服务提供者来说,需要清楚了解当前的服务到底被多少人调用,并建立应用白名单机制,服务调用需要事先申请,以便将调用方增加到白名单当中进行管理和容量规划。为保障系统稳定,对于未知的调用者,最好的方式便是直接拒绝,以免给系统带来不确定风险。如果没有事先的容量规划,当未知的调用者流量突增,很可能将系统拖垮。


      服务提供者也需要对服务消费者的优先级进行区分,哪些调用将影响核心链路,哪些调用是非核心链路。当系统压力过大,无法承载的时候,必须 优先确保重要等级高的应用,核心的调用链路优先确保畅通,而对于重要性不那么高的应用,则可以暂时丢车保帅。


优雅降级


      当依赖的服务出现不稳定,响应缓慢或者调用超时,或者依赖系统宕机,当前的系统需要能够及时感知到并进行相应处理,否则,大量超时的调用,有可能将当前系统的线程和可用连接数用完,导致新的请求进不来,服务僵死,这便是故障传递。如果处理不及时故障的传递可将一个非核心链路的问题扩大,引起核心节点故障,最终形成多米诺骨牌效应,使得整个集群都不能对外提供服务。


      这样,服务调用优雅降级的重要性便体现出来了。对于调用超时的非核心服务,可以设定一个阀值,如果调用超时的次数超过这个阀值,便自动将该服务降级。此时,服务调用者跳过对该服务的调用,并指定一个休眠的时间点,当时间点过了以后,再次对该服务进行重试,如果服务恢复,则取消降级,否则,继续保持该服务的降级状态,直到所依赖的服务故障恢复。这样,便可以一定程度上避免故障传递的现象发生。


开关


      当系统负载较高,即将突破警戒水位的时候,如何通过实时地屏蔽一些非核心链路的调用,降低系统的负载呢?这个时候,需要系统预先定义一些开关,来控制程序的服务提供策略。开关通过修改一些预先定义好的全局变量,来控制系统的关键路径和逻辑,比如,可以定义一个是否允许某一个级别的应用调用当前服务的开关,当系统处于流量高峰期的时候,将非核心链路的调用屏蔽,等高峰期过去之后,再将相应的开关打开。


      当然 ,同一个应用,可能也会对外提供多个服务,如果服务耗费系统资源较多,且又不影响系统核心链路,这时,也可以将一些非核心的服务关闭掉,以减轻系统的负担,有效的提高系统对核心应用的服务能力。


建立服务监控、统计、报表

 

       服务运行期间,需要对服务器相应指标进行监控,如系统load、磁盘利用率、内存占用率、网络流量、QPS/TPS 等。


       对于服务的调用,需要有统计的报表,按照小时/日/周/月 展示 ,并且通过设置异常情况监控,如流量突增突降,系统要能够及时报警。


应用预案


     紧急情况(如双十一、双十二、热点事件等)并不是时时刻刻都发生,大部分人在第一次面对突发事件时,难免会显得手足无措。因此,要想在系统出现故障的情况下能够处变不惊,沉着应对,将损失降到最低,首先得准备一份应急预案,并且,得进行经常性的故障演练,以熟悉各种情况下对应的应急预案的操作流程和规范,避免紧急情况下错误的决策致使损失扩大,并且在实际操作中也能够积累经验。


     应急预案中需要明确的规定服务的级别,梳理清楚核心应用的调用链路,对于每一种故障,都做出合理的假设和有针对性的处理方法,对于级别低的调用和功能,事先准备好屏蔽的开关和接口。


场景和问题


        以下问题供大家思考


  • 场景一:假设某服务最大承受10 000TPS,如果超出是排队等待还是保证10 000TPS范围内请求正常,其他请求直接拒绝?
  • 场景二:非核心服务流量洪峰导致核心服务受到影响,如何解决?
  • 场景三:某服务有几百个消费者,如果其中一个消费者要求升级,满足一个临时活动,是否要求所有服务同步升级?
相关文章
|
1月前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
2月前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
49 3
|
30天前
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
160 69
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
29天前
|
运维 监控 持续交付
微服务架构解析:跨越传统架构的技术革命
微服务架构(Microservices Architecture)是一种软件架构风格,它将一个大型的单体应用拆分为多个小而独立的服务,每个服务都可以独立开发、部署和扩展。
181 36
微服务架构解析:跨越传统架构的技术革命
|
2天前
|
SQL 弹性计算 运维
云卓越架构:稳定性支柱整体解决方案综述
阿里云卓越架构聚焦于五大支柱,其中稳定性是关键。常见的云上稳定性风险包括架构单点、容灾设计不足和容量规划不合理等。为提升稳定性,需从架构设计时考虑容灾与容错、实施变更时遵循“三板斧”原则(灰度发布、可观测性和可回滚性),并确保快速响应和恢复能力。此外,通过客观度量、主观评估和巡检等方式识别风险,并进行专项治理。识货APP作为成功案例,通过优化容器化改造、统一发布体系、告警系统和扩缩容机制,实现了99.8%的高可用率,大幅提升了业务稳定性。
|
2天前
|
容灾 网络协议 数据库
云卓越架构:云上网络稳定性建设和应用稳定性治理最佳实践
本文介绍了云上网络稳定性体系建设的关键内容,包括面向失败的架构设计、可观测性与应急恢复、客户案例及阿里巴巴的核心电商架构演进。首先强调了网络稳定性的挑战及其应对策略,如责任共担模型和冗余设计。接着详细探讨了多可用区部署、弹性架构规划及跨地域容灾设计的最佳实践,特别是阿里云的产品和技术如何助力实现高可用性和快速故障恢复。最后通过具体案例展示了秒级故障转移的效果,以及同城多活架构下的实际应用。这些措施共同确保了业务在面对网络故障时的持续稳定运行。
|
2天前
|
人工智能 运维 监控
云卓越架构:企业稳定性架构体系和AI业务场景探秘
本次分享由阿里云智能集团公共云技术服务部上海零售技术服务高级经理路志华主讲,主题为“云卓越架构:企业稳定性架构体系和AI业务场景探秘”。内容涵盖四个部分:1) 稳定性架构设计,强调高可用、可扩展性、安全性和可维护性;2) 稳定性保障体系和应急体系的建立,确保快速响应和恢复;3) 重大活动时的稳定重宝策略,如大促或新业务上线;4) AI在企业中的应用场景,包括智能编码、知识库问答、创意广告生成等。通过这些内容,帮助企业在云计算环境中构建更加稳定和高效的架构,并探索AI技术带来的创新机会。
|
1月前
|
设计模式 负载均衡 监控
探索微服务架构下的API网关设计
在微服务的大潮中,API网关如同一座桥梁,连接着服务的提供者与消费者。本文将深入探讨API网关的核心功能、设计原则及实现策略,旨在为读者揭示如何构建一个高效、可靠的API网关。通过分析API网关在微服务架构中的作用和挑战,我们将了解到,一个优秀的API网关不仅要处理服务路由、负载均衡、认证授权等基础问题,还需考虑如何提升系统的可扩展性、安全性和可维护性。文章最后将提供实用的代码示例,帮助读者更好地理解和应用API网关的设计概念。
66 8
|
2月前
|
负载均衡 Java 持续交付
深入解析微服务架构中的服务发现与负载均衡
深入解析微服务架构中的服务发现与负载均衡
80 7
|
2月前
|
Java 网络安全 Nacos
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评
Nacos作为流行的微服务注册与配置中心,其稳定性与易用性广受好评。然而,“客户端不发送心跳检测”是使用中常见的问题之一。本文详细探讨了该问题的原因及解决方法,包括检查客户端配置、网络连接、日志、版本兼容性、心跳检测策略、服务实例注册状态、重启应用及环境变量等步骤,旨在帮助开发者快速定位并解决问题,确保服务正常运行。
51 5