当前位置: 首页 > news >正文

微服务可用性之隔离

摘要

​ 本文主要微服务场景下服务的可用性保障之隔离。隔离又分为几种情况,动静隔离、读写隔离、热点隔离、资源隔离等场景。

为什么要隔离

​ 本质上是对资源进行分割确保在出现故障的时候服务只是部分不可用,不至于系统陷入整体性瘫痪,记得左耳朵耗子大佬就曾在他的文章里面说过饿了吗在做多活之前就经常会有服务整体崩溃的情况,直到做了多活情况才有所好转,这是一个经典集群隔离场景。

隔离的类型

动静隔离

​ 图片、视频等静态资源往往占用大量的带宽,我司曾经就因为一次配错静态资源的链接导致流量没有打到CDN上导致带宽打满的问题,所以一定要把静态资源放到CDN这种边缘计算结点上。

核心隔离

​ 将核心功能拆分出来单独部署成一个服务,避免因为非核心功能的故障导致系统整体不可用

热点隔离

​ 比如我们有一张数据表,有一个 text 或大varchar类型的字段,由于innodb读取数据是基于数据页进行读取,所以字段长度过大的话会导致数据页存储的数据过少从而导致innodb缓存命中率降低。我们可以考虑将这些大字段和不经常使用的单独拆分到一张扩展表里面从而提高数据库的读写性能。

读写隔离

数据库:业务发展到一定程度,数据库往往都是一主一从或一主多从的架构模式,读从库写主库,当然也有特殊场景,由于数据库我们一般配置的都是异步复制模式(数据库可以配置异步、半同步、组复制模式),所以会有读延迟问题,在支付等数据一致性要求高的场景我们通常是采取强制读取主库的方案(即核心业务读取主库,非核心业务读从库)

​ 缓存:将缓存的读写放到不同的集群当中,写集群出现故障读集群依然可用,读集群出现故障还可以重试到其它集群。
经典数据库架构图

进程隔离

​ 服务拆分:通过对单体服务进行垂直拆分,将业务部署到不同的资源上,避免服务间互相干扰,比如OOM导致的服务整体不可用

​ 容器化:容器化化部署从而更好的对服务的 CPU、内存等资源进行隔离

线程隔离

​ 通过对线程进行池化避免由于大量的慢操作导致全部线程不可用从而导致服务整体不可用,因此可以把线程池分为快慢池,确保满操作不会影响所有正常的请求。

集群隔离

​ 我们有些的服务可能都是部署在一个集群当中,流量等异常可能会由于一组服务实例影响了其他服务,因此我们可以将一些重要服务单独部署到一个集群避免被非核心服务影响。

机房隔离

​ 随着流量的增长对服务可用性要求会越来越高,通常会进行多机房部署。每个机房都有完整的服务分组,从性能考虑本机房的服务通常只调用本机房的服务分组。当机房出现故障时可通过负载均衡或者服务端自动重试到另一个机房。

总结

​ 在我们服务的开发过程中一定要多想想,资源、服务之间会不会产生相互影响。比如大促就要考虑做核心服务集群的隔离,视频转码服务就要考虑大视频和短视频的快慢隔离(大、小视频分别投递到不同队列进行处理)。总之要站在全局视角多想想,希望大家都能变的更强。

Reference
  1. https://cloud.tencent.com/developer/article/1789752

相关文章:

微服务可用性之隔离

摘要 ​ 本文主要微服务场景下服务的可用性保障之隔离。隔离又分为几种情况,动静隔离、读写隔离、热点隔离、资源隔离等场景。 为什么要隔离 ​ 本质上是对资源进行分割确保在出现故障的时候服务只是部分不可用,不至于系统陷入整体性瘫痪,…...

设计模式——概述

1.设计模式定义 ​ 设计模式是软件设计中常见问题的典型解决方案,可用于解决代码中反复出现的设计问题。设计模式的出现可以让我们站在前人的肩膀上,通过一些成熟的设计方案来指导新项目的开发和设计,以便于我们开发出具有更好的灵活性和可扩展性&#…...

#P0564. 数组元素查找升级版

