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

【弹力设计篇】聊聊隔离设计

为什么需要隔离设计

隔离其实就是Bulkheads,隔板。在生活中隔板的应用主要在船舱中进行设计,目的是为了避免因一处漏水导致整个船都沉下去。可以将故障减少在一定的范围内,而不是整个船体。
在这里插入图片描述
从架构演变来说的话,大多数系统都是从一个系统进行拆分出多个子系统,每个子系统之间通过异步通信、HTTP、RPC等方式去完成请求。当系统较多的时候,本身就可以利用这种隔离机制去避免因一个功能导致整个系统的不可用,避免出现多米诺骨牌效应。
具体的方式,一是通过按照服务的种类来分离,二是通过用户类别分离。

按服务的种类来做分离

类比一个互联网金融平台来说,就可以划分成用户、订单、支付、三方系统、风控系统、大数据平台等。
在这里插入图片描述
而每个系统基本都会做服务冗余,一般的话都是至少3台服务,这样才可以做成高可用系统。这种从服务到数据库层面就可以完全隔离开。接入层,应用层,存储层。也禁止直接访问其他上下游系统的数据库进行数据的读取。最好是通过API的方式提供相关的数据。

虽然好处可以直接隔离开来,但是如果想要获取多个数据的话,需要访问多个系统进行获取,响应时间会增加,但是整体的吞吐量会提升。
并且多个系统之间的通讯不一定完全都是HTTP请求,可能HTTP、RPC、MQ多种方式进行通信。所以梳理起来比较杂乱。

我实际的经验就是每个公司的落地方案都是不一样的,基本都受限于早起的架构设计,然后在此基础上进行迭代。

在这里插入图片描述
大多数公司都是基于这种服务种类进行隔离

按用户请求来做分离

在这里插入图片描述
对于付费类型APP,比如视频网站,电商网站 可以根据不同的用户进行提供服务,比如VIP,普通用户。VIP专属于特别通道,而普通用户则直接进行共享同一套系统服务,即使出现网站不可用,也不会导致全部用户服务不可用。这种其实就是多租户模式。
对于多租户架构来说,会引入一些系统设计的复杂度,完全隔离,资源比较浪费,如果共享,程序设计上会比较复杂。
实现方式的话,其实就是服务是否共享,数据是否共享。

  • 1.完全独立的设计,服务独立,数据独立。
  • 2.数据独立,服务共享。
  • 3.服务共享,数据也共享。
    在这里插入图片描述
    可以看到,如果服务和数据都独立,那么隔离度和实现复杂度比较好,但是占用成本和资源共享度比较高。如果是共享的话,隔离度和共享低。开发难度比较高。
    所以一般采用折中的方案,采用服务共享,数据分区。而今天可以采用虚拟化技术来实现物理隔离来降低成本。

隔离设计的重点

隔离设计需要考虑以下问题

  • **业务层面:**我们需要对业务足够了解之后,按照一定的拆分粒度进行设计系统,系统过大或者过小都不好。
  • **复杂度层面:**无论是系统板块还是多租户的隔离,都需要考虑系统的复杂度、成本、性能、资源使用的问题,找到一个权衡的方案,确定哪些不要,哪些需要。
  • **高可用设计层面:**隔离也需要配置一些高可用设计方案,比如 重试&幂等,限流&排队,降级&熔断,异步&隔离等配套使用
  • **运维层面:**分布式系统的引入,虽然提升的整体的性能和稳定性,但是也因此带来了更多的问题,比如系统间通讯、运维层面。因此需要配置自动化运维工具,可以使用容器来管理。
  • 监控系统,好的系统一定有一双眼睛可以实时监控系统的所有重要指标。这里多说一句,有些人只关注系统的业务数据指标是否正常,我觉得这并不够,而要从系统的各个层面去观测。比如系统层面(CPU、内存、磁盘、网络)中间件层(MySQL、MQ、Redis)应用层(JVM)日志层面,监控报警等多个角度去观测。

总结

