微信扫一扫
分享到朋友圈

架构就像谈恋爱,没有好不好,只有合不合适

作者:InfoQ 来源:InfoQ 公众号
分享到:

09-27

十二年前,有一个人刚刚做架构师。


他以为架构就像编程一样,先学习一下基本的语法,再研究一下细节和原理,然后慢慢地进行实践就能掌握架构的奥秘。


可是他发现自己太天真了。在后来的工作中,他断断续续地用了8年时间才掌握架构设计的精髓。


他以为自己天资愚笨。


后来他成为一名资深技术专家,发现很多新手面对架构设计,居然遇到了和自己当年一模一样的困惑和瓶颈。


这让他猛然发现,并不是因为自己太笨,而是架构本身复杂灵活的特质导致了这一现象。


而多年过去,大学的课程里却依然没有教他们怎么学习架构设计;市面上也没有一本书可以系统地教他们。


没有找到符合他期望的内容,于是他开始将自己十多年的工作经验总结成一套完善的架构设计方法论,一边通过指导其他人来传递这套方法论,一边将其运用到不同的业务场景中反复验证和完善,先后成功应用到了抢购、用户中心、游戏、咨询、中间件等不同的业务场景中。


这位资深技术专家就是李运华。


曾就职于华为和UCWEB,拥有14年的开发经验,超过10年架构经验。且先后担任软件开发工程师、系统分析师、架构师和技术leader。


他曾多次在InfoQ上发表高质量的技术文章,。


起初,这套方法论最先实践于李运华的公司内部,后来经过多次打磨在极客时间上线,成为超过2.6万人学习的架构专栏。


在更新的过程中,他又根据用户的反馈多次调整内容。


只是为了让更多的人真正地学好架构设计。


经过多次迭代,这套方法论成功出版实体书——《从零开始学架构》,并在极客商城独家预售。

         

     点击图片即可购买


都在教你做架构,却很少有人教你做架构师


这两个有区别吗?


有。


相当一部分架构书是教我们落实具体的架构环节,就像一个搜索引擎,当你有疑问时,只能点对点地解答你的疑惑,却不能从根本上帮你建立系统的架构知识面。


而这本书立足于作者多年的从业经验,教你架构设计的方法论。不论你是前端还是后端,都可以化用这套方法论举一反三地进行架构学习与实践,成长为一名真正的架构师。


多年的从业经历让李运华发现,很多人常常会陷入这样的误区:只有顶尖技术公司的架构才是好架构。所以在设计的时候枉顾实际情况,刻意向这些公司看齐,不仅浪费了大量精力,最终的设计还满足不了业务的需要。


实际上,就连最初的淘宝网站,都是在没考虑技术、性能等情况下直接买的,因为那个时候,“网站的尽快上线”是淘宝最重要的诉求。


架构设计的主要目的在于解决复杂度带来的问题。

       

为了有针对性地进行架构设计,我们首先需要了解架构的复杂度来源于什么。


1、人类孜孜不倦追求的高性能。


生活越来越便捷,就是一种具象化的性能优化。手机从模拟信号到2G、3G、4G;火车从蒸汽机车到内燃机车,再到电气机车……


所有性能提高的背后,都是方法的优化和系统复杂度的提高。


2、为了防止意外的高可用。


系统的高可用方案五花八门,但本质上却是一致的,那就是通过“冗余”实现高可用。


通俗点来说,就是一台服务器不够,那就两台;一个通道可能会故障,那就设置两个、三个或者更多。


3、为了应对变化的可扩展。


不论是软件开发还是系统开发,一定会有需求变化。可扩展性就是为了保障在不需要重构的情况下,为变化提供实现的可能。


高性能、高可用和可扩展这三个方面是架构师在工作中需要着重考虑的环节,这三点直接作用于架构设计内部


但架构师同样需要注意外部环境对架构设计的影响,比如安全性、成本和规模等。


这套方法论具体是怎么指导架构设计的?


做事情要一针见血。


对架构设计来讲,找出业务场景的短板就是那关键性的一针。


上面分析了架构为什么复杂,其实就是在说,进行架构的时候需要考虑哪些因素。


面对实际的业务场景,我们要做的第一步就是分析:目前的架构毛病在哪,是需要高可用?还是高性能?还是可扩展?亦或是安全要求?


比如社交媒体就需要考虑高可用和高性能,而金融系统在安全方面要求会更高。


确定架构方向之后,第二步是准备几套备用方案,与开发、运维等部门讨论,选择针对实际情况最优的那套方案。


