前者从科学的技术领域出发来解决软件创造中的工程技术问题,后者从人类的管理活动出发发展了软件工程的组织管理方式。两者出发的领域不同,以及它们的服务对象也有所不同。架构师对技术的要求比程序员的要求要高一些。程序员对大家熟知的程度更为广泛。是否有能力实现软件架构的设计,是两者最主要的差距。高手往往不多,因此,不断学习才能有上升的空间。
架构(Architecture)一词源于建筑领域,其本身就是建筑的意思,也是体系结构的意思。维基百科英文版里对 Architecture 的解释是:规划、设计和建造建筑物的过程及产物。鉴于软件工程与建筑工程一样是一项系统的工程性工作,引入到计算机领域后,软件架构就成为了描述软件规划设计技术的专有名词。特别地,软件架构师一词在英文里,和建筑师也是同一个词(Architect)。
自从软件工程产生以来,架构设计和过程管理一直是软件领域 DNA 的双螺旋,前者从科学的技术领域出发来解决软件创造中的工程技术问题,后者从人类的管理活动出发发展了软件工程的组织管理方式。
高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。
提高系统并发能力的方式,方法论上主要有两种:垂直扩展(Scale Up)与水平扩展(Scale Out)。前者垂直扩展可以通过提升单机硬件性能,或者提升单机架构性能,来提高并发性,但单机性能总是有极限的,互联网分布式架构设计高并发终极解决方案还是后者:水平扩展。
而有能力实现软件架构的设计,正是程序员和架构师之间最重要的差距。那么在实际的业务项目中,我们该怎么选择合适的分布式架构?该怎么处理定位中遇到的问题呢?或许只有从不断学习中才能获得真知。想要了解更多信息,请继续关注中培伟业。