当前位置:首页 > 科技  > 软件

聊聊架构设计流程:识别复杂度

来源: 责编: 时间:2024-04-16 08:31:29 102观看
导读架构设计第 1 步:识别复杂度在设计软件架构的过程中,识别并理解系统的复杂性是至关重要的一步。这是因为,只有当我们准确地分析出系统面临的主要复杂性时,才能确保架构设计方案的正确性。如果分析失误,无论设计方案多么高

架构设计第 1 步:识别复杂度

在设计软件架构的过程中,识别并理解系统的复杂性是至关重要的一步。这是因为,只有当我们准确地分析出系统面临的主要复杂性时,才能确保架构设计方案的正确性。如果分析失误,无论设计方案多么高级,都可能偏离解决实际问题的正确路径,导致效果不佳。gIS28资讯网——每日最新资讯28at.com

考虑一个例子:假设一个系统主要的复杂性来源于其业务逻辑的复杂和功能之间的紧密耦合。如果在这种情况下,架构师设计了一个以高吞吐量(TPS为50000/秒)为目标的架构,那么无论这个架构的性能表现有多优秀,它都未能解决系统实际的复杂性问题。gIS28资讯网——每日最新资讯28at.com

通常,架构的复杂性源于需求对高性能、高可用性、可扩展性等方面的要求。但在分析系统复杂性时,架构师不应该机械地认为所有系统都必须同时满足这些要求。实际上,大多数情况下,复杂性问题主要集中在上述几个方面的某一个或某两个方面。真正同时面临三个或以上复杂性问题的情况非常罕见,这种情况通常意味着之前的系统设计存在问题,或者是架构师的分析判断有误。即便确实面对多重复杂性要求,也应进行优先级排序,逐一解决。gIS28资讯网——每日最新资讯28at.com

以一个亿级用户平台为例,该平台最初的设计目标是模仿腾讯QQ的用户规模和功能复杂度,导致其设计了超过40个子系统。这种过度设计不仅导致系统过于复杂、运维困难、开发效率低下,而且由于业务并未达到预期的规模,造成了大量资源的浪费。最终,团队不得不花费额外的两年时间进行重构,将子系统数量减半,系统才逐渐趋于稳定。gIS28资讯网——每日最新资讯28at.com

面对一个同时存在多个复杂度问题的系统,最合理的做法是分步骤解决。首先,明确系统面临的主要复杂度问题,并根据业务需求、技术现状和团队能力进行优先级排序。例如,在上述亿级用户平台的案例中,团队首先将精力集中在减少子系统数量上,这一改进不仅提高了开发效率,还减少了系统的故障率。在此基础上,团队又成功实施了异地多活方案,进一步提升了系统的稳定性。gIS28资讯网——每日最新资讯28at.com

担心按优先级解决问题可能导致后续需推倒重来的方案是有理论基础的,但在实践中几乎不会发生。软件系统的可塑性和灵活性意味着对于同一问题,通常存在多种解决方案。即使真的需要重构,新方案也应该能够同时解决之前已解决的问题,而这通常依赖于新技术的引入。比如,Hadoop就是一个能够同时处理大数据的高性能、高可用性和大容量问题的技术解决方案。gIS28资讯网——每日最新资讯28at.com

对架构师而言,识别系统复杂性是一项挑战,需要在深入理解需求的基础上进行全面分析。有经验的架构师可能能迅速洞察复杂性所在,而对于经验较少的架构师,则可能需要通过排查法,从不同角度逐一分析,才能准确把握系统的复杂性。gIS28资讯网——每日最新资讯28at.com

图片图片gIS28资讯网——每日最新资讯28at.com

识别复杂度实战

在创业公司“前浪微博(虚拟)”的快速发展过程中,其系统架构开始显现出效率低下的问题,尤其是在多个业务子系统间的协作上。以发布微博为例,从审核到统计、广告预测再到消息推送,微博子系统需要与十几个其他系统进行接口调用,每增加一个通知,就意味着额外的接口设计和测试工作,这大大降低了开发效率,同时使问题定位变得异常复杂。同样的情况也出现在用户升级至VIP等级时,等级子系统需要通知诸如福利、客服、商品子系统等多个系统进行相应处理。gIS28资讯网——每日最新资讯28at.com

针对这些挑战,一位新加入的架构师提出引入消息队列系统来解耦各个子系统的直接依赖。经过一系列的分析、讨论和审批后,该提案得到了批准。gIS28资讯网——每日最新资讯28at.com

