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

数据库管理-第295期 IT架构与爆炸半径(20250221)

数据库管理295期 2025-02-21

  • 数据库管理-第295期 架构与爆炸半径(20250221)
    • 1 术语新解
    • 2 硬件:存储VS本地盘
    • 3 数据库
      • 3.1 多模VS专用
      • 3.2 集中式VS分布式
    • 4 公有云VS非公有云
    • 总结

数据库管理-第295期 架构与爆炸半径(20250221)

作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Pro: Database
PostgreSQL ACE Partner10年数据库行业经验
拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证
墨天轮MVP,ITPUB认证专家
圈内拥有“总监”称号,非著名社恐(社交恐怖分子)公众号:胖头鱼的鱼缸
CSDN:胖头鱼的鱼缸(尹海文)
墨天轮:胖头鱼的鱼缸
ITPUB:yhw1809。
除授权转载并标明出处外,均为“非法”抄袭

胖头鱼的鱼缸_01.png
最近大家都在写DeepSeek和AI,上周蹭过热点了,我也就不继续了。
这几天在和几位好友扯淡时,发现一个新鲜用于IT高可用的军事术语——爆炸半径。

1 术语新解

简单来说,爆炸半径就是当某个软件或硬件出现故障时,对整个系统运行的影响程度。比如一台服务器宕机,所有页面打不开了还是部分页面打不开或者全都正常;一个缓存挂了,是无影响、部分数据读不到了还是全都读不到了;一个交换机掉电,是部分设备网络不通还是全都不通了还是都正常等等。作为数据相关从业者,本期主要从数据架构相关层面来进行解读。

2 硬件:存储VS本地盘

“传统”的IT架构中,包括基于VMware的虚拟化和Oracle的基于共享存储的RAC,都有一个非常重要硬件组件——存储,这里主要特指在很多人眼中的称之为“硬盘阵列柜”的东西,也就是集中共享存储。很多人认为集中存储如出现故障,其爆炸半径是十分可怕的,因为不管是虚拟机还是数据库的数据都存放在一个相对集中的地方,一损全毁,很可能整个IT架构的渣都不剩,这个忧虑其实不无道理。也因大家对集中存储爆炸半径的顾虑,加上集中存储高昂的采购费用,使用服务器本地盘以分散副本方式来组织数据成为了一些人的理想架构。
对于企业存储而言,不论是从设计还是实际故障统计看,都不太可能出现整机完全不可用的情况。因为硬件层面存储内部各个组件,包括但不限于磁盘,控制器,电源模块,CPU内存等都是有冗余架构设计的。比如电源是多路冗余PDU供电,除非整机房断电存储设备是不会下电的;再比如单个控制器故障了,他上面的网卡会立即被其他控制器接管(服务器完全无法做到这点)。另一方面,企业存储设备之所以比一堆硬件堆在一起价格高,是因为他不仅仅是硬件简单组装拼插,其内部包含了一套完整的软件逻辑,比如磁盘IO分布和介质生命周期管理,数据因器件老化静默损坏的提前修复,精细化任务调度减少IO抖动等,更不用说还有完整的可视化报表和维护管理工具等。据说企业级存储的代码量可能高达上千万行,而我们知道成熟软件中功能代码占比并不会很高,大部分都是在处理健壮性、故障、异常、易用这些问题,这也是成熟产品真正价值所在。而且存储的高可用架构其实也是非常成熟的,可以实现多活与异地灾备的,当然这个价格也是相对较贵的;另一方面存储其实也可以非常方便的横向扩容,增加容量与性能。
对比使用服务器本地磁盘,其实就服务器本身来说,其故障率是比较高的,稳定性就远低于存储设备,而且稳定性是随着使用时间不断下降的。在某个业务场景下的数据库,9台同期上线的使用本地盘的服务器在非常短的时间内(小于恢复首台故障服务器时间)有6台故障,导致数据库中断且难以恢复。为什么感觉很难看到类似的消息,一方面是有些场景负载小,高负载对硬件耐久度的消耗是明显的,负载小达不到容易出现故障的阈值;另一方面则是关键行业/系统对硬件生命周期管理非常严格,硬件更换周期远低于平均故障时间。很多人没在这方面吃过亏,所以对硬件稳定性没有实际的感触;即便吃过亏有时候没到一定程度也不敢说,毕竟还有决策的成分在里面。
存储除了极高的稳定性以外还能有一些其他的用法/特性:服务器异常可以通过重新挂在对应的LUN即可实现快速恢复数据;需要完整的测试数据,存储容量足够的情况下,可以直接克隆/快照完成一次不完全恢复即可;基于存储的备份与恢复效率也更高等等。
因此我们在一些重要的业务场景/系统会看到一种“奇怪”的数据库架构,数据分散在各个服务器上的存储映射盘中,因为数据库软件与存储对接,备份直接通过存储进行全量+增量操作,任何服务器异常均可通过重新挂载快速恢复。这是一种对稳定性的极端追求。
感觉说了这么多似乎是在给集中存储洗地,但是其高昂的价格确实不适合一些场景。但是我想说的是,单纯讨论一个组件的爆炸半径其实并不那么合理,还需要考虑这个爆炸是不是那么容易发生,毕竟一颗核弹的杀伤力用远火洗地也能实现。