书中为我们搭建了一个虚拟场景——前浪微博,一步步展开来阐述上面的方法论。


假设前浪微博的中间件团队只有6人,整体熟悉Java语言,有一个同事C/C++很牛叉。开发平台为Linux,数据库为MySQL。业务系统为单机房部署。


虽然发展很快,但系统之间协作效率却很低。各个子系统都是通过接口调用。一旦出现问题,很难进行定位。


这个架构设计问题的根源在于各个业务子系统强耦合,信息队列系统刚好可以满足子系统的解耦。


架构之所以难,就在于它的灵活多变。高性能、高可用、可拓展、安全性和规模等几乎不可能样样兼顾。


所以判断复杂度,分好这几点之间的权重是关键性的第一步。


1、是否需要高性能?


虽然现在前浪微博的数据量级不需要高性能,但考虑到发展趋势,预留一定的系统容量才能应对未来的业务增长。将设计目标定为现在峰值的4倍是较为合理的。


2、是否需要高可用?


信息审核、用户服务都是社交媒体很关键的业务,前浪微博也不例外。所以信息队列需要高可用性,包括信息写入、消息存储,消息读取等。


3、是否需要高扩展?


前浪微博所设置的消息队列功能很明确,基本无需扩展。


接下来,初步设计一下备选方案并分析一下优缺点吧!


综上分析,前浪微博的信息队列系统需要高性能消息读取、高可用消息写入、高可用消息存储和读取。


这里有3种备选方案:


1、采用开源的Kafka。本身就是成熟的开源信息队列方案,性能好。


2、集群+MySQL存储。采用数据分散集群架构,集群中的服务器进行分组,每个分组包含一台主MySQL和一台备MySQL。备服务器只有在主服务器宕机的情况下才使用。

       

3、集群+自研存储方案。在备选方案2的情况下,将MySQL换为自主研发的文件存储和复制方案。


接下来,经过和开发、运维、测试和业务主管的讨论选择,我们列一个表格进行360°无死角评比。


       

书中拟定了方案2,并且详细说明了优缺点。


如果是你,你会怎么选择呢?


十四年工作经验结晶,只为了帮你落地架构实战


架构并不能流于表面,这本书告诉我们架构复杂度的来源以及设计流程之后,主要围绕高性能、高可用和可扩展三个方面进行了技术详解,以便在工作中实现方案落地


难能可贵的是,书中除了用实例教我们如何实现架构设计最优化,还用作者的切身经验教训告诉我们不能做什么,避免踩坑。


所以这本书具有相当强的实战性


一位有着六年工作经验的Java工程师这么评价书里的内容:“工作任务上,确实会遇到一些内容是专栏有提过的……一套流程下来,就清楚要做什么了,有了方向,再考虑具体用什么技术。其中确实有好多内容,是我在其他技术书籍上从没有看过的,从来没有!”


              《从零开始学架构》知识脑图截取


李运华当初构思这套方法论的目的就是为了指导员工更好地进行架构工作。既然出现在自己员工身上的问题是大同小异的,那就说明其他程序员也面临同样的苦恼。


为何不把这套方法论教给更多人,让他们也可以从中收益呢?


书中对架构设计流程,高可用、高性能和可扩展技术的面面俱到既是对自身工作经验的宝贵总结,也是指导更多架构师继往开来的葵花宝典。


《从零开始学架构》图书已经由极客商城独家预售,原价99,现价只需84元。


还有超值“图书+专栏”套装组合,原价199元,现价149元。


活动仅限3天!


现在下单,即可获得这套经过成功验证的方法论。

       

       点击图片即可购买


点击“阅读原文”,也可进入购买链接哦。

阅读8516
举报0
关注InfoQ微信号:infoqchina

用微信扫描二维码即可关注
声明

1、头条易读遵循行业规范,任何转载的稿件都会明确标注作者和来源;
2、本文内容来自“InfoQ”微信公众号,文章版权归InfoQ公众号所有。

评论
更多

文章来自于公众号:

InfoQ

微信号:infoqchina

邮箱qunxueyuan#163.com(将#换成@)
微信编辑器
免责声明
www.weixinyidu.com   免责声明
版权声明:本站收录微信公众号和微信文章内容全部来自于网络,仅供个人学习、研究或者欣赏使用。版权归原作者所有。禁止一切商业用途。其中内容并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现头条易读网站上有侵犯您的知识产权的内容,请与我们联系,我们会及时修改或删除。
本站声明:本站与腾讯微信、微信公众平台无任何关联,非腾讯微信官方网站。