可用性

分布式原理与算法--概述

旧时模样 提交于 2020-03-06 12:49:47
分布式技术地图 按照业务的架构层次栈,我自底向上按照资源、通信、数据与计算的维度,梳理出了 4 个技术层次:分布式资源池化、分布式通信、分布式数据存储与管理、分布式计算 符合了架构设计的规律,在一定资源上,进行一定通信,通过一定计算,完成一定数据的加工和处理,从而对外提供特定的服务. 因为在分布式架构下需要去解决:协同、调度、追踪高可用,还有部署的问题.那么就可以从横向的技术层次,提炼出分布式协同、分布式调度、分布式追踪与高可用、分布式部署 4 个纵向技术线. 分布式的发展 1单兵模式:单机模式 比如: 所有的模块都在一台机器上,请求处理和数据部署都可能在一台机器上 好处:功能、代码和数据集中,便于维护、管理和执行 缺点:硬件系能提升是有限的,不可能无限的提高cpu等硬件性能.性价比也需要考虑. 除此之外,还会有单点失效的问题,一台机崩溃,所有的服务都不能用 2游击队模式:数据并行或数据分布式 在单兵模式下,进行数据的拆分,执行的步骤: 一 将应用与数据分离,分别部署到不同的服务器上 二 把数据按照系统进行拆分 拆分以后系统就开始变的稍微复杂一些,需要相应的解决一些问题: 1要考虑负载均衡的问题,让每台机器的处理都比较均衡 2请求量大了,数据库的io就变成了瓶颈,那么就要进行数据库的读写分离,同时要考虑读写数据库的数据同步问题就要 3某些系统的数据库会成为热点服务器

(课)如何在代码层实现可用性战术

隐身守侯 提交于 2020-03-01 15:40:54
  首先了解一下可用性战术的目标:可用性战术将会组织错误发展为故障,或者至少能够把错误的影响 限制在一定范围内,从而是系统恢复成为可能。   上面是使用了一些官方的话来说明了可用性战术的目标,接下来说一下我对可用性战术的目标的理解。    我认为,可用性战术的目标就是尽一切可能让运行的程序不会出错,或者说如果出错也不要让使用者看出来,在这样的基础上,程序通过各种方式,让其自己回归正常运行的轨道。 说完可用性战术的目标,就该谈谈使用怎样的方法去达到这个目的了。 课程中讲到了三个方法,一是错误检测:用来检测故障的某种类型的健康监视;二是自动恢复:   检测到故障时某种类型的恢复;三错误预防:阻止错误演变为故障。然而我把他们这三点归结为一句 话:有则改之,无则加勉。其实,事实也正是如此,有错就要改正,防止酿成大错,无则加勉,就是实时检查自己,是否有出错的地方。 说完理论上的东西,我来结合我的代码谈一下,可用性战术在我代码中的实现,再有就是我代码中目前应该完善的东西。   首先说一下错误检测,这一点不论我们多不专业,我相信多多少少的会在代码中有所涉及,就像我们连接数据库是,常常用到的try和catch就是一种异常捕获,更是一种错误检测机制,通过它我们可以知道数据库是否成功连接,如果没有能成功连接,会给我们抛出异常信息,让我们可以更快的去解决问题,然而课程中讲到的信号/响应还有心跳什么的

为什么CAP不能同时满足?

此生再无相见时 提交于 2020-03-01 07:46:01
写在前面 在当今信息爆炸的时代,单台计算机已经无法负载日益增长的业务发展,虽然也有性能强大的超级计算机,但是这种高端机不仅费用高昂,也不灵活,一般的企业是负担不起的,而且也损失不起,那么将一群廉价的普通计算机组合起来,让它们协同工作就像一台超级计算机一样地对外提供服务,就成了顺其自然的设想,但是这又增加了软件的复杂度,要求开发的软件需要具备横向扩展能力,比如:Kafka、Elasticsearch、Zookeeper等就属于这一类软件,它们天生都是"分布式的",即可以通过添加机器节点来共同地分摊数据存储和负载压力。 为什么需要集群? 分布在不同区域的计算机,彼此之间通过网络建立通信,相互协作作为一个整体对外提供服务,这就是集群,如果我们开发的系统具备这样的能力,那么理论上就具备无限横向扩容的能力,系统的吞吐量就会随着机器数增加而增长,那么未来当系统出现高负载的时候,就可以很好地应对这种情况。 为什么CAP不能同时满足? 通过上面分析,我们知道实现集群,其实就是采用多台计算机来共同承担和负载系统压力,那么就涉及到多台计算机需要参与一起处理数据,为了保证可用性,一般都会在每台计算机上备份一份数据,这样只要有一个节点保持同步状态,那么数据就不会丢失,比如kafka分区多副本、Elasticsearch的副本分片,由于同一数据块及其副本位于不用的机器,随着时间的推移,再加上不可靠的网络通信