好了,今天主要介绍了弹力设计中,隔离设计,所谓隔离也不过是通过将系统间进行按照一定粒度拆分,故障不会蔓延开来。然后聊了两种方式一种是系统板块,另一种多租户方式。最后说了下隔离设计的重点。

相关文章:

【弹力设计篇】聊聊隔离设计

为什么需要隔离设计 隔离其实就是Bulkheads,隔板。在生活中隔板的应用主要在船舱中进行设计,目的是为了避免因一处漏水导致整个船都沉下去。可以将故障减少在一定的范围内,而不是整个船体。 从架构演变来说的话,大多数系统都是从…...

MFC 透明窗体

如何制作透明窗体 ????? 使用SetLayeredWindowAttributes可以方便的制作透明窗体,此函数在w2k以上才支持,而且如果希望直接使用的话,可能需要下载最新的SDK。不过此函数在w2k的user32.dll里有实…...

C++笔记之vector的resize()和clear()用法

C笔记之vector的resize()和clear()用法 code review! 文章目录 C笔记之vector的resize()和clear()用法1.resize()2.clear() 1.resize() 运行 2.clear() 运行...

Vue2基础九、路由

零、文章目录 Vue2基础九、路由 1、单页应用 (1)单页应用是什么 单页面应用(SPA:Single Page Application): 所有功能在 一个html页面 上实现具体示例: 网易云音乐 https://music.163.com/ (2)单页面应用VS多页面…...

移动零——力扣283

题目描述 双指针 class Solution{ public:void moveZeroes(vector<int>& nums){int n nums.size(), left0, right0;while(right<n){if(nums[right]){swap(nums[right], nums[left]);left;}right;}} };...

Transformer+MIA Future Work

TransformerMIA Future Work 主要的挑战和未来发展分为三个部分&#xff0c;即 1、特征集成和计算成本降低、 2、数据增强和数据集收集、 3、学习方式和模态-对象分布 1、特征集成和计算成本降低 为了同时捕获局部和全局特征来提高模型性能&#xff0c;目前大多数工作只是…...

深度学习入门(二):神经网络整体架构

一、前向传播 作用于每一层的输入&#xff0c;通过逐层计算得到输出结果 二、反向传播 作用于网络输出&#xff0c;通过计算梯度由深到浅更新网络参数 三、整体架构 层次结构&#xff1a;逐层变换数据 神经元&#xff1a;数据量、矩阵大小&#xff08;代表输入特征的数量…...

rust 配置

rustup 镜像 在 cmd 中输入以下代码&#xff0c;设置环境变量 setx RUSTUP_UPDATE_ROOT https://mirrors.tuna.tsinghua.edu.cn/rustup/rustup setx RUSTUP_DIST_SERVER https://mirrors.tuna.tsinghua.edu.cn/rustupcrates.io 索引镜像 在 C:\Users\用户名\.cargo\config 文…...

文心一言 VS 讯飞星火 VS chatgpt (67)-- 算法导论6.5 6题

文心一言 VS 讯飞星火 VS chatgpt &#xff08;67&#xff09;-- 算法导论6.5 6题 六、在 HEAP-INCREASE-KEY 的第 5 行的交换操作中&#xff0c;一般需要通过三次赋值来完成。想一想如何利用INSERTION-SORT 内循环部分的思想&#xff0c;只用一次赋值就完成这一交换操作? 文…...

6、Kubernetes核心技术 - Pod

目录 一、概述 二、Pod机制 2.1、共享网络 2.2、共享存储 三、Pod资源清单 四、 Pod 的分类 五、Pod阶段 六、Pod 镜像拉取策略 ImagePullBackOff 七、Pod 资源限制 八、容器重启策略 一、概述 Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。P…...

VlanIf虚拟接口 通信技术(二十三课)

一 Vlan技术之间的通信 单臂路由(One-Arm Routing)是一种网络架构设计方式,通常用于部署网络设备(如防火墙、负载均衡器等)实现网络流量控制和安全策略。在单臂路由中,网络设备只有一个物理接口与局域网(LAN)或广域网(WAN)相连。 1.2 交换机 数据链路层 (第二层)…...

图神经网络(GNN)入门学习笔记(直观且简单)