3 数据库

3.1 多模VS专用

数据库是多模解决大多数问题,还是用专用数据库分开去解决特定的问题,在我之前的文章里面也说过很多次。除了应用架构:比如是通过数据库还是应用来处理管各类理数据;技术成熟度:一般情况下专用数据库的性能与功能性强于大多数多模数据库。在某些情况下也有考虑爆炸半径的原因,每种专用数据库承载其擅长的数据有效发挥其效能,一种数据库异常影响部分场景或者仅影响速度;某些用于缓存和全文搜索的数据库还能在其他关联数据库异常时提供应急接管和额外的恢复选择等等。
但是我认为,无论如何选择,数据库的高可用都需要做好,这样才能尽可能的降低任何故障带来的影响。另一方面应用也需要做好击穿/绕行的机制,慢和不可用之间还是有很大的差距的。数据治理也必须做好,不同类型的数据库之间是肯定存在重复数据的,做好这些数据的维护是十分重要的。

3.2 集中式VS分布式

还是一个老生常谈的话题,其实和前面讨论硬件内容也是有一定关联性的,只不过并不是所有的集中式数据库都会使用存储设备来存放数据。使用分布式数据库一方面是解决“单机性能不足”的问题,另一方面也确实可以降低甚至消除单点故障对数据库整体带来的影响。就分布式数据库本身而言影响最大主要有两方面,一个是网络,众所周知相较于CPU-内存-磁盘的交互网络是不稳定的,这种不稳定主要体现在带宽、延迟波动和丢包上,比起核弹的爆炸半径来说,这更像是游击战的袭扰,小而多,某些情况下也足够致命;第二个方面其实是加在网络上的数据的不合理设计或使用,即被迫主要通过网络来筛选数据而不是内存,这将使本就网络不稳定的问题被进一步放大甚至完全崩溃。因为CAP理论,分布式数据库为了保证足够的性能并确保可用性是需要牺牲一定的一致性的,如果设计不合理这个一致性的问题也会被放大并造成巨大影响,不能出现单点故障了,似乎没影响但是数据没对了。分布式数据库需要控制小爆炸带来的累加大范围影响。
我认为,集中式与分布式数据库无好坏之分,二者有各自的优点与应用场景,只不过在我看来随着硬件水平和数据库的巨大发展,很多情况下是可以不一定必需使用分布式数据库解决问题了,举个例子,现在OCI上对接基于SuperCluster和Nvidia GPU构建的AI算力集群的Exadata@Cloud据说是可以处理ZB级数据了,AI时代对数据的高速检索是很重要的。本小节跑远了,补充一句两只手比一只手劲大,为什么人没长出来十个八个手,大脑协调会出问题。

4 公有云VS非公有云

