精华内容
下载资源
问答
  • 高可用架构

    千次阅读 2017-12-27 15:08:44
    高可用架构 一、什么是高可用 高可用性指的是通过尽量缩短因日常维护操作和突发的系统崩溃所导致的停机时间,以提高系统和应用的可用性。 二、导致系统不可用的因素 服务器磁盘空间耗尽 ,备份或者各种查询日志...

                                           高可用架构

    一、什么是高可用

    • 高可用性指的是通过尽量缩短因日常维护操作和突发的系统崩溃所导致的停机时间,以提高系统和应用的可用性。

    二、导致系统不可用的因素

    • 服务器磁盘空间耗尽 ,备份或者各种查询日志突增导致的储存空间被沾满。mysql由于无法记录二进制日志,无法处理新的请求而产生的系统不可用的故障。
    • 性能糟糕的sql
    • 表结构和索引没有优化
    • 主从数据不一致
    • 人为的操作失误

    三、解决方案

    • 建立完善的监控及报警系统

    • 对备份数据进行恢复测试

    • 正确配置数据库环境

    • 对不需要数据进行归档和清理

    • 避免单点故障(单点故障是指在一个系统中提供相同功能的组件只有一个,如果这个组件失效了,就会影响整个系统功能的正常使用,组成应用系统的各个组件都可能成为单点。)

    四、如何避免mysql单点故障

    • 利用sun共享储存drdb磁盘复制解决mysql单点故障。

    • 利用集群或dnb集群来解决mysql单点故障。

    • 利用mysql主从复制来解决mysql单点故障。

    • 主从切换及故障转移

    展开全文
  • 高可用架构 第1卷-高可用架构社区。
  • 计算高可用架构

    2020-04-05 20:40:45
    计算高可用架构设计的复杂度主要体现在任务管理方面,计算高可用架构设计的关键点有如下两点,第一哪些服务器可以执行任务,第二任务如何重新执行。 常见的架构模式主要有主备,主从,对称集群和非对称集群。 主备...

    计算高可用的本质是通过冗余来规避部分硬件故障的风险,所以计算高可用的设计思想很简单,通过增加更多的服务器来达到计算高可用。

    计算高可用架构设计的复杂度主要体现在任务管理方面,计算高可用架构设计的关键点有如下两点,第一哪些服务器可以执行任务,第二任务如何重新执行。

    常见的架构模式主要有主备,主从,对称集群和非对称集群。

    主备架构是计算高可用最简单的架构,和存储高可用的主备复制架构类似,但是要更简单一些,因为计算高可用的主备架构,无需数据复制。

    在主从架构中,计算高可用架构中的从机也是要执行任务,任务分配器需要将任务进行分类,确定哪些任务可以发送给主机执行,哪些任务可以发送给从机执行。

    在对称集群架构中,对称集群中的每台服务器的角色都是一样的,都可以执行所有任务,对称集群,更通俗的叫法是负载均衡集群,或者负载均衡集群,设计的关键点有两点,任务分配器需要检测服务器的状态,任务分配器需要选取分配策略。

    在非对称集群架构中,非对称集群中不同服务器的角色是不一样的,不同角色的服务器承担不同的职责。非对称集群相比与负载均衡集群设计复杂度主要体现在两个方面,第一是任务分配策略更加复杂,需要将任务划分为不同类型并分配给不同角色的集群节点,第二是角色分配策略实现比较复杂。

    展开全文
  • 高可用架构设计

    千次阅读 2020-02-25 17:07:53
    随着互联网技术在工业界的广泛使用,各大互联网公司在各自的业务领域内,沉淀了成熟的高可用架构方案。那么究竟什么是高可用?高可用架构该如何设计呢? 度量 首先需要了解下什么是可用性以及如何度量可用性。...

    设计高可用的软件架构,是每个互联网软件开发工程师的追求。尤其对于在线交易系统、在线广告系统而言,服务的可用性会直接影响商业变现。随着互联网技术在工业界的广泛使用,各大互联网公司在各自的业务领域内,沉淀了成熟的高可用架构方案。那么究竟什么是高可用?高可用架构该如何设计呢?

     

    度量

    首先需要了解下什么是可用性以及如何度量可用性。对于一个交互式IT产品,是否可用是看用户能否用该产品完成他的任务。可用性就是在某个考察时间内,系统能够正常运行的概率或时间占有率的期望值。对于可用性等级,业内一般用n个9来描述,如下所示。

    服务处于不可用状态的时间称为故障时间。可用性每提高一个等级,故障时间就要降一个数量级。从天到时到分,相对来说比较容易实现。再往后每提高一个等级,将付出成百上千倍的努力。大型网站服务通常至少做个4个9,做到5个9及以上就比较困难了。不仅要解决技术挑战,还要面对极大的成本压力。对于网站核心服务,会尽可能做到5个9,而非核心服务4个9,甚至3个9也可以接受。做技术决策时必须考虑经济账。 

     

    方法

    那如何做到高可用呢?方法很简单:冗余。通俗讲,就是双保险机制。背后的理论基础是概率论。假设某个服务的可用性是99%(故障率1%),那么两个服务的可用性就是1-0.01*0.01=99.99%。可以看到,冗余对可用性的提升是指数级的。再冗余一个服务,可用性就达到6个9了。哇!提高可用性等级似乎好简单啊!?

     

    限制

    真这么简单吗?当然不是。别忘了CAP定理!

    CAP是Consistency(一致性)、Availability(可用性)、Partition-tolerance(分区容错性)三个词的首字母缩写。CAP定理是加州大学的计算机科学家 Eric Brewer 提出的:CAP三者不可兼得,提高其中任意两者的同时,必然要牺牲第三者。(延伸阅读《分布式系统缘起及理论》

    用冗余提升可用性,本质上是在追求AP。冗余越多,解决C的成本就越高。其中最大的成本是时间成本,时间成本是技术上不可接受的。程序员提起高可用系统,经常会再加一个词『高并发』。高并发就体现了技术对时间的追求。正是这些不可兼得的矛盾,才让架构师们在面对不同业务场景时,需要做不同的技术取舍。

     

    设计

    冗余的架构设计有三种模式:双主(Master & Master)、主备(Master & Co-Master)和主从(Master & Slave)。

    双主模式中,两台服务是平等关系,同时对外提供读写服务,客户端任选一台即可。双主模式是可用性最好的,但是这种架构的一致性处理比较困难,需要两台服务进行双向数据同步。一旦它们之间的通信断开,就形成了网络分区,这种分区会带来脑裂(brain-split)问题,并且系统对此无解,必须人工介入。所以在架构设计时极少选择双主模式。

    主备模式中,两台服务不再是平等关系。主服务承担所有的读写请求,备服务只有在主服务不可用时才取而代之。主备服务之间虽然也存在两个方向的数据同步,但跟双主模式不同,它们不会同时发生。正常情况下只存在主向备同步数据。主不可用的时间段内,数据会写到备服务。当主恢复后,才需要由备向主同步数据。在此期间,会双写数据到主备节点,防止主同时再向备同步数据。主备架构比较容易实现,缺点是备服务在绝大部分时间是一种资源浪费。一般数据库系统在部署时会考虑主备架构。

    主从模式其实不是主要解决高可用问题的,更多的是为了实现读写分离,来解决高并发问题。实际场景中通常不是一主一从,而是一主多从架构,因为大部分应用都是的读多写少。主节点处理写请求,从节点处理读请求。由于存在多从,读服务的可用性远高于写服务。另外,写服务会存在单点故障。这个问题可以通过集群动态选主来解决:当主节点不可用时,集群自动选出一台新的主节点。基于zookeeper,动态选主很容易实现(延伸阅读《Zookeeper理论&应用&实操》)。不过动态选主在MySQL集群架构中不会使用,原因是主从同步数据必须在部署时配置好,切换了主节点还是需要运维人工介入修改配置并重启服务。

     

    案例

    上面是抽象的架构设计,实际场景的架构要更复杂,会组合使用主备和主从架构。下图是国内某互联网公司MySQL集群的简化版架构方案。

    DBProxy位于应用与数据库之间,屏蔽底层数据库架构对应用造成的影响,为应用提供透明的高性能代理服务。DBProxy中会实现读写分离、失败重连、负载均衡、安全认证、连接池、表路由、表Hash等功能。

    多个MySQL集群是为了实现分库。不同集群的数据是不同的,dbproxy会根据路由规则,找到存储在不同分库上的表。

    单个MySQL集群中组合使用了主备和主从架构。使用主备是为了解决前面提到的写数据单点故障问题。正常情况下,写主读从,主同时向备从节点同步数据。当主不可用时,读写请求全部落在备节点上,备节点没有从节点。当主恢复后,备向主同步数据,在此期间,主备会双写数据。同步完数据后,再恢复到正常模式。为避免主备在双写数据生成相同的自增ID,会让主备ID增长步长设为2,主库奇数增长(1,3,5,7,...),备库偶数增长(2,4,6,8,...)。

     

    延伸阅读

     

     

    展开全文
  • MySQL高可用架构

    千次阅读 2017-09-18 23:03:09
    MySQL学习笔记一,高可用架构对于一个企业来讲,设计一个高可用的架构非常重要,包括前端的高可用和后端数据库的高可用。企业业务每暂停一分钟,可能会造成大量的金钱流失,因此只有在整个架构的设计上足够的高可用...

    MySQL学习笔记


    一,高可用架构

    对于一个企业来讲,设计一个高可用的架构非常重要,包括前端的高可用和后端数据库的高可用。企业业务每暂停一分钟,可能会造成大量的金钱流失,因此只有在整个架构的设计上足够的高可用,才可以保证应用程序对外提供不间断的服务,进而把因软件/硬件/人为造成的故障对业务的影响降低到最小程度,把损失降低到最低。

    MySQL数据库高可用方面的两个主流架构:MMM和MHA。


    二,MMM架构

    MMM(Master-Master replication manager for MySQL)是一套支持双主故障切换和双主日常管理的脚本程序。MMM使用Perl语言开发,主要用来监控和管理MySQL Master-Master(双主)复制,虽然叫做双主复制,但是业务上同一时刻只允许对一个主进行写入,另一台备选主上提供部分读服务,以加速在主猪切换时备选主的预热,可以说MMM这套脚本程序一方面实现了故障切换的功能,另一方面其内部附加的工具脚本也可以实现多个slaves的read负载均衡。

    这里写图片描述

    MMM提供了自动和手动两种方式移除一组服务器中复制延迟较高的服务器的虚拟IP,同时它还可以备份数据、实现两节点之间的数据同步等。

    由于MMM无法完全地保证数据一致性,所以MMM适用于对数据的一致性要求不是很高,但是又想最大程度的保证业务可用性的场景,对于那么对数据的一致性要求很高的业务,非常不建议采用MMM这种高可用架构。


    三,MHA架构

    MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,是一套优秀的作为MySQL高可用环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。

    它由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)。MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台slave上。MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master。整个故障转移过程对应用程序是完全透明的。

    在MHA自动故障切换过程中,MHA视图从宕掉的主服务器上保存二进制日志,最大程度低保证数据的不丢失,但这并不总是可行的。例如,如果主服务器硬件故障或无法通过ssh访问,MHA没法保存二进制日志,只进行故障转移而丢失了最新数据。使用MySQL5.5的半同步复制,可以大大降低数据丢失的风险。MHA可以与半同步复制结合起来。如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此它们彼此保持一致性。

    目前MHA主要支持一主多从的架构,搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另一台充当从库,因为至少需要三台数据库,出于机器成本考虑,淘宝也在此基础上进行了改造,目前淘宝TMHA已经支持一主一从。

    MHA Manager管理多组主从复制,如图。
    这里写图片描述

    MHA的工作原理总结为以下几条:
    1,从宕机奔溃的master保存二进制日志事件(binlog events);
    2,识别含有最新更新的slave;
    3,应用差异的中继日志(relay log)到其他slave;
    4,应用从master保存的二进制日志事件(binlog events);
    5,提升一个slave为新的master;
    6,使其他的slave连接性的master进行复制。


    四,参考资料

    《深入浅出MySQL 数据库开发、优化与管理维护》

    展开全文
  • 高可用架构 第1卷 02

    2018-05-30 06:35:15
    高可用架构 清晰带目录 第二个压缩包,共2个,需要全部下载才能解压缩
  • MySQL高可用架构设计最佳实践,详细介绍二进制日志及其对复制的影响、GTID的复制、MMM、MHA等等 详细介绍二进制日志及其对复制的影响、GTID的复制、MMM、MHA等等。 目录 01MySQL复制功能概述 02MySQL二进制日志 ...
  • kubernetes高可用架构

    千次阅读 2018-05-22 21:09:38
    在之前的实验中,kubernetes集群都是一台master和两台node组成的小集群,在实际的生产环境中需要考虑到集群的高可用。...官方的master节点高可用架构 图中可以看出,用户通过kubectl发送命令经过LB进...
  • MySQL集群高可用架构

    千次阅读 2019-05-21 11:18:52
    MySQL集群高可用架构 前言 高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用。对于一个系统而言,可能包含很多模块,比如前端应用,缓存,数据库,搜索,消息队列等,每个模块都...
  • MySql 高可用架构

    2018-02-05 11:28:41
    高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用。对于一个系统而言,可能包含很多模块,比如前端应用,缓存,数据库,搜索,消息队列等,每个模块都需要做到高可用,才能保证...
  • Haproxy高可用架构

    千次阅读 2018-08-13 14:28:22
    高可用架构由两个核心部分组成,一个是心跳检测,判断服务器是否正常运行;一个是资源转移,用来将公共资源在正常服务器和故障服务器之间搬动。两个结合起来使用,可以实现对高可用架构的自动管理。 整个运行模式...
  • 高可用架构 卷一 卷二 卷三 高清 完整版 pdf格式
  • 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。 假设系统一直能够提供服务,我们说系统的可用性是100%。如果系统每运行100个时间单位...
  • MySQL高可用架构之MHA

    2017-12-15 09:14:02
    MySQL高可用架构之MHAMySQL高可用架构之MHA
  • 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。假设系统一直能够提供服务,我们说...
  • 本文来自美团蔡金龙老师的分享,介绍了最近几年美团点评MySQL数据库高可用架构的演进过程,以及我们在开源技术基础上做的一些创新。同时,也和业界其它方案进行综合对比,了解业界在高可用方面的进展,和未来我们的...
  • 01、高可用架构知识原理篇 02、高可用架构设计之总体架构篇 03、高可用架构设计之硬件篇 04、高可用架构设计之DNS篇 05、高可用架构设计之CDN篇 06、高可用架构设计之接入层篇 07、高可用架构设计之业务逻辑层...
  • 第一课:高可用架构知识原理篇 什么架构的高可用? 架构高可用的重要性? 架构高可用的常用手段都有哪些? 架构高可用评价维度是什么? 架构高可用的考核如何分级? 架构高可用的...
  • 高可用架构·(第1期)Docker实战.pdf+高可用架构·(第2期)不一样的数据库.pdf+高可用架构·(第3期)中国初创故事.pdf+高可用架构·(第4期)硅谷篇.pdf+高可用架构·(第5期)Learning as we Go.pdf+高可用架构...
  • 数据库高可用架构了解一下

    千次阅读 2019-11-15 15:00:00
    是时候关注我们一波了看多了应用服务的高可用架构,我们来看看数据库的高可用吧。数据存储高可用的方案本质都是通过将数据复制到多个存储设备,通过数据冗余的方式来实现高可用。常见...
  • 集群高可用架构整理

    2017-07-20 14:01:27
    在大型系统或是对稳定性要求较高的项目中,集群高可用架构是必不可少的,这里整理一些平时用到过的集群/高可用技术,不断更新中。。。 二种最基本的集群模型: M-S 型集群: M-S 型的集群一般用于高可用架构...
  • Redis高可用架构

    2015-04-21 00:25:49
    Redis高可用架构 博客分类:  redis redis  Redis的高可用方案目前主要尝试过4种方式: 1)Redis Master-Slave + Keepalive + VIP。 这是很经典的db架构,也可以用与mysql的主从切换。 ...
  • Yarn HA高可用架构

    2018-11-26 15:17:21
    在生产中,一般会部署HA的高可用架构。这样,在active RM挂掉后,standby RM会切换为active状态,并对外提供服务。 架构设计   yarn HA架构如图所示:   RM:   在ZooKeeper上会有一个/yarn-l...
  • MySQL-高可用架构探索

    千次阅读 2020-02-01 10:20:14
    文章目录官方文档前置学习 官方文档 https://dev.mysql.com/doc/ 如果英文不好的话,可以参考 searchdoc 翻译的中文版本 ... 前置学习 要掌握高可用架构,必须先了解主从架...
  • 架构设计(8)—高可用架构设计

    千次阅读 2019-01-14 17:58:37
    高可用架构设计总结: 前言:海恩法则和墨菲定律 海恩法则 · 事故的发生是量的积累的结果。 · 再好的技术、再完美的规章 , 在实际操作层面也无法取代人自身的素质和责任心 。 墨菲定律 · 任何事情都没有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,029
精华内容 11,611
关键字:

高可用架构