在对消息队列系统的需求进行深入分析时,中间件团队采用了“排查法”来确定其面临的主要复杂性。首先关注的是性能问题。假设前浪微博每天产生1000万条微博消息,每条微博消息需被十个子系统处理,这意味着日总消息处理量约为1亿次。将这个数字分解到每秒,意味着平均每秒需处理115条写入消息和1150条读取消息。但为了应对峰值,设计目标通常设定为平均值的三倍,即TPS(每秒事务处理量)为345,QPS(每秒查询处理量)为3450。即使如此,考虑到业务增长,性能设计目标被进一步设定为峰值的四倍,即TPS为1380,QPS为13800,以保证系统对未来业务增长的充分准备。gIS28资讯网——每日最新资讯28at.com

接下来是高可用性的需求分析。考虑到消息丢失可能带来的严重后果,如审核系统的消息丢失可能导致违反法规,VIP等级奖励的不发放可能导致用户不满,消息队列在写入、存储和读取各环节都需保证高度的可靠性。gIS28资讯网——每日最新资讯28at.com

至于可扩展性,鉴于消息队列的功能较为固定,当前看来并不是主要的复杂度所在。gIS28资讯网——每日最新资讯28at.com

综合上述分析,消息队列系统面临的主要复杂性在于高性能的消息读取和全流程的高可用性保障。这次详细的分析和讨论,不仅适用于“前浪微博”面临的挑战,也为其他企业提供了一种系统性问题解决的框架。需要注意的是,这里的性能目标设定为峰值的四倍主要是基于对业务增长速度的预估,并不是一个固定的倍数,不同业务场景下的预估倍数可能会有所不同gIS28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-83780-0.html聊聊架构设计流程:识别复杂度

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 聊一聊什么是 React 属性钻取(Prop Drilling)

下一篇: 对线面试官-CHAR和VARCHAR了解嘛,区别是什么

标签:
  • 热门焦点
  • 小米官宣:2023年上半年出货量中国第一!

    小米官宣:2023年上半年出货量中国第一!

    今日早间,小米电视官方微博带来消息,称2023年小米电视上半年出货量达到了中国第一,同时还表示小米电视的巨屏风暴即将开始。“公布一个好消息2023年#小米电视上半年出货量中国
  • 红魔电竞平板评测:大屏幕硬实力

    红魔电竞平板评测:大屏幕硬实力

    前言:三年的疫情因为要上网课的原因激活了平板市场,如今网课的时代已经过去,大家的生活都恢复到了正轨,这也就意味着,真正考验平板电脑生存的环境来了。也就是面对着这种残酷的
  • vivo TWS Air开箱体验:真轻 臻好听

    vivo TWS Air开箱体验:真轻 臻好听

    在vivo S15系列新机的发布会上,vivo的最新款真无线蓝牙耳机vivo TWS Air也一同发布,本次就这款耳机新品给大家带来一个简单的分享。外包装盒上,vivo TWS Air保持了vivo自家产
  • 一文掌握 Golang 模糊测试(Fuzz Testing)

    一文掌握 Golang 模糊测试(Fuzz Testing)

    模糊测试(Fuzz Testing)模糊测试(Fuzz Testing)是通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。可以用来发现应用程序、操作系统和网络协议等中的漏洞或
  • 使用AIGC工具提升安全工作效率

    使用AIGC工具提升安全工作效率

    在日常工作中,安全人员可能会涉及各种各样的安全任务,包括但不限于:开发某些安全工具的插件,满足自己特定的安全需求;自定义github搜索工具,快速查找所需的安全资料、漏洞poc、exp
  • 共享单车的故事讲到哪了?

    共享单车的故事讲到哪了?

    来源丨海克财经与共享充电宝相差不多,共享单车已很久没有被国内热点新闻关照到了。除了一再涨价和用户直呼用不起了。近日多家媒体再发报道称,成都、天津、郑州等地多个共享单
  • 拼多多APP上线本地生活入口,群雄逐鹿万亿市场

    拼多多APP上线本地生活入口,群雄逐鹿万亿市场

    Tech星球(微信ID:tech618)文 | 陈桥辉 Tech星球独家获悉,拼多多在其APP内上线了“本地生活”入口,位置较深,位于首页的“充值中心”内,目前主要售卖美食相关的
  • iQOO Neo8 Pro抢先上架:首发天玑9200+ 安卓性能之王

    iQOO Neo8 Pro抢先上架:首发天玑9200+ 安卓性能之王

    经过了一段时间的密集爆料,昨日iQOO官方如期对外宣布:将于5月23日推出全新的iQOO Neo8系列新品,官方称这是一款拥有旗舰级性能调校的作品。随着发布时
  • 上海举办人工智能大会活动,建设人工智能新高地

    上海举办人工智能大会活动,建设人工智能新高地

    人工智能大会在上海浦江两岸隆重拉开帷幕,人工智能新技术、新产品、新应用、新理念集中亮相。8月30日晚,作为大会的特色活动之一的上海人工智能发展盛典人工
Top