这里说到云,又得划分公有云、私有云、虚拟化、裸金属等等概念,这里按照章节题目定义一下私有化部署的统称为非公有云云。
在一定程度下公有云确实可以简化IT建设的流程,使得业务可以更快上线的同时减少在维护层面的投入,但在一定规模后期费用也会存在不透明的问题。从最近一段时间全球各大公有云的故障来看,其中多次故障的爆炸半径都是核弹级的,不乏整个公有云不可用的出现。不得不说把一切基础架构都交出去,还得看自身的投入与决策,有时候还需要考虑政策与法律因素。
非公有云确实需要投入更多基础架构建设的投入,对技术和人的挑战更大,但是却能自己把控一些关键内容,有时候不那么统一的底座反而能降低一些爆炸半径。但是如果技术架构的复杂度超过了自身把控能力,那么仍会比较危险。
从数据库层面来看,会看到一些严重依赖公有云底座的产品私有化部署时需要一并部署公有云底座,同公有云环境有足够体量不同,在私有化部署公有云底座中经常会发现其本身会消耗较多资源,变相带来一些资源浪费。

总结

老词新用,IT架构需要控制故障的爆炸半径。
老规矩,知道写了些啥。

相关文章:

数据库管理-第295期 IT架构与爆炸半径(20250221)

