技术架构常用模式
技术架构模式基于经常出现的问题,给出通用、可复用的技术方案。技术架构常用模式既包括一些传统模式,如分层架构、事件驱动架构、SOA,也包括一些新兴模式,如微服务架构、上云架构、云原生架构等。企业需要结合自身业务和技术的实际特点,选择合适的技术架构模式。
单体模式
所有业务逻辑全部在一套系统中,是大而全的体系,没有服务化,没有分层,单机集中式数据库,存储过程复杂。这种架构适用于业务发展早期,这时产品的完善性、系统扩展性、部署规模的要求都不高。很多企业在发展初期,在技术方面的投入并不大,主要以外采系统为主,包括CRM、MES、ERP、HR、PLM、SCM等系统,各个系统各自独立,各自有单独的数据库及权限管理。单体模式的缺点是造成“烟囱式”发展,信息化协同不便,业务需求响应有限。
分层架构
分层架构是一种客户端/服务器端架构,将系统软件分成了多个层次,通过层次的抽象提供相对便捷的扩展和复用能力。每一层都是围绕一种功能的抽象,各负其责,有利于系统开发、测试、管理和维护。最常使用的分层架构是MVC三层架构,将模型、表现、控制进行分离,除此之外,后文介绍的很多架构模式本质上是分层架构的进一步演进。
事件驱动架构
事件驱动架构(EDA)是使用解耦、单一用途的事件处理组件来异步接收和处理事件的架构。一个事件驱动系统一般由事件消费者和事件产生者组成。事件驱动在分布式系统、异步处理系统、高并发削峰填谷等场景中广泛使用。事件驱动架构当然也增加了一定的复杂度,包括事务性、数据一致性、事件顺序、重复消费等方面。
微内核架构
微内核架构(Microkernel Architecture)是一种面向功能进行拆分的可扩展架构,有时也可以称作插件化架构,比如Eclipse类型的IDE、UNIX操作系统,都是参照微内核架构设计的。微内核主要分为核心系统和插件系统,核心系统拥有能使应用运行的最小功能逻辑,插件系统是独立存在的系统,包含特殊的处理逻辑、额外的功能和定制的代码,能拓展核心系统业务功能。微内核架构设计的难点是核心系统的通用性、插件系统的扩展性和灵活性。
RPC架构
RPC架构是远程过程调用架构。当时,很多企业采购了ESB和数据交换工具,将不同的流程打通,做到信息拉通、数据集成、协同管理。RPC框架主要包括网络通信、序列化或反序列化、传输协议和服务调用等组件。远程服务提供者以某种形式提供服务,调用相关信息,远程代理对象通过动态代理拦截机制生成远程服务的本地代理,让远程调用在使用上和本地调用一样。网络通信通过序列化或反序列化方式对网络传输数据进行有效的传输。服务调用可以分为同步调用、异步调用等方式。传输协议可以使用TCP和HTTP。Dubbo是RPC架构典型的分布式框架代表。
SOA
SOA通过服务化技术进行系统的拆分,进而把一个单一的大系统按逻辑拆分成不同的子系统,通过服务接口来通信,是面向服务的设计模式,最终需要总线集成服务。过程中引入中间件、消息、分布式数据库等技术组件,通过ESB与企业系统进行集成和交互。这种架构适用于业务发展中期,这时企业对产品的完善性和精细性有了一定的需求,团队也越来越大,扩展性主要依赖服务化的能力。
微服务架构
微服务架构本质上是SOA的演进,在被Martin Fowler等人推广后,由于其实用性,越来越受到大家的重视。微服务由一组小型自治服务组成,每个服务实现单个业务功能,每个服务是小型的、独立的、松耦合的,每个服务代码库都是独立的,每个服务负责持久化自己的数据或者外部状态,通过使用定义良好的API进行通信。微服务架构的好处很多,比如提高研发效率、支持更专注的团队、提高可扩展性、隔离业务和数据、有更小的代码基线;同时带来一些挑战,比如复杂度高、部署和运维困难、数据一致性问题、版本控制问题、组织文化考验等。
大数据架构
大数据架构是数据架构的一种,其主要进行大数据的技术处理和分析海量数据。该架构是大数据解决方案的蓝图,处理的工作包括批量处理大数据源、实时处理数据、预测分析及机器学习。大数据架构的优势是应对大规模数据处理,通过并行度提升性能,弹性伸缩,与现有方案(如物联网、BI等)互通;其挑战在于相关大数据技术、团队技能储备及数据安全等问题。
上云架构
云计算已成为社会的公共的基础设施,企业上云也被人们广泛接受。在企业数字化转型过程中,首先应使用云作为企业的技术基础设施,并逐步应用云计算的红利,逐步将应用迁移到云上,这就诞生了上云架构。上云架构有很多优势,比如极致的弹性、降本增效、加速IT设施发展、提升系统稳定性、加强资源整合等;其挑战是对企业的技术团队能力要求高、整体架构与企业的对接和整合不容易等。
云原生架构
云原生是云计算的“下一站”,云原生的代表技术有容器、服务网格、微服务、不可变基础设施和声明式API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。运行在其上的应用被称作云原生应用,云原生架构是依赖云产品和云原生技术构建的IT架构,生于云、长于云并最大化运用云的能力,让开发者聚焦于业务本身。云原生的设计理念是面向分布式(Distribution)、配置(Configuration)、韧性(Resistancy)、弹性(Elasticity)、交付(Delivery)、性能(Performance)、自动化(Automation)、诊断性(Diagnosability)及安全性(Security)等方面。