微服务可用性之隔离

摘要

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

为什么要隔离

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

隔离的类型

动静隔离

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

核心隔离

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

热点隔离

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

读写隔离

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

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

进程隔离

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

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

线程隔离

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

集群隔离

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

机房隔离

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

总结

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/15481.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何用 MoonBit 实现 diff?

你使用过 Unix 下的小工具 diff 吗? 没有也没关系,简而言之,它是一个比对两个文本文件之间有什么不同之处的工具。它的作用不止于此,Unix 下还有一个叫 patch 的小工具。 时至今日,很少有人手动为某个软件包打补丁了…

ros的pcl库中对于自己定义的消息,调用pcl库时总是报错 c++

首先定义自己的消息类型 struct CustomPoint { // 定义点类型结构PCL_ADD_POINT4D; // 该点类型有4个元素float intensity 0.0;uint32_t zone;uint32_t ring;uint32_t sector;EIGEN_MAKE_ALIGNED_OPERATOR_NEW // 确保new操作符对齐操作 } EIGEN_ALIGN16; // 强制SSE对齐POIN…

[BT]小迪安全2023学习笔记(第26天:Web攻防-sqlmap)

第26天 Oracle 测回显: and 12 union select 1, 2 from dualMongoDB 测回显: ?id1}); return ({title:1,content:2});用于闭合前面的({,后面就是自己构造的语句 sqlmap使用 基本操作 python sqlmap.py -u "网址url&#xff08…

使用C/C++ API接口操作 Zookeeper 数据

ZooKeeper 支持 Java 和 C 的API接口。本文将介绍使用 C/C 语言客户端库的编译安装和使用入门。 一、编译安装 PS:就在上一篇文章还觉得安装和配置 jdk 、maven 麻烦,所以当时选择 apache-zookeeper-[version]-bin.tar.gz 的版本。然而,本文…

Leetcode刷题笔记4

1658. 将 x 减到 0 的最小操作数 1658. 将 x 减到 0 的最小操作数 - 力扣(LeetCode) 示例 3: 输入:nums [3,2,20,1,1,3], x 10 输出:5 解释:最佳解决方案是移除后三个元素和前两个元素(总共…

贪心part2 买卖股票的最佳时机 跳跃游戏

122.买卖股票的最佳时机II 代码随想录 分析:计算相邻两天的收益,将正收益相加即为总的最大收益 class Solution:def maxProfit(self, prices: List[int]) -> int:res 0for i in range(len(prices)-1):if prices[i1] - prices[i] > 0:res prices…

【CAN】STM32新能源汽车CAN通信实现过程

【CAN】STM32新能源汽车CAN通信实现过程 文章目录 前言一、软件1.PA11、PA12口配置2.PB8、PB9口配置 二、接线图三、硬件原理图四、上位机总结 前言 【电机控制】直流有刷电机、无刷电机汇总——持续更新 使用工具: 1.控制器——STM32F103C8T6 2.仿真器——STLINK …

人工智能方面顶会

人工智能 AAAI the National Conference on Artificial Intelligence 美国人工智能协会主办 IJCAJ the International Joint Conference on Artificial Intelligence每年举办 计算机视觉 CVPR IEEE Conference on Computer Vision and Pattern Recognition ECCV European Co…

【Python搞定车载自动化测试】系列文章目录汇总

系列文章目录汇总: 【Python搞定车载自动化测试】——PythonRobot Framework框架实现UDS诊断自动化(含Python源码) 【Python搞定车载自动化测试】——Python基于周立功ZCANPRO开发刷写脚本 【Python搞定车载自动化测试】——Python基于Pytest…

Opencompass模型评测教程

模型评测 模型评测非常关键,目前主流的方法主要可以概括为主观评测和客观评测,主观评测又可以分为两种形式:人工判断或者和模型竞技场。客观评测一般采用评测数据集的形式进行模型评测。本教程使用Opencompass工具进行对Internlm2-7b模型进行…

29. 相似矩阵,若尔当型

文章目录 1. 相似矩阵1.1 A T A A^TA ATA正定性证明 2. 相似矩阵2.1 举例2.2 证明相似矩阵具有相同特征值 1. 相似矩阵 假设矩阵A,B为正定矩阵,那么对于任意非零列向量x来说,二次型 x T A x , x T B x x^TAx,x^TBx xTAx,xTBx恒为正 x T A …

网络模型-策略路由配置

在实际网络应用中,策略路由也是一种重要的技术手段。尽管在考试并不注重策略路由,但是实际上应用较多建议考生除了掌握基本的静态路由协议IP route-static,动态路由协议RIP、还要掌握如何配置策略路由。策略路由的基本原理:根据ACL定义的不同…

深度学习之人脸性别年龄检测系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 随着计算机视觉和深度学习技术的飞速发展,人脸性别年龄检测系统在多个领域展现出广…

字符串转ArrayBuffer

const arrayBuffer new ArrayBuffer(str.length)const bufferView new Uint8Array(ab) for (let i 0; i < str.length; i) {bufferView[i] str.charCodeAt(i) }【前端】失落的 ArrayBuffer - 知乎

SVG批量转为pdf超有效的方式!

最近在整理工作&#xff0c;发现ppt里面画的图智能导出svg格式无法导出pdf格式&#xff0c;由于在线的网站会把我的图片搞乱而且不想下载visio&#xff08;会把本地的word搞坏&#xff09;&#xff0c;因此琢磨出这种批量转换的方式。 1. 下载并安装Inkscape 下载链接&#xf…

使用HTTP客户端在Python中进行网页抓取——笔记

使用HTTP客户端在Python中进行网页抓取 在网页抓取的上下中&#xff0c;HTTP客户端向目标网站发送请求&#xff0c;并检索网站的HTML代码或JSON有效负载等信息。 HTTP客户端并不直接指向代码开发者&#xff0c;而是指在客户端-服务器模型中发送HTTP请求的部分。这个客户端是一…

电路仿真软件:点亮教学新篇章,十大便利助力高效学习

在信息化时代的浪潮中&#xff0c;电路仿真软件以其独特的优势&#xff0c;逐渐在教学领域崭露头角。它不仅能够帮助学生更好地理解电路知识&#xff0c;还能提升教师的教学效果。接下来&#xff0c;让我们一起探讨电路仿真软件对教学带来的十大便利。 一、直观展示电路原理 电…

Keras深度学习框架第二十四讲:KerasNLP概述

1、KerasNLP简介 KerasNLP是一个与TensorFlow深度集成的库&#xff0c;旨在简化NLP&#xff08;自然语言处理&#xff09;任务的建模过程。它提供了一系列高级API&#xff0c;用于预处理文本数据、构建序列模型和执行常见的NLP任务&#xff0c;如情感分析、命名实体识别和机器…

风控指南:国内车险欺诈呈现四大趋势

目录 车险欺诈呈现内外勾结的团伙化 防范车险欺诈需要多重合作 保险企业需要提升反欺诈能力 监管部门需要加强协同合作 2024年4月11日&#xff0c;国家金融监督管理总局官网发布国家金融监督管理总局关于《反保险欺诈工作办法&#xff08;征求意见稿&#xff09;》公开征求意见…

PCL平面多边形可视化

1、背景介绍 多边形是一个在二维平面上由直线段&#xff08;称为边或侧&#xff09;首尾顺次连接围成的封闭图形。这些直线段也称为多边形的边&#xff0c;而它们的交点称为多边形的顶点或角。在点云边缘点提取后&#xff0c;有时候需要将其进行可视化&#xff0c;如下图所示。…