文章目录 图的定义和表示可以使用图数据结构的问题将图结构用于机器学习的挑战最基本的图神经网络概述汇聚操作基于信息传递的改进图神经网络全局向量信息的利用 本篇文章参考发表于Distill上的图神经网络入门博客&#xff1a; A Gentle Introduction to Graph Neural Network…...

【Java开发】 Mybatis-Flex 01:快速入门

Mybatis 作为头部的 ORM 框架&#xff0c;他的增强工具可谓层出不穷&#xff0c;比如出名的 Mybatis-Plus 和 阿里云开源的 Fluent-MyBatis&#xff0c;如今出了一款 Mybatis-Flex &#xff0c;相比前两款功能更为强大、性能更为强悍&#xff0c;不妨来了解一下。 目录 1 Myba…...

企业级业务架构学习笔记<二>

一.业务架构基础 业务架构的定义 以实现企业战略为目标&#xff0c;构建企业整体业务能力规划并将其传导给技术实现端的结构化企业能力分析方法 (业务架构可以从企业战略触发&#xff0c;按照企业战略设计业务及业务过程&#xff0c;业务过程时需要业务能力支撑的&#xff0…...

Minio在windows环境配置https访问

minio启动后&#xff0c;默认访问方式为http&#xff0c;但是有的时候我们的访问场景必须是https&#xff0c;浏览器有的会默认以https进行访问&#xff0c;这个时候就需要我们进行配置上的调整&#xff0c;将minio从http访问升级到https。而查看minio的官方文档&#xff0c;并…...

安装JDK环境(Windows+Linux双教程)

今日一语&#xff1a;今天的事情不去做&#xff0c;到了明天就成了麻烦&#xff0c;到了下个月就成了隐患&#xff0c;到了明年只剩下悔恨和惋惜 Linux 从Oracle网站下载linux的rpm包java -version 查询java环境是否已经安装 如果已经安装&#xff0c;可以选择卸载重装或者直接…...

SVG图标,SVG symbols,SVG use标签

SVG图标&#xff0c;SVG symbols 项目中图标的使用&#xff0c;趋势是使用svg作图标的&#xff0c;优点如下 兼容现有图片能力前提还支持矢量 可读性好&#xff0c;有利于SEO与无障碍 在性能和维护性方面也比iconfont要强很多 怎么在项目中优雅的使用svg图标&#xff0c;下面…...

常用css 笔记

