范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

软件系统高可用架构思考

  近期在重新评估我们系统的高可用性和弹性扩展能力,因此今天再整理下软件系统高可用架构方面的内容。重点还是对里面的一些关键点展开说明。
  对于高可用整体概述,我在前面专门一篇文章写过,先做个说明:高可用性整体概述
  对于业务系统的高可用性,实际上包括了高可靠,高性能和高扩展三个方面的内容。而且三方面相互之间还存在相互的依赖和影响关系。
  对于三者的关系,我们可以用下图进行描述。
  上图可以看到高可靠性,高性能和高扩展性三者之间的关系。
  对于高可靠性来说,传统的HA架构,冗余设计都可以满足高可靠性要求,但是并不代表系统具备了高可靠性能和可扩展性能力。反过来说,当系统具备了高扩展性的时候,一般我们在设计扩展性的时候都会考虑到同时兼顾冗余和高可靠,比如我们常说的集群技术。
  对于高性能和高扩展性两点来说,高扩展性是高性能的必要条件,但是并不是充分条件。一个业务系统的高性能不是简单的具备扩展能力就可以,而是需要业务系统本身软件架构设计,代码编写各方面都满足高性能设计要求。
  对于高可靠和高性能,两者反而表现出来一种相互制约的关系,即在高性能支撑的状态下,往往是对系统的高可靠性形成严峻挑战,也正是这个原因我们会看到类似限流熔断,SLA服务降级等各种措施来控制异常状态下的大并发访问和调用。早期的软件系统高可用
  软件基础架构早期的高可靠性更多是围绕高可靠性展开的。
  简单来说就是一个软件系统的部署应该采用HA或集群部署,整个IT基础设施架构里面不应该有任何的单点故障。常见的早期IT部署方式一般为:负载均衡设备HA架构应用中间件集群部署数据库HA部署+共享存储
  所以你会看到整个高可用实现起来并不复杂,应用中间件可以实现负载均衡集群具备扩展性,数据库往往会成为瓶颈。所以数据库你也可以采用集群部署,类似Oracle RAC集群。通过数据库集群来实现数据库层面的扩展能力。
  共享存储
  不论是HA架构,还是数据库集群,都可以看到类似SAN共享存储是关键。也就是说必须要有共享存储才能够实现HA架构或者集群架构。在新的分布式架构下可以看到新的分布式架构会实现数据库本身也是分布式的,多副本存储,可以直接采用本地磁盘。
  应用服务器集群
  一个集群,如果本身是无状态的,那么就很容易上层增加负载均衡设备来实现负载均衡。一个软件系统中间件集群,常说的状态即Session保持。
  为了更好地解决集群节点本身无状态的话,可以看到Session保持本身是从集群节点移出的。要不是在客户端进行Session保存,要不就是下移到数据库或Redis库来保存Session会话信息。其目的都是让集群节点本身无状态化。高可靠-》集群和可扩展
  前面已经看到,如果仅仅是高可靠性保障, 实际上是比较简单的事情。整个IT基础架构的复杂性实际上是为了高性能和可扩展,引入了集群和分布式架构导致。
  对于集群和分布式实际两个概念经常在混淆使用。
  在这里强调下分布式实际更多会谈数据本身的分布式存储问题,这个分布式存储是和前面集中化共享存储最大的一个差异点。即数据需要存储在多个分布式节点,可以是每个节点都存储全量(读写分离集群),也可以是每个节点都只存储部分数据,并采用多副本机制保障数据的高可靠性。
  对于集群更多会在大量请求过来进行请求分发的时候使用,即集群节点本身也是分布式的,但是针对的是多个请求的均衡,一般不涉及状态问题,同时也不会再对单个完整请求进行拆分处理。
  CP优先还是AP优先
  一个分布式架构一定会涉及到CAP定律。原因重点还是引入了状态保持和数据的持久化存储问题,这个本身就引入了一致性问题需要解决。
  对于CP来说一致性优先,那么数据必须多节点复制同步成功请求才能够成功,那么自然就牺牲了高可用性,也就是说一个请求本身可能由于底层多节点数据同步问题,导致请求超时。而对于AP来说或高可用性优化,那么就容易引入类似脏读等问题,导致数据不一致性。
  分布式架构的实现往往就在两者之间进行权衡。比如Zookeeper采用CP一致性优先,而对于微服务注册中心Eureka则采用AP高可用优先原则。
  当应用中间件集群无状态化后,实际问题就变成了如何解决数据库,缓存库,服务注册和配置中心本身的分布式架构和集群扩展问题。
  中心化还是去中心化
  在微服务架构下,我们会更多地思考中心化和去中心化的问题。
  类似服务注册中心Eureka则是一个去中心化的架构模式,其控制流和数据流是分离的,即数据流并不会经过注册中心进行路由分发和中转。当然注册中心你本身也要集群化,类似Eureka可以进行多节点集群部署,并且实现多个节点之间注册信息和配置信息的状态同步。
  而对于中心化情况下,往往就有一个中心化的控制节点来管理多节点之间的状态和数据同步,即这些数据同步不是节点之间相互复制完成的,而是由控制节点来管理的。
  对应到Dubbo注册中心来看,其集群中各个节点之间的配置信息和状态同步则是通过Zookeeper来配合完成的。也就是在一个分布式架构下,启用一个中心化控制节点来完成一致性协调和事务管理等问题。数据库-主从,双主,读写分离
  对于数据库本身,首先解决高可用性问题,其次解决性能扩展问题。
  对于高可用在前面谈到如果存在集中存储模式实际上简单采用HA架构就可以解决。那么在采用本次盘进行存储的时候就一定涉及到数据库同步复制。
  数据库基于日志的同步复制是一个基础能力。
  类似Mysql的双主数据库配置,读写分离集群配置等都需要采用到读写分离方式实现。这个时候实际上每个节点都存储的全量数据信息。
  主从配置和一对多配置
  对于Mysql数据库你可以采用Dual Master架构解决高可用问题。当然可以可以是双Master架构+多个读节点实现读写分离来解决数据库性能和扩展问题。
  在数据库读取场景占主要业务场景的时候,这种方法本身可行。实际在实现的时候一般需要在Mysql上架构一个DaaS数据库中间件来实现SQL解析,路由等关键能力。
  数据库Cluster集群
  对于Mysql数据库本身也有Cluster集群,但是当前应用场景并不多见,其本身通过Cluster来扩展的性能提升也不明显。
  RAC集群机制的简化
  一个分布式数据库集群,可以看到最难的就是数据一致性保障,如果多个节点都能够同时读写,那么这个事务一致性保障是相对难实现的。类似Oracle RAC集群就采用的这个机制。而当前阿里的PolarDB数据库集群实际对这个进行了简化,即仍然是采用共享存储(这个共享存储是分布式节点进行整合后的共享存储能力,类似Ceph实现等),但是多节点配置下,仅仅一个节点写,其它节点仅仅是读节点。这个可以参考下PolarDB的一些文档说明。
  数据库拆分
  数据库层面性能扩展另外一个方法就是数据库拆分,既可以是水平拆分,也可以是垂直拆分。而对于垂直拆分一般就是和当前的微服务架构规划设计放在一起,不同的微服务可以独立独立的数据库完成拆分工作。
  数据库拆分应该对上层应用访问透明,因此需要在切片完成的数据库节点上面架构一个分布式数据库访问中间件,一般我们叫DaaS数据库即服务中间件。比如Cobar,MyCat等各种开源实现等。
  在微服务架构演进下,实际可以看到DaaS反而用得越来越少,其核心原因就是进来减少了跨库的一些关联查询和聚合等SQL操作,而是将类似操作上移到应用层去解决。负载均衡和分布式集群
  对于负载均衡来说实际不能算一个分布式集群,仅仅是做请求的路由分发工作。当谈到分布式集群的时候一般就会谈到两个点。
  其一是状态和配置信息在集群节点的实时同步,其二就是集群节点的心跳检查,当节点出现问题的时候要实时从集群列表中去除掉直到恢复。
  当前构建分布式集群比较常用的如Zookeeper,Etcd等,Dubbo分布式集群采用了Zookeeper,而对于Kurbernetes集群则采用Etcd来构建分布式集群管控。但是不论哪种开源实现,类似分布式锁,数据一致性保证,软负载均衡,心跳检查等都是最核心的基础能力。
  心跳检查KeepAlive
  在前面谈Mysql双主模式的时候,实际本质仍然还是主从模式。其关键就是需要实时心跳检查主节点当前状态,当心跳检查出现问题的时候需要能够及时地将从节点切换为主节点。这个过程需要自动切换和完成,以提升整体高可用性。
  Redis主从到哨兵机制
  一个高可用的Redis集群一般会涉及到6个节点,即三个哨兵节点,三个主从节点。
  简单的主从架构下虽然可以实现高可用,但是无法实现在监测到主节点出现问题后自动切换到从节点,也正是这个原因引入了sentinel节点。也就是说sentinel节点做的是类似KeepAlive心跳检查的事情。
  sentinel节点自身也需要高可用,因此这里至少就需要两个节点来确保sentinel节点本身的高可用性。那么为何要引入三节点?
  可以看到当前主流的分布式架构集群中,管理节点往往都引入3节点模式。
  即当两个节点的时候,容易出现一种情况:sentinel-A节点监测到master当前可用
  sentinel-B节点监测到master当前可用
  那么这个时候就出现了矛盾,不清楚听谁的。因此需要引入更多的一个节点来进行投票,具体是否主从切换听票数多的。
  对于高可用集群的搭建思路,在这里还是需要重新进行下总结和梳理。
  首先在前面强调了一个点,即集群节点本身不要存在大量的本地数据或文件存储,如果存在那么就需要考虑两个思路来解决。其一是挂接集中存储或共享存储,其二是需要有一个机制来实施实时或准实时的数据或文件同步复制。
  其次,对于集群搭建是否需要统一的出口IP,比如一个浮动VIP地址。实际这里是可以两种做法,一个是增加一个软负载均衡类似HaProxy来提供统一的VIP地址,其次就是不提供VIP地址,那么在服务提供端或消费端需要配置一个IP地址串。
  集群节点本身也包括两种类型。
  一种是仅仅为了高可靠性,一种是要进行实际的大流量负载分发。第一种情况往往存在通过心跳检查来进行主从切换的问题;而第二种情况往往还需要搭配软负载均衡能力,即管理端对于注册进入的节点,一方面可以进行负载均衡,一方面又可以通过心跳检查动态增删节点。类似k8s的分布式集群,自然是需要具备以上两个方面的能力。
  如果你还是采用传统的负载均衡方式来实现集群,如果集群节点存在类似配置文件等有状态信息的下发你无法很好地完成,其次就是集群节点持续故障的时候很难做到的自动化的管理能力,比如出现问题后的自动卸载,恢复后的自动挂接等。
  即使你使用硬件负载均衡来做大并发请求的路由分发,你仍然需要一个分布式集群的管理组件来实现集群节点的动态管理。比如我们在采用Weblogic的时候,对于整个集群仍然采用Weblogic Cluster来进行管理,包括节点检测,服务的部署等。但是对于所有节点又统一配置到硬件负载均衡设备上来提升负载均衡本身的性能。
  注:以上内容有部分没有经过自己实践验证,因此内容有差错可反馈指出。

