万博手机版max网页版 - 在线登录—刘华:想入门软件系统架构设计,看这篇就够了

日期:2023-01-19 09:11:02 | 人气:

本文摘要:“ 分享软件系统架构设计要解决什么问题,好的设计是怎么来的和一些非互联网架构的设计样例。”我在《为什么每个软件人都要懂点系统架构?》里提到,每个软件人都要懂点系统架构。这篇文章将明确告诉大家,纵然是小白也可以学习做架构设计。 我将分享架构设计要解决什么问题,好的设计是怎么来的和一些非互联网架构的设计样例。01 要解决什么问题要回覆这个问题,首先要明确架构设计是什么。 我就不抄网上的尺度谜底了。

万博手机版max网页版登录

“ 分享软件系统架构设计要解决什么问题,好的设计是怎么来的和一些非互联网架构的设计样例。”我在《为什么每个软件人都要懂点系统架构?》里提到,每个软件人都要懂点系统架构。这篇文章将明确告诉大家,纵然是小白也可以学习做架构设计。

我将分享架构设计要解决什么问题,好的设计是怎么来的和一些非互联网架构的设计样例。01 要解决什么问题要回覆这个问题,首先要明确架构设计是什么。

我就不抄网上的尺度谜底了。下面我通过4W1H来分享我的明白,更便于小白明白:What:网络、服务器、存储、中间件、数据库等硬件资源的搭配;Why:系统在生产情况上能满足非功效性需求,确保服务一连性,并确保在极端情况下能在划定时间内恢复业务;Who:架构设计师、系统设计师和系统卖力人配合配合;When:收集到系统非功效需求后,获取硬件资源之前;How:确定业务重要性;收集非功效性需求;架构设计;设计评审;获取硬件资源。

下面我将详细展开How这个问题。02 好的设计是怎么来的?确定业务重要性由于差别系统所服务的业务的重要性是纷歧样的,通常接纳恢复时间目的(Recovery Time Objective,RTO)来确定,也就是该业务可以允许系统服务中断最长的时间有多长。对于业务和用户来说,固然希望系统服务完全无中断,可是要实现完全无中断,所需要的架组成本会很是高,这个成本不光是首次采购服务器的建设成本,另有系统未来运行历程中,所有服务器的运行和维护成本。所以,架构设计不求“最好”,只求最合适。

在每个项目立项时或系统开发前,业务都需要评估他们的RTO,然后架构设计师选择与RTO匹配的设计。好比,最重要的业务,不允许任何服务中断的,其RTO就是0,在架构设计上必须采取同机房内服务器的“双活”或“多活”,机房间的灾备方案也应该是“双活”或能实现自动的故障切换,机房间的数据是完全同步的,实现单台服务器故障或机房间的切换对业务影响最低。固然,这套方案的成本最高。

如果业务的RTO是4个小时,也就是允许系统服务中断时间最长的时间不凌驾4个小时,在架构设计上可以采取同机房内服务器的故障切换,机房间的灾备方案可以是“双活”或自动的故障切换。如果业务的RTO是8个小时,在架构设计上可以采取同机房内的故障切换,机房间的灾备设计可以是手动的故障切换。

收集非功效性需求这里主要围绕着系统所需要支撑的业务量、并发用户数、系统响应要求,以及未来可预见的业务量和用户数的增长,确定硬件设置方案。CPU设置可以参考SPEC值,也就是“跑分”。

如果是现有硬件因业务增长而升级,需要收集现有硬件种种运行指标,如CPU、内存、存储等的使用情况,来确定当前负载,并以此为基础推算升级后的硬件指标。架构设计就是绘图了。

业务与用户都期望IT系统的服务是一连的,不会因故障而中断服务。要满足这一要求,在架构设计上,必须思量制止单点故障导致整个系统的服务中断,也就是鸡蛋不能放在一个篮子里的原理。

可以想象,如果一个IT系统只部署在一台服务器上,那么只要这台服务器泛起故障,服务就会中断。应对这种情况,有两种方案:故障转移(Failover)——把系统部署到两台服务器,其中一台服务器是主服务器,所有用户请求默认发到这台服务器;另一台服务器是备用服务器。

万博手机版max网页版登录