0、定义变量 :root { --primary-color: #007bff;} .button { background-color: var(--primary-color);} 1、水平垂直居中 div {width: 100px;height: 100px;position: absolute;top: 0;right: 0;bottom: 0;left: 0;margin: auto; }父级控制子集居中 .parent {display: fle…...

git的ssh方式对接码云

一、环境准备&#xff1a; 1、git下载&#xff0c;360管家或是百度。 2、vs2022&#xff0c;百度下载。 二、配置git&#xff1a; 1、打开准备存放文件的文件夹&#xff0c;右键&#xff0c;选择“Git Bash here”&#xff0c;弹出命令窗口&#xff0c; 输入&#xff1a;ss…...

Golang之路---02 基础语法——变量

Golang变量 变量的声明 声明变量的一般形式是使用 var 关键字 Go 语言是静态类型语言&#xff0c;编译时&#xff0c;编译器会检查变量的类型&#xff0c;所以要求所有的变量都要有明确的类型。 1 &#xff1a;一个变量单行声明 语法格式&#xff1a; var name type var是关…...

Alpamayo-R1-10B保姆级教程:Linux服务器远程访问7860端口配置

Alpamayo-R1-10B保姆级教程&#xff1a;Linux服务器远程访问7860端口配置 1. 引言&#xff1a;为什么需要远程访问&#xff1f; 想象一下这个场景&#xff1a;你在本地电脑上部署了强大的Alpamayo-R1-10B自动驾驶模型&#xff0c;但每次想测试都得跑到服务器机房&#xff0c;…...

Python程序设计期末考试高频大题精讲:二维列表数据处理实战与深度解析

Python程序设计期末考试高频大题精讲&#xff1a;二维列表数据处理实战与深度解析 摘要&#xff1a;本文以高校计算机科学与技术专业《Python程序设计》期末考试中一道典型大题——“统计学生捐款次数”为切入点&#xff0c;系统讲解二维列表&#xff08;嵌套列表&#xff09;的…...

CDN 无法播放音视频?流媒体回源与 Range 配置修复

流媒体应用现在越来越普及&#xff0c;CDN&#xff08;内容分发网络&#xff09;早已成为音视频流畅播放的核心支撑——靠边缘节点就近分发&#xff0c;既能降低延迟&#xff0c;又能减轻源站压力&#xff0c;让用户不用长时间等待就能看高清内容。但实际运维中&#xff0c;“C…...

从原理到代码:固高GTS控制卡SmartHome回零功能完整开发指南(附C#示例)

从原理到代码&#xff1a;固高GTS控制卡SmartHome回零功能完整开发指南&#xff08;附C#示例&#xff09; 在工业自动化领域&#xff0c;运动控制系统的精度和可靠性往往取决于一个看似简单却至关重要的功能——回零操作。作为固高GTS系列控制卡的核心功能之一&#xff0c;Smar…...

2026做GEO,豆包、DeepSeek、元宝都爱引用哪些媒体?这份清单收好了!

你是不是也发现了这个 “诡异” 的现象&#xff1f;过去&#xff0c;我们拼命讨好搜索引擎的爬虫&#xff0c;优化关键词密度、买外链&#xff0c;只为排在百度搜索结果的第一页。而现在&#xff0c;用户变了。他们不再在搜索框里试错关键词&#xff0c;而是直接打开豆包、Deep…...

html-to-docx:让HTML转Word不再头疼的开源解决方案

html-to-docx&#xff1a;让HTML转Word不再头疼的开源解决方案 【免费下载链接】html-to-docx HTML to DOCX converter 项目地址: https://gitcode.com/gh_mirrors/ht/html-to-docx 在数字化办公的浪潮中&#xff0c;文档格式转换已成为企业和个人的日常需求。据行业调研…...

西门子SMART200 PLC梯形图,SR20,昆仑通态触摸屏组态画面,常压电热水锅炉比例模糊...

西门子SMART200 PLC梯形图&#xff0c;SR20&#xff0c;昆仑通态触摸屏组态画面&#xff0c;常压电热水锅炉比例模糊控制追目标温度&#xff0c;PLC源触摸屏源CAD原理图图纸全套常压电热水锅炉那种“冰火两重天”的加热体验谁懂&#xff1f;茶水间或者小烘干池边上&#xff0c;…...

技术洞察:zyfun如何重构跨平台视频播放体验

技术洞察&#xff1a;zyfun如何重构跨平台视频播放体验 【免费下载链接】zyfun 跨平台桌面端视频资源播放器,免费高颜值. 项目地址: https://gitcode.com/gh_mirrors/zy/zyfun 在数字娱乐快速发展的今天&#xff0c;跨平台视频播放器面临着系统兼容性、性能优化和用户体…...

5步搞定Qwen3-Embedding-4B向量服务:SGlang部署亲测有效

5步搞定Qwen3-Embedding-4B向量服务&#xff1a;SGlang部署亲测有效 1. Qwen3-Embedding-4B模型简介 1.1 模型核心能力 Qwen3-Embedding-4B是通义实验室推出的新一代文本嵌入模型&#xff0c;专为高效语义编码设计。作为Qwen3系列的一员&#xff0c;它在保持中等参数规模&am…...

从模电理论到商用落地,应届生必做的无线充项目,H 桥 / LC 谐振 + QI 协议全栈详解

很多初学嵌入式的同学、正在准备秋招的电子信息类应届生&#xff0c;都会遇到两个核心困境&#xff1a;一是模电学了 H 桥、LC 谐振&#xff0c;只会背公式做题&#xff0c;根本不知道怎么在真实产品里落地&#xff1b;二是学完单片机只会点灯&#xff0c;写的都是流水账代码&a…...