首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
软件与程序人生
›
云原生
›
2024了尚有人不知道MySQL的高可用三大架构??? ...
返回列表
发新帖
2024了尚有人不知道MySQL的高可用三大架构???
[复制链接]
发表于
4 小时前
|
显示全部楼层
|
阅读模式
高可用界说
什么是高可用?
高可用:
高可用是体系所能提供无端障服务的一种本领。
可用本领的判定标准:
一样平常来说,体系至少要到达 4 个 9999,否则用户体验会非常差。
4 个 9 对于生产环境影响还比力大,5 个 9 的要求又太高,于是一些云服务厂商提出来 99.995%
高可用的架构计划
怎么实现高可用?
冗余 + 故障转移
体系要到达高可用,肯定要做好软硬件的冗余,消除单点故障(SPOF)。
冗余
是高可用的根本,一样平常,体系投入的硬件资源越多,冗余也就越多,体系可用
性也就越高。
故障转移处置惩罚
就是 在最短的时间内发现故障,然后把业务切换到冗余的资源上。
高可用架构计划的范例:
无状态服务高可用计划
数据库
高可用架构计划
无状态服务高可用计划
无状态的服务高可用计划非常简单,返现标题直接转移就行,以致可以通过
负载
均衡服务,当发现有标题,直接提出故障
服务器
。
如:NGINX
上图中,当第一台 NGINX
服务器
出现标题,导致服务不可用,Load Balance
负载
均衡服务发现后,就直接把他剔除了。
二对上层用户来说,他只会在几秒内的访问出现标题,之后就 立刻规复了。险些没什么感觉。
数据库
高可用的三大架构
以是,体系高可用计划,难点在于
数据库
的高可用计划:
数据恒久化在数据库中,是有状态的服务
数据库的容量比力大,Failover 的时间比无状态服务的时间多;
一些体系,如金融,银行的数据库,会要求数据完全不能丢失,这有增长了高可用实现的难度。
从架构的角度来看,数据库的高可用也是业务的高可用,我们必要从全流程出发。
以下三种数据库的高可用不但实用于 MySQL 数据库,也实用其他的数据库。
基于数据层的数据库高可用架构
基于数据层的数据库高可用架构,就是基于数据同步技能。
当主
服务器
Master 发生宕机,则故障转移到从服务器 Slave。
常见读写分离架构
如果发生宕机
可以发现,原先的 Slave3 从服务器提升到新主机,然后创建了新的复制拓扑架构,Slave2、Slave3 都连到新的 Master 举行同步。
为了故障转移后对 Service 服务无感知,必要引入 VIP(Virtual IP)捏造 IP 技能,当发生宕机时,VIP 也必要漂移到新的主服务器。
这个架构的难点:
怎样保障数据的划一性;
MySQL 提供 无损复制技能
怎样发现主服务器宕机;
数据库高可用套件
故障转移逻辑的处置惩罚;
基于业务层的数据库高可用架构计划
第二种“基于业务层的数据库高可用架构计划”则
完全基于业务实现
,数据库只是用于
存储
数据。
当一台数据库主服务器不可用,业务直接写另一台数据库主服务器就可以了。
从上图看,Service 服务写入 Master1 主服务失败后,不消等待故障转移步伐主从切换,而是直接把数据库写入 Master 2 主服务器。
如许看似简单高可用架构,但是符合计划的业务不多,
必要满意的条件:
状态可修改
服务写入主键可以举行跳单计划
查询全部依靠主键举行搜刮
举例
:
在电商中的订单服务,其根本逻辑就是
存储
电贸易务中每笔订单信息,焦点逻辑就是往表 Order 中插入数据:
insert into Order (o_orderkey,...) values (...);
这里的 o_orderkey 是主键。为了实现基于业务层的数据库高可用,可以在主键天生过程中到场额外的信息,好比服务器编号,如许订单的主键计划变成了:
pk = 有序 UUID -服务器编号
如许的话 ,当写入服务器编号 1 失败了,业务层就会把订单的主键修改为服务器编号 2 ,如许就实现了业务层的高可用,电商中的这种订单天生方式也称 为 跳单。
对于查询订单业务时,由于主键中包罗服务器编号,那么业务知道该笔订单
存储
在那台服务器,就可以非常快速的陆游到指定的服务器。
融合的高可用架构计划
“基于业务层的数据库高可用架构计划”,固然通过跳单计划,可以实现写入业务的高可用计划。
但是当发生宕机时,服务器编号为 1 的订单无法查询。
融合的高可用架构计划
上图中,将差别编号的订单根据差别的数据库举行存放,好比服务器编号为 1 的订单存放在数据库 DB1 中,服务器编号为 2 的订单存放在数据库 DB2 中。
别的,这里也用到了 MySQL 复制中的
部分复制技能
,即左上角的主服务器仅将 DB1 中的数据同步到右上角的服务器。同理,右上角的主服务器仅将 DB2 中的数据同步到左上角的服务器。下面的两台从服务器稳定,依然从原来的 MySQL 实例中同步数据。
如许做的利益:
在常态环境下,上面两台 MySQL 数据库是双活的,都可以有数据写入,业务
性能
得到极大的提升。
订单数据是完备的,服务器编号为 1 和为 2 的数据都在一个实例上。
紧张的是:如许发生宕机,Service 服务的写入不受影响,写入服务器编号为 1 的订单通过跳单计划写入 DB2
同时,对于订单读取也不会受影响,由于数据都在一个实例上
高可用总结
高可用是体系所能提供无端障服务的一种本领,度量单元是几个 9;
线上体系高可用目的应不低于 99.995%,否则体系频仍宕机,用户体验欠好;
高可用实现根本是:冗余 + 故障转移;
无状态服务的高可用计划较为简单,直接故障转移或剔除就行;
数据库作为有状态的服务,计划比力复杂(冗余通过复制技能实现,故障转移必要对应的高可用套件);
数据库高可用有三大架构计划,请务必牢记这几种计划。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
回复
使用道具
举报
返回列表
浏览过的版块
Postrge-SQL
笑看天下无敌手
+ 我要发帖
×
登录参与点评抽奖,加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表