一旦主服务器泛起故障,所有用户请求切换到备用服务器,继续提供服务,为修复主服务器故障争取时间。双活或多活(onsite resilience)——把系统部署到两台服务器,并把用户的请求平衡地分配给这两台服务器划分处置惩罚,那么不光系统的处置惩罚能力提升了,而且纵然其中一台服务器泛起故障,另一台服务器依然可以支撑服务,处置惩罚用户请求,这种设计叫“双活”。

如果是通过多台服务器来实现这种设计,就叫“多活”。这两套方案均可制止单点故障,但成本是纷歧样的。在故障转移方案中,备用服务器是应急用的,其设置可以低于主服务器,而在“双活”和“多活”的方案中,所有服务器的设置应该一致,所以从成本上看,故障转移 < 双活 < 多活。同等服务器设置的情况下,从业务处置惩罚能力上看,多活 > 双活 > 故障转移。

所以,接纳何种方案,需要联合业务的关键水平、性能要求、成本等综合思量。以上是从服务器的角度来思量的。

放置服务器的机房也会泛起故障,好比当地震、海啸、水灾、火灾、断电、雷击等灾难发生时,可能会泛起整个机房无法事情的情况,从而导致企业的所有IT系统无法提供服务。要制止这种情况,许多企业都市建设灾备机房,这也是羁系机构对某些行业的硬性要求。对于灾备机房,一般要求“同城异地”,也就是主机房和灾备机房在同一都会的差别所在,需要有一定的物理距离。

更高的要求有“两地三中心”,也就是在“同城异地”的基础上,还需要在另外一座都会设置一个机房。在架构设计上,也要思量从主机房切换到灾备机房的方案。

前面提到故障切换、“双活”和“多活”的思路同样可以运用到机房的灾备设计上。主机房与灾备机房之间的数据也需要同步,确保切换后,业务可以延续。架构设计师需要充实相识种种硬件资源的设置、适应场景和处置惩罚能力(如果公司是自建机房,强烈建议对种种种类的硬件资源举行尺度化。好比Linux服务器,有统一的品牌、型号和OS版本,有多个设置选项,从而提供同构的资源,简化治理,统一架构设计师的知识库,减轻架构设计师的认知肩负,降低采购成本,降低机房的繁杂性。

云服务商也是走这个计谋的。)。架构设计历程中,设计者需要和系统设计师、系统卖力人充实相识系统设计、功效、特性和上下游系统关系。

整个历程中,要保持相同,小步推进,确保做出来的设计是获得一致认可的。架构设计的输出包罗架构设计图以及详细的硬件资源清单,资源清单包罗网络、服务器、存储、中间件、数据库等的详细类型和设置。未来将根据这份清单来获取硬件资源。

后面会有一些非互联网架构的一些设计示例展开讲述。设计评审设计初稿最好获得资深架构设计师的审阅。获取硬件资源凭据审批的架构设计及硬件资源清单,获取相应硬件资源,从而可以开始举行系统安装和部署。

03 一些样例以下是一些详细的架构设计样例,供参考。前面提到,生产情况必须要思量灾备,因此险些所有生产情况的架构设计图纸都是以下这样的“双肺”形式。险些所有在生产情况的资源都要在灾备情况设置一套,以便生产情况的硬件资源或机房泛起故障时,可以快速切换到灾备情况。

这张图是一个典型的MVC模型架构。在图中,应用服务器和数据库服务器在生产情况和灾备情况均只有一套,因此一旦生产情况中的硬件资源泛起不能短期恢复的故障时,只能通过切换到灾备情况来“续命”。由于切换到灾备情况需要一些时间,因此这张图其实RTO将是数个小时(详细几多小时将取决于每家公司机房针对各硬件资源切换的答应时效),也就是最多可允许停机数小时的方案,适合业务重要性不太高的系统。为了满足快速切换,在设计中思量到了以下因素:生产情况和灾备情况间应用服务器通过NAS(Network Attached Storage:网络隶属存储,简朴明白就是一种共享存储)生存文件,这样两套服务器间的文件是共享的,切换后也能会见到切换前的所有文件。

