微服务架构:稳定性设计

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

服务分级与容量规划

       

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


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


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


优雅降级


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


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


开关


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


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


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

 

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


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


应用预案


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


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


场景和问题


        以下问题供大家思考


  • 场景一:假设某服务最大承受10 000TPS,如果超出是排队等待还是保证10 000TPS范围内请求正常,其他请求直接拒绝?
  • 场景二:非核心服务流量洪峰导致核心服务受到影响,如何解决?
  • 场景三:某服务有几百个消费者,如果其中一个消费者要求升级,满足一个临时活动,是否要求所有服务同步升级?
相关文章
|
10天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
9天前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
13天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
57 6
|
13天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
29 1
|
9天前
|
Dubbo Java 应用服务中间件
服务架构的演进:从单体到微服务的探索之旅
随着企业业务的不断拓展和复杂度的提升,对软件系统架构的要求也日益严苛。传统的架构模式在应对现代业务场景时逐渐暴露出诸多局限性,于是服务架构开启了持续演变之路。从单体架构的简易便捷,到分布式架构的模块化解耦,再到微服务架构的精细化管理,企业对技术的选择变得至关重要,尤其是 Spring Cloud 和 Dubbo 等微服务技术的对比和应用,直接影响着项目的成败。 本篇文章会从服务架构的演进开始分析,探索从单体项目到微服务项目的演变过程。然后也会对目前常见的微服务技术进行对比,找到目前市面上所常用的技术给大家进行讲解。
23 1
服务架构的演进:从单体到微服务的探索之旅
|
7天前
|
消息中间件 监控 安全
后端架构演进:从单体到微服务####
在数字化转型的浪潮中,企业应用的后端架构经历了从传统单体架构到现代微服务架构的深刻变革。本文探讨了这一演进过程的背景、驱动力、关键技术及面临的挑战,揭示了如何通过微服务化实现系统的高可用性、扩展性和敏捷开发,同时指出了转型过程中需克服的服务拆分、数据管理、通信机制等难题,为读者提供了一个全面理解后端架构演变路径的视角。 ####
24 8
|
8天前
|
Cloud Native 安全 API
云原生架构下的微服务治理策略与实践####
—透过云原生的棱镜,探索微服务架构下的挑战与应对之道 本文旨在探讨云原生环境下,微服务架构所面临的关键挑战及有效的治理策略。随着云计算技术的深入发展,越来越多的企业选择采用云原生架构来构建和部署其应用程序,以期获得更高的灵活性、可扩展性和效率。然而,微服务架构的复杂性也带来了服务发现、负载均衡、故障恢复等一系列治理难题。本文将深入分析这些问题,并提出一套基于云原生技术栈的微服务治理框架,包括服务网格的应用、API网关的集成、以及动态配置管理等关键方面,旨在为企业实现高效、稳定的微服务架构提供参考路径。 ####
33 5
|
11天前
|
监控 API 微服务
后端技术演进:从单体架构到微服务的转变
随着互联网应用的快速增长和用户需求的不断演化,传统单体架构已难以满足现代软件开发的需求。本文深入探讨了后端技术在面对复杂系统挑战时的演进路径,重点分析了从单体架构向微服务架构转变的过程、原因及优势。通过对比分析,揭示了微服务架构如何提高系统的可扩展性、灵活性和维护效率,同时指出了实施微服务时面临的挑战和最佳实践。
30 7
|
10天前
|
Kubernetes 负载均衡 Cloud Native
云原生架构下的微服务治理策略
随着云原生技术的不断成熟,微服务架构已成为现代应用开发的主流选择。本文探讨了在云原生环境下实施微服务治理的策略和方法,重点分析了服务发现、负载均衡、故障恢复和配置管理等关键技术点,以及如何利用Kubernetes等容器编排工具来优化微服务的部署和管理。文章旨在为开发者提供一套实用的微服务治理框架,帮助其在复杂的云环境中构建高效、可靠的分布式系统。
26 5
|
10天前
|
负载均衡 监控 Cloud Native
云原生架构下的微服务治理策略与实践####
在数字化转型浪潮中,企业纷纷拥抱云计算,而云原生架构作为其核心技术支撑,正引领着一场深刻的技术变革。本文聚焦于云原生环境下微服务架构的治理策略与实践,探讨如何通过精细化的服务管理、动态的流量调度、高效的故障恢复机制以及持续的监控优化,构建弹性、可靠且易于维护的分布式系统。我们将深入剖析微服务治理的核心要素,结合具体案例,揭示其在提升系统稳定性、扩展性和敏捷性方面的关键作用,为读者提供一套切实可行的云原生微服务治理指南。 ####