ACP大比拼:Eureka VS ZOOKEEPER

半腔热情 提交于 2020-02-29 16:24:23
一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项 。 CAP的证明 上图是我们证明CAP的基本场景,网络中有两个节点N1和N2,可以简单的理解N1和N2分别是两台计算机,他们之间网络可以连通,N1中有一个应用程序A,和一个数据库V,N2也有一个应用程序B2和一个数据库V。现在,A和B是分布式系统的两个部分,V是分布式系统的数据存储的两个子数据库。 在满足一致性的时候,N1和N2中的数据是一样的,V0=V0。在满足可用性的时候,用户不管是请求N1或者N2,都会得到立即响应。在满足分区容错性的情况下,N1和N2有任何一方宕机,或者网络不通的时候,都不会影响N1和N2彼此之间的正常运作。 上图是分布式系统正常运转的流程,用户向N1机器请求数据更新,程序A更新数据库Vo为V1,分布式系统将数据进行同步操作M,将V1同步的N2中V0,使得N2中的数据V0也更新为V1,N2中的数据再响应N2的请求。 这里,可以定义N1和N2的数据库V之间的数据是否一样为一致性;外部对N1和N2的请求响应为可用性;N1和N2之间的网络环境为分区容错性。 这是正常运作的场景,也是理想的场景,然而现实是残酷的,当错误发生的时候,一致性和可用性还有分区容错性,是否能同时满足,还是说要进行取舍呢?

可用性测试的五点思考

醉酒当歌 提交于 2020-02-29 03:53:35
   可用性测试 (Usability testing)是用来评估产品或系统的一种方法,这种方法起源于经典的实验学,可以进行复杂的 大样本测试 ,也可以进行简单的 小样本定性测试 。关于 可用性测试 的具体内容(5W+1H),网上已经有很多资料,包括中文和英文。我想了下,在这里,还是不再写普适性的科普文章,而是决定从近期做的 可用性测试 项目中提取一些个人思考,来与大家分享。   这些思考将分为五个点:(1) 预测试 ;(2)尽可能邀请相关方参与;(3)及时 调整脚本 ;(4)可用性问题的优先级排列;(5)注意用户的正面评价。其中(1)和(2)是可用性测试之前的准备,(3)是 可用性测试 中需要注意的,(4)和(5)是 可用性测试 结束后需要注意的。下面将按 照可用性测试 前、中、后分别进行概述。    可用性测试 之前   预测试   预测试是在正式 可用性测试 之前安排的一场模拟测试。进行 预测试 的主要目的在于确保测试中的硬件和软件是否 正常运行 、 脚本 是否清晰、任务是否可行、访谈的问题设计是否合理和清晰等。如果遇到这些问题,要及时进行调整和修改,这样可以避免一些 无效的测试 或可能出现的错误,从而降低时间成本。    预测试 可以找身边的同事,但这个同事不能是参与产品开发和设计的相关人员,可以考虑行政、后勤等非产品相关人员, 测试和访谈

MySQL on Azure高可用性设计 DRBD - Corosync - Pacemaker - CRM (二)

半城伤御伤魂 提交于 2020-02-28 17:20:37
在上一篇文章中描述了MySQL HA on Azured 设计思路,本篇文章中将描述具体的部署,每个组件的安装和配置。 整体的设计架构如下: 下面将是所有组件的安装配置过程,所有的虚拟机是CentOS 6.5的操作系统。Azure上虚拟机的新建、Vnet的配置等本文就不再涉及。如有需要,请参考张磊同学的博客: http://www.cnblogs.com/threestone 配置Azure Internal Load Balance及添加硬盘 本文采用Xplate CLI部署Internal Load balancer,其地址为静态的10.1.1.200,Distribution模式采用sourceIP。 首先创建ILB: azure service internal-load-balancer add -a 10.1.1.200 -t Subnet-2 mysql-ha mysql-ha-ilb info: service internal-load-balancer add command OK 创建Endpoint和LoadBalanceSet azure vm endpoint create -n mysql -o tcp -t 3306 -r tcp -b mysql-ha-lbs -i mysql-ha-ilb -a sourceIP mysql-ha1 3306

消息中间件的高可用