生产情况和灾备情况间应用服务器通过网关设置了主/备切换,一旦生产情况的服务器(主机)不响应,请求会自动切换到灾备情况的服务器(备机),无需人工干预。NAS在生产情况和灾备情况也备了两套,并举行了同步。一旦生产情况的NAS坏了,两台应用服务器可以挂到灾备NAS,并会见到已同步的文件。

这个例子的数据库接纳的是Oracle。生产情况和灾备情况间数据库通过Oracle Data Guard举行数据同步,确保切换后系统可以获取同样的数据。数据库建议存储在像NAS或SAN(存储区域网络Storage Area Network)的共享存储中(请自行补习NAS和SAN的区别,NAS比SAN自制),保障性更高。

测试情况由于只需要备份,不需要思量灾备,通常是“单肺”的形式:如果业务重要性更高,从而对RTO的要求更高,则需要思量在生产情况中实现多个服务器的“多活”、“双活”或故障切换。以下是一个示例:在这个例子中,在一个情况里,应用服务器也有两套,它们通过网络负载平衡器实现了“双活”,用户请求会分发到这两台服务器上,在两台服务器均可用的情况下,请求处置惩罚量也比单机增加了一倍。万一其中一台服务器挂了,业务并不会中断,虽然处置惩罚能力会下降一半。

数据库服务器也在同一个情况中设置了两台,并通过VCS (Veritas Cluster Server,是VERITAS公司开发的一款高可用的多机热切换软件,可以通过应用在各服务器之间的智能化灵活切换,使多台服务器协同事情)实现故障切换,一旦主服务器泛起了故障,可以自动切换到备用服务器,延续服务。这里增加的在同一情况中的冗余设计,将大大降低更繁琐、耗时更长的灾备切换的几率,从而提升RTO。如果系统是重度依赖数据库的,性能瓶颈会集中在数据库,可以思量接纳下图所示的数据库“多活”方案。该方案在每个情况设置了3台数据库服务器,并通过Oracle RAC (Real Aapplication Clusters)实现了多点负载平衡,在3台服务器都可用的情况下,可以提供相对于单机近3倍的处置惩罚能力。

应用服务器有需要的话也可以从“双活”提升到“多活”,增加处置惩罚能力。互联网/云架构以上示例均为非互联网/云架构,在金融这样的传统企业比力多见。

所谓互联网/云架构,会充实使用漫衍式设计和异步处置惩罚,实现更强的伸缩性从而灵活应对颠簸庞大的流量,并能充实联合云盘算所带来的即时按需租用、自动伸缩以及大量基础服务。我将在以后和大家详细先容。但今天先容的思路也能资助大家明白更繁杂的互联网/云架构。

万博手机版max网页版

04 总结我在《高级人才的价值在于治理庞大性的能力》提到过,一个优秀的架构师需要以下能力:Technical Excellence 技术牛 - 这个不用多说;Communication Mastery 相同达人 - 架构设计绝对不是画张图那么简朴,你需要和差别技术团队举行深入交流,才气做出切实可行的架构方案;Leadership Power 向导力 - 同理,只要需要协作,就需要向导力。你的图纸,别人不买账,就是废纸一张。架构设计并非高不行攀的能力,软件工程师们除了低头写代码,如果能抬头掌握更多的系统架构知识,并诉诸行动,将能为客户、用户、业务部门提供更全面的服务。

近期必读:为什么软件交付要快?因为要有赢的感受做PO难,难于上青天为什么软件开发很难外包关于作者刘华(Kenneth)就职于世界500强银行,卖力基金服务业务软件开发与交付敏捷、精益、DevOps专家醒目极限编程、Scrum、看板方法、测试驱动开发、连续集成、行为驱动开发、DevOps工具栈曾在GDevOps、DevOpsDays Meetup、中国软件技术大会、ArchSummit等论坛揭晓主题演讲著有《猎豹行动:硝烟中的敏捷转型之旅》一书小说体敏捷/DevOps转型教科书和实战履历分享。


本文关键词:刘华,想,万博手机版max网页版登录,入门,软件系统,架构,设计,看,这篇,就

本文来源:万博手机版max网页版登录-www.acpwe.com

旋转小火锅定制流程

免费咨询

提供图纸

免费设计

免费报价

无忧安装

终身维护