当前位置: 首页 > 科技观察

我理解的架构看这篇文章就对了

时间:2023-03-17 23:49:08 科技观察

什么是架构?我理解的架构的含义应该是:定义一个完整的系统所需要的组件,并实现组件之间的交互策略。显然,架构设计应该考虑如何定义和划分每个组件,然后考虑它们如何基于不同的交互策略来实现我们的业务需求。什么是组件?我个人认为只要是一个完整系统的一部分,就可以算是一个组件。这意味着在架构上不仅要考虑我们常见的基础组件,包括应用服务、数据库、网络、物理机等,还有很大的可能包括缓存、MQ、容器、Nginx等技术组件.需要介绍的配套业务的完整说明。什么是框架?框架可以理解为组件实现的规范,比如我们常说的开源框架,可以直接使用,也可以在其基础上开发。这些应该和代码级别有关。指定组件的具体实现。架构设计的出发点?对于设计,我们首先要知道设计出来的架构是做什么的?那么对于我们来说,首先要明确架构的作用是什么?架构是系统的骨架,通过各个组件的交互链接支撑所有业务的整体抽象描述。所以,在我个人的理解中,所有架构的出发点都是为业务服务的,所以我们架构设计的出发点之一就是——业务!业务量级演进,从日均千级PV到亿级PV,驱动单体系统谈到分布式系统架构技术的演进,技术不会无缘无故出现自驱动开发,而将是在不同刺激的影响下发展。人类永远不会无缘无故发明火。我们架构的发展恰好是由业务驱动的。什么是好的架构设计?上面说过,当我们的系统在架构设计过程中定义了所有的组件之后,剩下的就是考虑组件与组件之间的交互了。这里的交互不仅理解为基于不同网络协议的通信,还包括组件之间的缓存(分布式缓存)、消息队列进行数据交互的方式,无论是分布式调用还是进程间调用。组件如何交互良好?这就是好的建筑设计的体现。那么什么是好的架构设计呢?1、可以解决目前的业务问题。2.以优雅、可重用的方式解决当前所有的业务问题。3、可以满足以后第二种方式的业务。是健壮系统的特性,高可用、高性能、安全性、可扩展性、可维护性、可伸缩性,而这恰好是架构设计中需要考虑的东西。高性能:保证用户数的前提,前端优化,应用优化,数据库优化,高可用:保证服务器不宕机,数据备份,自动发布灰度发布,监控告警扩展性:分布式系统、集群负载均衡、缓存负载均衡、分布式消息服务安全性:防止网站各种攻击XSS攻击SQL注入缓存负载均衡CSRF攻击防火墙漏洞这里的设计肯定有问题。耦合可以通过很多设计思想和原则来避免。我最想提的是风险点,这个点很重要也很容易被大家忽视,而且起着指数级的作用。不管解决方案有多好,如果是一些不可控的技术,那么风险就是无穷大,导致负号右边无限趋近于0。加上其他额外费用。建筑师做什么的?架构师应该根据自己对行业的理解,对所要设计的系统进行总体设计,进而掌控全局,并能解决关键问题并指导其他人员实施设计。一个好的架构师最重要的不仅仅是技术上的深厚积累,还需要懂得在各种情况下权衡各种影响因素后,如何选择合适的技术来实现业务。建筑师在确定建筑蓝图后不会结束任务,因为建筑不是空中楼阁,也不是水中明镜。能否稳步实施?根据我个人的观察,市面上很多公司的架构师可能受限于某些开源框架的应用和个人技术栈的影响来塑造架构。我遇到过这样的架构师,凭借着对技术的热情,很容易将市场上流行的技术引入到项目中,这样就很容易引入风险。这是我们所有想要技术进步的同学都应该注意的。综上所述,我们要知道,没有完美的架构,只有适合的架构,架构需要不断演进。在当前业务的驱动下,架构设计的出发点是解决现有的需求和问题,那么我们的架构设计是否就此止步?不,虽然我们不提倡过度设计,但是如果你是这个行业的架构师,如果没有行业前瞻性,其实是不合格的。公司需要的是架构师的技术能力和经验,这样才不会在每次业务演进时都引起结构的翻天覆地的变化。