问题描述 给你 n 个数,再给你一个数 k,查找 k 在这 n 个数中第一次出现的位置(从 0 开始计数),不存在输出 No。 输入 多组测试数据,对于每组测试数据: 第一行输入一个整数 n (1 ≤ n ≤ 100…...

如何修改WordPress网站的域名

我的网站用的是Hostease的虚拟主机,但是域名是之前在其他平台买的,而且已经快到期了,因为主机和域名在不同的平台上,管理不太方便,所以我又在Hostease重新注册了一个域名,然后把网站换成了新的域名&#xf…...

python爬虫[简易版]

python爬数据[简易版] 对于每个网站的爬的原理基本是一样的,但是具体的代码写法的区别就在于爬的数据中解析出想要的数据格式: 以爬取有道词典中的图片为例: 第一步:打开网站,分析图片的数据源来自哪里, https://dict-subsidiary.youdao.com/home/content?invalid&pre…...

128天的创意之旅:从初心到成就,我的博客创作纪念日回顾

文章目录 🚀机缘:初心的种子——回望创作之旅的启航🌈收获:成长的果实——128天创作之旅的宝贵馈赠❤️日常:创作与生活的交织👊成就:代码的艺术🚲憧憬:未来的蓝图 &…...

前端绘制流程节点数据

根据数据结构和节点的层级、子节点id&#xff0c;前端自己绘制节点位置和关联关系、指向、已完成节点等 <template><div><div>通过后端节点和层级&#xff0c;绘制出节点以及关联关系等</div><div class"container" ref"container&…...

2024年顶级算法-黑翅鸢优化算法(BKA)-详细原理(附matlab代码)

黑翅鸢是一种上半身蓝灰色&#xff0c;下半身白色的小型鸟类。它们的显著特征包括迁徙和捕食行为。它们以小型哺乳动物、爬行动物、鸟类和昆虫为食&#xff0c;具有很强的悬停能力&#xff0c;能够取得非凡的狩猎成功。受其狩猎技能和迁徙习惯的启发&#xff0c;该算法作者建立…...

Linux 内核开发 28 内核模块文件ko文件介绍

Linux 内核开发 28 内核模块文件ko文件介绍 1. ELF格式简介 内核模块文件ko文件&#xff0c;格式为elf格式&#xff0c; ELF&#xff08;Executable and Linkable Format&#xff09;可执行链接格式&#xff0c;是一种用于存储可执行程序、目标代码、共享库和内核模块的标准文件…...

DDR5—新手入门学习(一)【1-5】

目录 1、DDR背景 &#xff08;1&#xff09;SDR SDRAM时代 &#xff1a; &#xff08;2&#xff09;DDR SDRAM的创新 &#xff1a; &#xff08;3&#xff09;DDR技术的演进 &#xff1a; &#xff08;4&#xff09;需求推动&#xff1a; 2、了解内存 &#xff08;1&…...

力扣HOT100 - 138. 随机链表的复制

解题思路&#xff1a; class Solution {public Node copyRandomList(Node head) {if(headnull) return null;Node p head;//第一步&#xff0c;在每个原节点后面创建一个新节点//1->1->2->2->3->3while(p!null) {Node newNode new Node(p.val);newNode.next …...

深入分析 Android Activity (五)

深入分析 Android Activity (五) 1. Activity 的进程和线程模型 在 Android 中&#xff0c;Activity 默认在主线程&#xff08;也称为 UI 线程&#xff09;中运行。理解进程和线程模型对于开发响应迅速且无阻塞的应用程序至关重要。 1.1 主线程与 UI 操作 所有 UI 操作必须…...

Kubernetes 应用滚动更新

Kubernetes 应用版本号 在 Kubernetes 里&#xff0c;版本更新使用的不是 API 对象&#xff0c;而是两个命令&#xff1a;kubectl apply 和 kubectl rollout&#xff0c;当然它们也要搭配部署应用所需要的 Deployment、DaemonSet 等 YAML 文件。 在 Kubernetes 里应用都是以 …...

五分钟”手撕“图书管理系统

前言&#xff1a; 图书馆管理系统需要结合JavaSE的绝大部分知识&#xff0c;是一个很好的训练项目。 为了让大家更加方便的查阅与学习&#xff0c;我把代码放开头&#xff0c;供大家查询。 还有对代码的分析&#xff0c;我将以类为单位分开讲解。 目录 全部代码 Main类 Us…...

8个实用网站和软件,收藏起来一定不后悔~

整理了8个日常生活中经常能用得到的网站和软件&#xff0c;收藏起来一定不会后悔~ 1.ZLibrary zh.zlibrary-be.se/这个网站收录了超千万的书籍和文章资源&#xff0c;国内外的各种电子书资源都可以在这里搜索&#xff0c;98%以上都可以在网站内找到&#xff0c;并且支持免费下…...

电商内卷时代,视频号小店凭借一己之力“脱颖而出”

大家好&#xff0c;我是电商笨笨熊 今年618各大电商平台花样百出&#xff1b; 某宝更是直接取消了“预售”&#xff0c;从5月就开始进入618预热期&#xff1b; 不少玩家既开心又难过&#xff0c;市场如此内卷&#xff0c;618确实是个爆发期&#xff0c;但更多的需要不断压低…...

【论文笔记】| 定制化生成PuLID

PuLID: Pure and Lightning ID Customization via Contrastive Alignment ByteDance, arXiv:2404.16022v1 Theme: Customized generation 原文链接&#xff1a;https://arxiv.org/pdf/2404.16022 Main Work 提出了 Pure 和 Lightning ID 定制 (PuLID)&#xff0c;这是一种用于…...

P1638 逛画展

题目描述 博览馆正在展出由世上最佳的 &#x1d45a; 位画家所画的图画。 游客在购买门票时必须说明两个数字&#xff0c;&#x1d44e; 和 &#x1d44f;&#xff0c;代表他要看展览中的第 &#x1d44e; 幅至第 &#x1d44f; 幅画&#xff08;包含 &#x1d44e;,&#x1…...

Linux(centos)常用命令

Linux&#xff08;Centos&#xff09;常用命令使用说明文档 切换到/home目录下 使用cd命令切换目录&#xff0c;例如&#xff1a; cd /home列出/home目录下的所有文件 使用ls命令列出目录下的文件和子目录&#xff0c;例如&#xff1a; ls /home新建目录dir1 使用mkdir命…...

从入门到精通:掌握Scrapy框架的关键技巧

在当今信息爆炸的时代&#xff0c;获取并利用网络数据成为了许多行业的核心竞争力之一。而作为一名数据分析师、网络研究者或者是信息工作者&#xff0c;要想获取网络上的大量数据&#xff0c;离不开网络爬虫工具的帮助。而Scrapy框架作为Python语言中最为强大的网络爬虫框架之…...

OpenClaw+Qwen3-14b_int4_awq:自动化内容处理与发布流水线

OpenClawQwen3-14b_int4_awq&#xff1a;自动化内容处理与发布流水线 1. 为什么需要自动化内容流水线 作为一个长期与文字打交道的创作者&#xff0c;我每天要处理大量重复性工作&#xff1a;从各个渠道收集素材、整理成结构化内容、撰写初稿、调整格式、最后发布到不同平台。…...

SSD用久了为啥会变慢?深入NAND Flash的‘写放大’与‘磨损均衡’,教你看懂SMART数据避坑

SSD性能下降的真相&#xff1a;从写放大到磨损均衡的深度解析 你是否遇到过这样的困扰——新买的SSD速度飞快&#xff0c;但用了一段时间后&#xff0c;系统响应明显变慢&#xff0c;开机时间延长&#xff0c;文件传输速度大不如前&#xff1f;这种现象并非偶然&#xff0c;而是…...

OpenClaw多模态聊天机器人:Qwen2.5-VL-7B实现图片问答与表情包生成

OpenClaw多模态聊天机器人&#xff1a;Qwen2.5-VL-7B实现图片问答与表情包生成 1. 为什么选择OpenClaw构建多模态聊天机器人 去年我在运营一个技术社群时&#xff0c;经常遇到群成员发截图提问的场景。传统聊天机器人要么只能处理文字&#xff0c;要么需要将图片上传到第三方…...

C语言回调函数在TCP客户端中的应用与实践

1. 回调函数基础概念解析回调函数是C语言中一种强大的编程机制&#xff0c;它允许我们将函数作为参数传递给其他函数。这种设计模式在现代编程中极为常见&#xff0c;特别是在事件驱动编程、异步操作和模块化设计中。1.1 回调函数的本质回调函数本质上是一个通过函数指针调用的…...

嵌入式系统代码执行时间测量方法与优化

1. 嵌入式程序运行时间测量的必要性在嵌入式系统开发中&#xff0c;精确测量代码执行时间是每个工程师必备的技能。无论是优化算法效率、调试实时系统&#xff0c;还是验证硬件性能&#xff0c;时间测量都扮演着关键角色。以STM32为例&#xff0c;当我们需要确认一个延时函数是…...

如何突破Cursor AI使用限制?解锁永久免费Pro功能的终极指南

如何突破Cursor AI使用限制&#xff1f;解锁永久免费Pro功能的终极指南 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached you…...

INNISO1接口模块

INNIS01 接口模块INNIS01 是一款应用于工业自动化控制系统中的接口模块&#xff0c;主要用于实现控制系统内部或与外部设备之间的信号连接与数据交互&#xff0c;属于系统中的通信与接口扩展单元。一、基本概述INNIS01 接口模块通常用于连接控制器与现场设备或其他功能模块&…...

WeClaw_42_Agent工具注册全链路:从BaseTool到意图识别的标准化接入

WeClaw_42_Agent工具注册全链路&#xff1a;从BaseTool到意图识别的标准化接入作者: WeClaw 开发团队 日期: 2026-03-29 版本: v1.0 标签: Agent 工具、BaseTool、意图识别、渐进式暴露、延迟注入&#x1f4d6; 摘要 本文系统讲解 WeClaw Agent 工具注册的完整链路。当需要将一…...

基于MCGS嵌入版7.7的全自动洗车机组态仿真程序编写与流程图详解

MCGS洗车程序 MCGS嵌入版7.7组态仿真程序 全自动洗车机&#xff0c;脚本程序编写 有完整的流程图"这洗车机PLC程序怎么又卡在喷淋环节了&#xff1f;"凌晨两点的工控车间里&#xff0c;我盯着MCGS嵌入版的仿真界面直挠头。全自动洗车机的脚本调试真是个磨人的小妖精&…...

Gitee:数字化转型浪潮中企业项目管理的战略级解决方案

在数字经济成为全球经济增长新引擎的背景下&#xff0c;企业数字化转型已从"选择题"变为"必答题"。项目管理工具作为数字化转型的基础设施&#xff0c;其重要性日益凸显。根据IDC最新预测&#xff0c;到2025年&#xff0c;中国数字经济规模将突破80万亿元&…...