数据库管理295期 2025-02-21 数据库管理-第295期 架构与爆炸半径(20250221)1 术语新解2 硬件:存储VS本地盘3 数据库3.1 多模VS专用3.2 集中式VS分布式 4 公有云VS非公有云总结 数据库管理-第295期 架构与爆炸半径(20250221&#x…...

基于WOA鲸鱼优化的BiLSTM双向长短期记忆网络序列预测算法matlab仿真,对比BiLSTM和LSTM

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a/matlab2024b 3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频…...

DeepSeek私有化专家 | 云轴科技ZStack入选IDC中国生成式AI市场概览

DeepSeek 火爆全球AI生态圈,并引发企业用户大量私有化部署需求。 国际数据公司IDC近日发文《DeepSeek爆火的背后,大模型/生成式AI市场生态潜在影响引人关注》,认为中国市场DeepSeekAI模型的推出在大模型/生成式AI市场上引起了轰动&#xff0c…...

linux下软件安装、查找、卸载

目录 常见安装方式有三种: 1.源码安装。 2.rpm安装方式。 3.yum/apt工具级别安装。 对于前两种安装方式,因为软件可能有依赖关系(安装的软件依赖于某些库,而这些库又依赖于某些库,这些都需要手动安装)…...

npm在install时提示要安装python问题处理

使用npm\yarn\pnpm下载以来的时候,一直提示python异常,有的项目安装了python之后,下载依赖还是异常 而且旧版本项目使用python2,新的使用Python3…很烦 解决方案1:cnpm 安装教程: npm安装cnpm,解决node12\…...

Nginx代理ElasticSearch

1、将ES的账号:密码通过Base64加密 假设账号密码如下: 账号:elastic密码:elastichuayunworld.com echo -n elastic:elastichuayunworld.com | base64 ZWxhc3RpYzplbGFzdGljQGh1YXl1bndvcmxkLmNvbQ2、在 Nginx 配置中传递认证信息 locatio…...

如何将MySQL数据库迁移至阿里云

将 MySQL 数据库迁移至阿里云可以通过几种不同的方法,具体选择哪种方式取决于你的数据库大小、数据复杂性以及对迁移速度的需求。阿里云提供了多种迁移工具和服务,本文将为你介绍几种常见的方法。 方法一:使用 阿里云数据库迁移服务 (DTS) 阿…...

CSS基础(盒子模型的组成、内容溢出、隐藏元素的方式、样式的继承、元素的默认样式、布局技巧、元素之间的空白问题、行内块元素的幽灵空白问题)

文章目录 1. 盒子模型的组成1.1 内容区1.2 默认宽度1.3 内边距1.3.1 内边距属性1.3.2 复合属性1.3.3 单位1.3.4 注意事项 1.4 边框1.4.1 边框属性1.4.2 复合属性1.4.3 单方向边框1.4.4 边框样式1.4.5 注意事项 1.5 外边距1.5.1 外边距属性1.5.2 复合属性1.5.3 注意事项 1.6 外边…...

【第二节】C++设计模式(创建型模式)-抽象工厂模式

目录 引言 一、抽象工厂模式概述 二、抽象工厂模式的应用 三、抽象工厂模式的适用场景 四、抽象工厂模式的优缺点 五、总结 引言 抽象工厂设计模式是一种创建型设计模式,旨在解决一系列相互依赖对象的创建问题。它与工厂方法模式密切相关,但在应用…...

[Linux高性能服务器编程] 多线程编程

本文初发于 “天目中云的小站”,同步转载于此。’ 线程与进程 线程是轻量级的进程, 想要理解线程的关键, 首先要理解线程和进程之间的区别. 一个进程在创建之初其实就可以看作是一个主线程, 其创建出的线程其实和其本质无很大差别, 其实就多了一个线程共享资源罢了…...

【开关电源】汽车前端电源保护电路设计

前言: 汽车电池端子在启动或者保养过程中被反接,如果对这些故障不能及时处理,就可能导致ECU或供电设备被损坏;此外在供电过程中电压也存在不稳定的情况。在EMC测试中ISO16750和ISO7637也会有负电压的情况。 肖特基二极管和 P 沟道…...

网络运维学习笔记 017 HCIA-Datacom综合实验01

文章目录 综合实验1实验需求总部特性 分支8分支9 配置一、 基本配置(IP二层VLAN链路聚合)ACC_SWSW-S1SW-S2SW-Ser1SW-CoreSW8SW9DHCPISPGW 二、 单臂路由GW 三、 vlanifSW8SW9 四、 OSPFSW8SW9GW 五、 DHCPDHCPGW 六、 NAT缺省路由GW 七、 HTTPGW 综合实…...

Leetcode350:两个数组的交集 II

题目描述: 给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输…...

Ubuntu20.04.2安装Vmware tools

软件版本:Vmware Workstation Pro 17.6.2 操作系统镜像文件:ubuntu-20.04.2-desktop-amd64 方式1:用iso镜像安装 没用这种方法,太麻烦 方式2:用apt安装Open VM Tools 如果你使用的是较新的Ubuntu版本(如…...

C++单例模板类,继承及使用

前言: 单例模式可以参考如下文章: 我的设计模式,单例模式的设计和实现 c 单例模式的模板类 - 川野散人 - 博客园 1.为什么需要单例模板类? 场景问题: 如果需要100个单例类就需要设计100个单例模式,代…...

JavaScript函数-函数的返回值

在JavaScript编程语言中,函数是构建复杂逻辑和实现代码复用的关键组件。而函数的返回值则是这些功能的重要组成部分,它允许我们将数据从一个函数传递到另一个地方,从而使得函数更加通用和灵活。本文将深入探讨JavaScript函数返回值的各种特性…...

nodejs:vue 3 + vite 作为前端,将 html 填入<iframe>,在线查询英汉词典

向 doubao.com/chat/ 提问: node.js js-mdict 作为后端,vue 3 vite 作为前端,编写在线查询英汉词典 后端部分(express js-mdict ) 详见上一篇:nodejs:express js-mdict 作为后端&#xff…...

现场可以通过手机或者pad实时拍照上传到大屏幕的照片墙现场大屏电子照片墙功能

现场可以通过手机或者pad实时拍照上传到大屏幕的照片墙现场大屏电子照片墙功能,每个人都可以通过手机实时拍照上传到大屏幕上,同时还可以发布留言内容,屏幕上会同步滚动播放展示所有人的照片和留言。相比校传统的照片直播功能更加灵活方便,而…...

《FFTformer:基于频域的高效Transformer用于高质量图像去模糊》

paper:2211.12250 GitHub:kkkls/FFTformer: [CVPR 2023] Effcient Frequence Domain-based Transformer for High-Quality Image Deblurring CVPR 2023 目录 摘要 1、介绍 2、相关工作 2.1 基于深度CNN的图像去模糊方法 2.2 Transformer及其在图…...

ChātGPT赋能的“SolidWorks工具箱”:重塑3D设计效率新标杆

ChātGPT精心打造的“SolidWorks工具箱”正逐步成为3D设计领域中的一颗璀璨新星,其集高效、便捷与创新于一身,为用户带来了前所未有的设计体验。以下是对这一革命性工具箱的深度剖析与美化呈现: 一、核心功能:重塑设计流程&#x…...

Pytorch使用手册-音频数据增强(专题二十)

音频数据增强 torchaudio 提供了多种方式来增强音频数据。 在本教程中,我们将介绍一种应用效果、滤波器、RIR(房间脉冲响应)和编解码器的方法。 最后,我们将从干净的语音合成带噪声的电话语音。 import torch import torchaudio import torchaudio.functional as Fprin…...

基于CNN的FashionMNIST数据集识别3——模型验证

源码 import torch import torch.utils.data as Data from torchvision import transforms from torchvision.datasets import FashionMNIST from model import LeNetdef test_data_process():test_data FashionMNIST(root./data,trainFalse,transformtransforms.Compose([tr…...

Python爬虫处理网页中的动态内容

文章目录 前言一、Python环境搭建1.Python安装2.选择Python开发环境 二、Python爬虫处理网页中的动态内容1. 使用 Selenium 库2. 使用 Pyppeteer 库3. 分析 API 请求 前言 在网页中,动态内容通常是指那些通过 JavaScript 在页面加载后动态生成或更新的内容&#xf…...

洛谷P1135多题解

解法1&#xff1a;BFS&#xff0c;有n个节点每个节点最多被访问一次&#xff0c;所以BFS时间复杂度为O(n)。注意ab的特判。 #include<iostream> #include<cstring> #include<queue> using namespace std; const int N 205; int n, a, b; int k[N], s[N]; b…...

用AI写游戏3——deepseek实现kotlin android studio greedy snake game 贪吃蛇游戏

项目下载 https://download.csdn.net/download/AnalogElectronic/90421306 项目结构 就是通过android studio 建空项目&#xff0c;改下MainActivity.kt的内容就完事了 ctrlshiftalts 看项目结构如下 核心代码 MainActivity.kt package com.example.snakegame1// MainA…...

Python 错误和异常处理

目录 try-except块 例子&#xff1a; 输出&#xff1a; 捕获多种异常 例子&#xff1a; else和finally 例子&#xff1a; 输出&#xff1a; 自定义异常 例子&#xff1a; 输出&#xff1a; 好的&#xff0c;简单来说&#xff0c;错误和异常处理是编程中用来处理程序…...

论文解读 | AAAI'25 Cobra:多模态扩展的大型语言模型,以实现高效推理

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 点击 阅读原文 观看作者讲解回放&#xff01; 个人信息 作者&#xff1a;赵晗&#xff0c;浙江大学-西湖大学联合培养博士生 内容简介 近年来&#xff0c;在各个领域应用多模态大语言模型&#xff08;MLLMs&…...

DPVS-3: 双臂负载均衡测试

测试拓扑 双臂模式&#xff0c; 使用两个网卡&#xff0c;一个对外&#xff0c;一个对内。 Client host是物理机&#xff0c; RS host都是虚拟机。 LB host是物理机&#xff0c;两个CX5网卡分别在两个子网。 配置文件 用dpvs.conf.sample作为双臂配置文件&#xff0c;其中…...

Qt 中集成mqtt协议

一&#xff0c;引入qmqtt 库 我是将整个头文件/源文件都添加到了工程中进行编译&#xff0c;这样 跨平台时 方便&#xff0c;直接编译就行了。 原始仓库路径&#xff1a;https://github.com/emqx/qmqtt/tree/master 二&#xff0c;使用 声明一个单例类&#xff0c;将订阅到…...

C语言图结构学习笔记

1. 图的定义 图&#xff08;Graph&#xff09;是一种数据结构&#xff0c;由顶点&#xff08;Vertex&#xff09;和边&#xff08;Edge&#xff09;组成&#xff0c;用于表示对象及其相互关系。图可以是有向图&#xff08;Directed Graph&#xff09;或无向图&#xff08;Undi…...