架构 - 本质浅谈

  什么是架构?

  我的所理解的架构的含义应该是:定义一个完整系统中所需的组件以及实现组件间的交互策略。那么很明显,架构设计应该是考虑如何定义和划分好每一个组件,而后考虑它们是如何基于不一样的交互策略来实现咱们业务须要的场景。 前端

  什么是组件?

  我的认为,只要是隶属于完整系统中的组成部分,均可以当作是组件。这就意味着,架构中不只要考虑的是咱们常见的基础组件,包括应用服务,数据库,网络,物理机等,还有很大的可能须要引入包括缓存,MQ,容器,Nginx等技术组件来支撑业务的完整描述。数据库

  什么是框架?

  框架能够理解为组件实现的一种规范,好比咱们常常说的开源框架,这是能够拿来直接使用的或者在此基础上进行二次开发的,这些应该是关乎代码层面的,规范着组件的具体实现方式。缓存

  设计架构的出发点?

  对于设计而言,咱们首先须要知道,设计的这个架构是作什么的?因此对于咱们而言,首先要明确架构的做用是什么?安全

  架构是系统的骨架,经过各个组件的交互连接,支撑起对全部业务的总体抽象描述。因此在我的的理解中,全部架构的出发点都是为业务服务,因此咱们的架构设计的一个出发点是  -  业务服务器

  从日PV上千到日PV上亿的业务数量级演变,驱动着单体式系统到分布式系统的架构技术演变,技术不会无缘无故的出现和自驱动发展的,都是受到不一样的刺激因素的影响进行发展,就比如若是不是人类看到了火,才知道能够取火,那么人类是永远不会无缘无故发明火。而咱们架构的发展刚好是基于业务的驱动。  网络

  什么才是好的架构设计?

  上面已经说了,在架构设计过程当中当咱们系统已经明确了全部的组件,那么剩下的就是考虑的是组件和组件间的交互。架构

  这里的交互不只仅是理解为基于不一样的网络协议通信,还有好比组件间的缓存如何交互(分布式缓存),消息队列进行数据交互,是分布式调用仍是进程间调用。组件如何能进行良好的交互呢?这就是好的架构设计体现了。    负载均衡

  那么好的架构设计是什么呢?在认识层面上,我我的想要强调的是,咱们可能不少人对架构的认识有误区,认为架构是集合全部流行和高深的技术,这种认识是片面的,架构在强调其健壮性的同时,也须要讲究其易用性,就比如编码,好的编码并非你用了多深多高级的思想,而是写出能给人看得懂的代码,而不只仅是给机器看。框架

  在架构设计时咱们必须明确出发点,技术不是万能的,不要单纯为了技术而技术,技术是为业务服务的,单纯的技术引入必定要考虑这样是否会增长系统的复杂度(不少这样的作法都是对系统的复杂度引发指数级别的),因此在技术层面上看,我认为好的架构设计是如下几点:前端优化

  1. 能解决当下业务问题
  2. 能以优雅且可复用的方式解决当下全部业务问题
  3. 能在将来一段时间都能以第2种方式知足业务

  这其实就是健壮的系统体现的特性了,高可用、高性能,安全性、可扩展性、可维护性、可伸缩性,而这刚好是一个架构设计须要考虑的东西。  

  • 高性能:用户量的保证前提
        前端优化
        应用优化
        数据库优化
  • 高可用:保证服务器不宕机
        数据备份
        自动发布
        灰度发布
        监控报警
  • 可扩展:分布式系统,集群
        负载均衡
        缓存负载均衡
        分布式消息
        服务化
  • 安全性:预防网站的各类攻击
        XSS攻击
        SQL注入缓存负载均衡
        CSRF攻击
        防火墙漏洞                        

   什么是差的架构?

  差的架构其实你们均可以显而易见,就是若是你们都抱怨不少地方有牵一发而动全身,那这里的设计确定有问题,耦合性这些是能够经过不少设计思想和原则来避免的。

  我最想提到的是风险这点,是很重要也是很容易被你们忽略的一点,并且是起到指数级做用的。选择的方案再好,若是都是一些掌控不住的技术,那么风险就是无穷大,致使减号右侧无限趋近于0,最终的结果就是收益是负数,投入的成本打水漂,甚至还要加上其它额外的付出。

    

  架构师是作什么的?   

  架构师应该是基于本身对该行业的理解,对所要设计的系统可以给出整体设计进而进行全局把控的人,并能解决关键问题、指导其余人员落实设计。 

  好的架构师最重要的并不只仅是在技术方面的深厚积累,更多的是须要懂得在各类状况权衡各类影响因素以后选择合适的技术实现业务。架构师不会在肯定了架构蓝图以后任务就结束了,由于架构不是空中楼阁和水中镜月,架构是要落地的,若是架构师不着手去主导实现本身提出的恢宏蓝图,那这些好看的蓝图可否能妥当落地呢?

  在个人我的观察下,市面上比较多公司的架构师可能都比较局限于某些开源框架的应用以及我的的一个技术栈影响而对架构定了型,我碰到过这样的架构师,凭着对技术的狂热,把市面上流行的技术轻易引入项目中,这就会容易引入风险,这是咱们全部后续要往技术方面进阶的同窗都要注意的地方。

  总结

   咱们须要知道,没有完美的架构,只有合适的架构,架构是须要演变的。在当前的业务驱动下,架构的设计出发点是解决现有需求和问题,那么咱们的架构设计就止于此了吗?不是的,虽然咱们不提倡过分设计,可是若是做为架构师在这个业务所属的行业中没一点前瞻性的话,实际上是不合格的,公司须要的是架构师的技术能力以及经验,从而不会每次当业务进行演变时,致使架构翻天覆地的变化。

相关文章
相关标签/搜索