强颜欢笑 提交于 2020-02-28 09:29:50
RabbitMQ 的高可用性 RabbitMQ 是比较有代表性的,因为是 基于主从 (非分布式)做高可用性的。 RabbitMQ 有三种模式:单机模式、普通集群模式、镜像集群模式。 单机模式: Demo 级别、本地启动,生产不使用该模式 普通集群模式(无高可用性): 在多台机器上启动多个 RabbitMQ 实例,每个机器启动一个实例。 创建的 queue,只会放在其中一个 RabbitMQ 实例上 ,但是每个实例都同步 queue 的元数据(元数据可以认为是 queue 的一些配置信息,通过元数据,可以找到 queue 所在实例)。消费的时候,实际上如果连接到了另外一个实例,那么那个实例会从 queue 所在实例上拉取数据过来。 缺点:普通集群提高吞吐量,没有分布式,不存在高可用性 镜像集群模式(高可用性): 创建的 queue,无论元数据还是 queue 里的消息都会 存在于多个实例上 。每个 RabbitMQ 节点都有 queue 的一个 完整镜像 ,包含 queue 的全部数据。然后每次写消息到 queue 的时候,都会自动把 消息同步 到多个实例的 queue 上。 如何开启镜像集群模式? 在 RabbitMQ后台新增 镜像集群模式的策略, 指定的时候是可以要求数据同步到所有节点的,也可以要求同步到指定数量的节点,再次创建 queue 的时候,应用这个策略

Eureka简介

随声附和 提交于 2020-02-27 01:07:54
Eureka 简介: Eureka 是 Netflix 出品的用于实现服务注册和发现的工具。 Spring Cloud 集成了 Eureka,并提供了开箱即用的支持。其中, Eureka 又可细分为 Eureka Server 和 Eureka Client。 1.基本原理 - 处于不同节点的eureka通过Replicate进行数据同步 - Application Service为服务提供者 - Application Client为服务消费者 - Make Remote Call完成一次服务调用 服务启动后向Eureka注册,Eureka Server会将注册信息向其他Eureka Server进行同步,当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后会将服务提供者地址缓存在本地,下次再调用时,则直接从本地缓存中取,完成一次调用。 当服务注册中心Eureka Server检测到服务提供者因为宕机、网络原因不可用时,则在服务注册中心将服务置为 DOWN 状态,并把当前服务提供者状态向订阅者发布,订阅过的服务消费者更新本地缓存。 服务提供者在启动后,周期性(默认30秒)向Eureka Server发送心跳,以证明当前服务是可用状态。Eureka Server在一定的时间(默认90秒)未收到客户端的心跳,则认为服务宕机,注销该实例。 2

服务器的性能这些可以体现

帅比萌擦擦* 提交于 2020-02-26 22:18:55
一、硬盘类型服务器中的固态硬盘硬盘驱动器提供更高的磁盘读/写速度,也称为输入/输出(I/O)性能。具有读取和写入磁盘的服务器速度更快,但定价明显高于同等存储容量的硬盘。 二、硬盘存储空间 服务器的硬盘存储是本地数据库大小和文件的本地存储的限制因素。配置RAID磁盘阵列可有效增加数据可靠性,添加读取/写入(I/O)功能,RAID需要两个以上单独的存储卷。存储还可以采取网络存储的形式,如(网络连接存储)或SAN(存储区域网络)。 三、内存RAM(随机存取存储器) 服务器内存的大小会影响服务器处理指令的速度。处理更复杂和更多种指令时,需求更高的内存。例如,动态的电子商务网站、数据库服务器等,需求对数据库运行各种查询和检索,更大的内存将使您取得更高的性能优势 四、CPU(内存处理器) 独立服务器的CPU执行者如服务网页、运行数据库查询或处理计算机命令等指令。CPU和内核的数量会影响可执行多少个并发指令。CPU架构和功能也影响执行指令的速度,特别是在围绕这些功能设计程序的网站或应用。 五、宽带 带宽数据传输限制,指的是可以并发到您的服务器的数据量。服务器带宽价格较高,一般供给国际带宽。像并发视频流、游戏和大数据处理等工作任务都需要高带宽。 六、可用性 服务器的高可用性(HA)可能指网络和电源可用性,这反映在托管服务提供商的维护正常运行时间的实践记载以及其(服务级别协议)中

网络高可用衡量指标99 999 9999 99999 99% 99.9% 99.99% 99.999

混江龙づ霸主 提交于 2020-02-26 05:48:17
网站可用性 所谓网站可用性(availability)也即网站正常运行时间的百分比,业界用 N 个9 来量化可用性, 最常说的就是类似 “4个9(也就是99.99%)” 的可用性。 容灾恢复能力的关键指标 RPO:(Recovery Point Obejective,恢复点目标)是指业务系统所允许的在灾难过程中的最大数据丢失量,用来衡量容灾系统的数据冗余备份能力。 RTO:(Recovery Time Objective,恢复时间目标)是指信息系统从灾难状态恢复到可运行状态所需的时间,用来衡量容灾系统的业务恢复能力。 我国的国家标准《GB20988-2007-T 信息安全技术信息系统灾难恢复规范》对灾备数据中心根据RPO与RTO两项指标分成了6个相应的等级,如下所示: 来源: 51CTO 作者: 阿星哟 链接: https://blog.51cto.com/14082573/2330122