很多在一线做coding工作多年的程序员朋友好像对「架构」有着一股特殊的情感。
一方面是自己长期在一线的各种项目中coding,好像除了业务代码以外,「架构」就是体现在项目中用到的一些框架。而且每个项目里用到的框架好像还都差不多,都是spring、redis什么的。觉得做架构并不是什么难事。
另一方面是,看着身边的那些架构师们拿着比自己高得多的薪水,而且讲起架构背后的“所以然”来又头头是道,觉得「架构」又是一门看得到、近在眼前,但是自己又摸不着的能力。
如果你对架构感兴趣,希望未来能有机会做架构,那么请继续往下看。
我有幸做过5年的架构工作,其中4年是一线实操的主导者。所以来分享一些我在实战中“多么痛的领悟”后的经验,和大家交流交流。
首先,架构肯定不是简单的依样画葫芦,别人在用redis,我也用redis,别人在用Nacos,我也用。 会用一个工具其实并不难。如果只是会用的话,这背后最直接的一个问题就是,你没有自己的思考过程,比如:
架构思维的核心其实就是这个思考的过程,架构设计的本质是思考后的结果,具体的工具、技术只是这个结果的一部分而已。 如果你没有掌握合理的架构思维,其实让你做好几年架构工作也没什么太大意义。因为工具再好,也不代表你能造出好房子。
根据我这些年的经验,我在做架构的过程中,提炼出了四个思路。我平时就是通过这些思路来指导我的思考方向的,如果你也有什么好的思路,欢迎留言与我和大家一起分享。
/01 架构是不断演进的/ 不要老想着一步到位,哪怕不考虑成本问题,也是不可能一步到位的,除非你能预料到眼前这个项目在未来的发展周期,直至其死亡。很显然,这是不可能的。(有这个能力用来炒股不香么~) 在我看来,一个系统架构要具备良好的演进能力,需要做到两点。 第一点,就是本身设计上的「可扩展性」。这个词看起来很抽象,其实落地的时候你只要记住一句话:“链接”处的设计决定扩展性。 而一般来说,我们软件里涉及到“链接”的地方主要就2个。一个是外部链接(系统与系统之间),一个是内部链接(系统内的模块与模块之间)。前者主要是通过网络来进行连接,所以通信协议的选择上需要尽可能的普适、通用,这样才能更有利于后续的迭代演进。而后者主要是代码层面的链接,在这类链接点上尽可能的使用Interface而不是具体的Class。
除了必要的提高扩展性的工作之外,特别重要却又容易被忽略的一点就是「可观测性」。 只有当一个架构的关键指标可以被观测,你才能更好的把控演进的方向,而不是拍脑袋决定。并且在每一次迭代完成后,通过观测系统可以判断这次迭代的效果是否符合预期。 常见的属于“观测系统”的工作是,单元测试、自动化测试、监控系统、代码检测工具等等。
/02 「分」是为了更好的治理/ 在分布式系统中,涉及到「分」的概念有很多,「横向拆分」、「纵向拆分」、「一主多从」、「双主多从」、「多主多从」。每一种概念你都能在网上轻易地搜到解释。 但是所谓的「分治」不是简单的将系统随便拆分一下,还要考虑拆分之后的治理成本。所以,你得明白当前面临的问题特点是什么,基于这个特点去选择合适的拆分方案,而不是上来就怼一个多主多从,最好的方案不一定最适合你。
治理成本中除了直接的维护成本外,还有一个容易被忽略的隐性成本就是「合」的成本。 一个大系统内的任何数据、子系统都不是孤立存在的,否则他们就没有存在的价值。因此,耦合或多或少都存在。所以,在「分」的时候同时要考虑好有哪些「合」的场景,针对这些场景做好预案。最常见的应对方案是,多冗余一份数据,确保最终一致性即可。 我之前接触过的一个典型的反面案例是,两个子系统在架构上是自治的,但是他们之间的耦合也不少,两个系统中大量充斥着调用另一个子系统的Rpc请求,然后在自己系统内进行数据合并,并返回给上游。在这样的架构设计之下,这两个子系统成了“命运共同体”,基本上一边出问题,另一边也会出问题。 所以,「分治」不仅有「分」还要考虑「治」。
/03 让系统不宕机/ 让系统不宕机是做架构要全力坚守的底线。
如果说做架构是设计高楼大厦的话,那么再高大上的高楼,如果坍塌了啥也不是。所以,一定把底线守住。 我见过太多刚开始做架构的同学,一股脑的追求表面上的高大上,却将系统的高可用问题抛之脑后。 关于高可用,这里就不浪费篇幅写了,因为内容太多了,我之前有专门写过一个系列,共八篇文章,文末我会放上链接。可以先看完这篇再跳过去看。
/04 用领域思维建模/ 每位程序员都知道什么叫「面向对象」。但是很多人的开发方式其实是“伪面向对象”的,为什么这么说呢?因为面向对象最重要的工作是建模,而他们却是在建数据表,然后用大量面向过程的代码编写软件。 随着最近几年的DDD大火,领域思维逐渐被大家所了解,它就是一个可以非常棒地指导我们建模的思路。不但可以指导宏观层面的模块划分,还可以指导具体的Class设计。 为什么这么说呢? 因为领域思维强调的是,将业务含义充分体现在模型中,建立所谓的「充血模型」。所以通过领域思维做的建模不单单有数据属性,还有业务模型的行为以及约束等,任何具有业务含义的概念都要在代码中体现。 如此一来,架构工作中的「分」的部分基本上直接给搞定了。剩下主要考虑「合」的问题以及具体的技术选型就好了。
DDD的具体应用就不展开说了,内容太多,能写一个系列文章。当然也没必要写,因为这事已经有人做得很棒了,直接看Vaughn Vernon的《实现领域驱动设计》就好。不管你是初学DDD还是想熟练运用DDD,看这本书都是最适合的,没有之一。
如果你想进一步深入DDD背后的思想原理,那么可以读一下Eric Evans的《领域驱动设计——软件核心复杂性应对之道》。
好了,总结一下。 这篇呢, 和你分享了我做架构的四个思路。分别是,
不敢说这几个思路一定能帮助你设计出多么牛逼的架构,但至少应该是合格的。希望对你有所帮助。 掌握了合理的思路后,做架构这件,看起来简单,做起来也简单。
本文由哈喽比特于3年以前收录,如有侵权请联系我们。
文章来源:https://mp.weixin.qq.com/s/M77iE2RaUmA1-C2lOrLc5w
京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。
日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。
据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。
今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。
日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。
近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。
据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。
9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...
9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。
据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。
特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。
据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。
近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。
据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。
9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。
《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。
近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。
社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”
2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。
罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。