前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >享知行·思考:从架构设计流程学习方法论,让手中多一把锤子

享知行·思考:从架构设计流程学习方法论,让手中多一把锤子

作者头像
用户4361942
发布2019-05-24 17:01:19
5520
发布2019-05-24 17:01:19
举报
文章被收录于专栏:java程序员思维java程序员思维

最近在看《从零开始学架构》,深入浅出通俗易懂,值得一看。作者将架构设计分为4个步骤,第一步:有的放矢-识别复杂度,解决复杂度带来的问题,是架构设计的本质。第二步:按图索骥-设计备选方案,利用备份冗余思维,多设计几套方案,不只是一种选择。第三步:深思熟虑-评估和选择备选方案,多维多角度的去比较方案的优劣,根据实际情况选择最合适的方案。第四步:精雕细琢-详细方案设计,落实方案的细节。

识别复杂度,明确目标和要解决的问题。流量太大,服务器经常宕机?某个功能引起整个应用不可用?数据库表数据太大,读写速度太慢?全文搜索很慢?分布式事务问题?

设计备选方案,多一种选择。当数据库单台达到瓶颈了,可以选择读写分离,也可以选择分库分表,分表又可以垂直分和水平分,水平分又有几种方案,可以使用以MySQL-proxy为基础,360开源的Atlas,Mycat也是一种不错的选择。单台服务器性能达到瓶颈,可以通过负载均衡,可以选择软件负载nginx也可以选择硬件负载F5。当通过加机器已经解决不了问题的时候,可以选择服务拆分。

360度评估和选择备选方案,从性能、复杂度、成本、可扩展、可用性、稳定性、安全性等纬度进行对比。一个刚创立的公司,可能最需要的是一个能快速上线的系统,这个系统应该尽量简单,成本足够小,更看重复杂度和成本。对于一个成熟的大公司,如BAT,可能要求的是高可用,高性能,大公司有的是资源,成本所占权重较小。对于银行来说安全更加重要,因为每一步操作都可能涉及金钱交易。选择哪个方案不是因为方案优的个数越多,也不是因为哪个方案技术更牛,也不是因为哪个方案我们更熟悉,更不是因为领导觉得哪个更好,最重要的是结合实际情况,选择最合适的。

详细方案设计,一旦选好方案,比如说要进行分库分表,分几个库,分多少张表,怎么分,怎么路由,是范围路由还是Hash路由,以后怎么扩展等等一系列的问题都要想清楚和设计好。

架构设计流程是一种方法,不只是适用于做架构设计,也同样适用于那些对自己影响较大又比较困难做决策的场景。比如最近同事讨论小孩上哪个幼儿园的问题,可以使用这个流程,列出多个幼儿园作为备选方案,然后对方案进行距离、学费、师资力量、升学率等多维度对比,选择一个最合适的方案,然后对这个方案进行细化,小朋友怎么去学校,怎么帮小朋友适应新环境等等。朋友最近在面临新工作选择,也可以使用这个方法,拿到的offer就是备选方案,然后对每种方案从薪资待遇、公司规模、对职业规划的影响程度、公司发展前景、公司距离等方面,根据自身情况对某个属性进行相应的加权,选择一个最合适的方案,选择好后需要详细设计方案,怎么去公司、怎么去适应新环境(同事相处、新的业务)等。不是有了这把锤子就能解决所有的问题,毕竟不是万能的,如果点个外卖、买件衣服都使用这个方法,那不是解决问题,而是带来新的问题。

学习架构设计流程的方法论,让手中多一把锤子,但不是所有的问题都是钉子,只能作为一种补充,面对问题的时候多一种选择。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 java程序员思维 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档