郭德纲原本想收沈腾为徒,赐名沈云腾,沈腾9字回拒显高情商今年的春晚在网上遭到了网友们的强烈吐槽,尤其是语言类的节目被认为太过于无趣,往年那些大家熟悉并且喜爱的喜剧演员几乎都没有出现在这个舞台上,让期盼已久的观众们感到非常的失望。今年没能她与董卿竞争半辈子,二婚嫁给百亿富豪,52岁美成了仙女每年到了除夕夜,人们最期待的除了年夜饭以外,就是春晚了,作为我国最受人瞩目的一台晚会,从舞美到参演人员都会引起大众的关注,其中主持阵容更是每年都会引发一轮猜测。近几年来,春晚似乎一有一种整容叫仙剑的阿奴,15年前嫌她胖,如今美到心动在每个人的童年记忆里应该都会有一部让自己记忆深刻的影视剧吧,比如2015年横空出世的仙剑奇侠传1就是无数人的回忆,这部剧不仅创下了很多项纪录,还捧红了一众新人演员,比如胡歌彭于晏又她自以为很红,当评委耍大牌让选手滚下台,如今成这模样一年一度的选秀热潮再度来袭,今年两大平台几乎是在同一时间开启了自己的王牌选秀节目,在话题度和热度方面都下了很大的功夫,成功地引起了网友们的关注和讨论,但和以往大家关注选手表现不同的王启年田雨,隐藏多年的妻子是熟悉的她,难怪出道多年无绯闻之前有一部大火的电视叫做庆余年,我想很多人都应该看过吧,剧中的几位演员也都因精彩的表现而获得了观众的喜爱,可以说这部剧在播出以后是非常受欢迎的,而呈现一部好的作品从台前到幕后缺一不杨丽萍10年不摘帽子,本以为只是装饰,摘下帽子后让人感慨良多提到孔雀舞人们联想到的第1个名字就是杨丽萍,杨丽萍是国内知名度最高的舞蹈家之一,她创建的孔雀舞走出国门走向世界,让更多的人见识到了云南的美丽,而有细心的观众发现杨丽萍近10年基本不闫学晶贾静雯亲手拔父亲氧气管被称赞,朱迅没拔,成一生的遗憾世界上最爱我们的人,可能就是我们的父母,而世界上最遗憾的事情则是子欲养而亲不待,身为一个人首先要做到的就是孝顺自己的父母,而且一定要在父母还健在的时候好好孝顺他们。怎么才算孝顺呢?赵丽颖为张碧晨新歌打call,冯提莫新歌实力上榜,你值得听提起张碧晨这个名字,想必很多小伙伴来说都已经是非常熟悉了吧。特别是在前段时间,张碧晨可是因为未婚生子的事情引起了不少网友们的关注。如今这件事情也已经过去了很长一段时间,吃瓜群众们也有一种整容叫赵雅芝,褪去美颜滤镜后,真实的颜值老态尽显不知道大家最近有没有看上阳赋,这部剧可以说是真正的大咖云集了,就连赵雅芝都出山了,她在这部剧中的扮相依旧十分端庄优雅,谁敢相信这是66岁女人的状态啊,如果自己66岁的时候能像她这样玖月奇迹相爱16年,王小玮为何被抛弃?王小海在节目里透露心声央视星光大道这个节目无人不知,节目中出现很多草根歌手,其中最红的要数李玉刚凤凰传奇以及玖月奇迹了吧,像他们这样男女搭配的组合再合适不过了,然而玖月奇迹中的两位在成名之后终于修成正果62岁冯小刚病重,身家过亿却为何放弃治疗,节目中说出了真相曾经他的电影霸屏春节档,是他将贺岁片这种类型的电影走向大众,被称为内地贺岁片的冯小刚很成功,他拍摄的电影几乎每一部都火了,他的作品大家都很熟悉,只是在芳华之后,我们好像没有再看到他
王源生日会的固定嘉宾,与王源默契超高,粉丝有他才安心近日,在王源参加完其代言的品牌活动直播后,同场主持人杨杨在社交平台上发布了自己与王源的合照,还很贴心的在配图中添加了王王源表情包并留言让粉丝自提,看起来已经是相当熟练的操作了。因为王源小秘密大公开,自曝将会发意义非常重大的新歌,主题似曾相识2月11日,在备战央视春晚的间隙王源还做客某自媒体平台,为粉丝们奉上了新春特别节目,引发了广大网友的关注。在其中,当王源被要求说一个其它人都不知道的小秘密用作大公开时,换做以前大概答案首舞台数据出炉,王源开唱后数据飙升,网友给予霸气称号近日,王源应邀参加了知乎十周年晚会活动,并奉献出了新歌答案的首舞台表演,王源独特的薄荷音搭配晚会绝美的音效场景,给人们带来一场难忘的温暖治愈表演,很多人在观看后都夸赞称这是一场近乎王源拍摄新图庆节日,手中道具引发大讨论,很多人都表示没见过2月4日,正值北方小年,时任北京台春晚代言人的王源自然承接了拍摄新图庆祝节日的任务,说是新图,其实不论是服装造型还是背景,都与官宣海报以及该台在腊八节发的祝福时是如出一辙的,可见王北京台春晚花絮,迪丽热巴与王源的合作引热议,粉丝互动却很暖心人们常说过了腊八就是年,因此传统腊八节刚过,各大卫视的春晚就已经在在紧锣密鼓的录制中了。而在今天中午,网络上曝光出一段北京台春晚的花絮,视频中的主人公是王源和迪丽热巴,两人的有趣互王源实火,凭一张路人镜头下的抓拍图出圈,怼脸放大挑战底线2月10日,春晚正式表演前的大联排已经接近了尾声,王源也是再一次被拍到现身最后一次彩排现场,随后王源便凭借一张路人镜头下的抓拍图火出圈,受到很多人的转发。原本的照片只是拍摄到王源,王源春晚录制花絮,粉丝们又跟着学到了新知识,还创新成了祝福语2月8日,北京台春晚节目组在社交平台上发布出王源等人的春晚录制花絮,引起了人们的广泛关注。这段视频主要讲的是作为北京台春晚的王源迪丽热巴和张国立一起跟着专业老师学习水拓春碗,以此来王源被央视新闻采访,一句话概括重点,说到了人们心坎里2月6日,有很多人在央视新闻频道中发现了王源的身影,因为此前央视春晚前的大联排已经进行到了第三次彩排,所以新闻频道安排了采访深入春晚后台,想通过采访从参与春晚联排的工作人员口中来探王源又被黑?所获奖项引争议,听完主办方的解释粉丝放心了1月29日下午,央视举办的中国歌曲top排行榜颁奖晚会如约播出,其中王源荣获了其中的最佳新人奖项,在被人认可与称赞的同时也引发了不少争议,他们认为王源出道时间好多年了,却还是获得的王源最新杂志采访,回答滴水不漏,网友通过分析找到了秘诀所在近日,王源最新拍摄的滚石杂志第一批已到货,很多粉丝迫不及待地在个人社交平台上分享自己拿到杂志后的欣喜与激动,但与此同时,在最新杂志中一些官方未曝光一些关于王源的个人采访内容也随之曝知乎晚会嘉宾录制官宣视频,王源别出心裁,让网友记住了他的介绍知乎晚会嘉宾录制官宣视频,王源别出心裁,让网友记住了他的介绍1月25日,知乎官方在其社交平台上陆续公布了参加晚会的嘉宾名单,而且连每位嘉宾的出场表演时间都提前公布了出来,这样也方便