|
随着业务的不断发展,业务架构也越来越复杂。传统的功能被拆分成不同的模块,出现了中间件、中台等概念。代理服务、负载均衡、数据库分表、异地容灾、缓存、CDN、消息队列、安全防护等技术应用越来越广泛,增加了Web开发和运维的复杂度。
客户端的形态越来越多,除了Web之外iOS、Android等其他场景也出现在Web服务的客户端场景。
较早的关系型数据库MySQL、PostgreSQL等已经不能满足需求,出现了Redis/Memcached缓存数据库等一类满足特定需求的数据库。
为了满足特定的业务需求,出现了Lucene/Solr/Elasticsearch搜索应用服务器,Kafka/RabbitMQ/ZeroMQ消息系统,Spark计算引擎,Hive数据仓库平台等不同的基础架构。
1.1.3.1. 中间件
中间件是独立的软件程序,用于管理计算资源和网络通信。常用的功能有过滤IP、合并接口、合并端口、路由、权限校验、负载均衡、反向代理等。
1.1.3.2. 分布式
随着数据量的不断提高,单台设备难以承载这样的访问量,同时不同功能也被拆分到不同的应用中,于是出现了提高业务复用及整合的分布式服务框架(RPC)。
1.1.4. 云服务
云计算诞生之前,大部分计算资源是处于“裸金属”状态的物理机,运维人员选择对应规格的硬件,建设机房的 IDC 网络,完成服务的提供,投入硬件基础建设和维护的成本很高。云服务出现之后,使用者可以直接购买云主机,基础设施由供应商管理,这种方式也被称作 IaaS (Infrastructure-as-a-Service) 。
随着架构的继续发展,应用的运行更加细粒度,部署环境容器化,各个功能拆成微服务或是Serverless的架构。
1.1.4.1. Serverless
Serverless 架构由两部分组成,即 Faas (Function-as-a-Service) 和 BaaS (Backend-as-a-Service) 。
FaaS是运行平台,用户上传需要执行的逻辑函数如一些定时任务、数据处理任务等到云函数平台,配置执行条件触发器、路由等等,就可以通过云平台完成函数的执行。
BaaS包含了后端服务组件,它基于 API 完成第三方服务,主要是数据库、对象存储、消息队列、日志服务等等。
1.1.4.2. 微服务
微服务起源于2005年Peter Rodgers博士在云端运算博览会提出的微Web服务 (Micro-Web-Service),根本思想类似于Unix的管道设计理念。2014年,由Martin Fowler与 James Lewis共同提出了微服务的概念,定义了微服务架构风格是一种通过一套小型服务来开发单个应用的方法,每个服务运行在自己的进程中,并通过轻量级的机制进行通讯 (HTTP API) 。
微服务是一种应用于组件设计和部署架构的软件架构风格。它利用模块化的方式组合出复杂的大型应用程序:
各个服务功能内聚,实现与接口分离。
各个服务高度自治、相互解耦,可以独立进行部署、版本控制和容量伸缩。
各个服务之间通过 API 的方式进行通信。
各个服务拥有独立的状态,并且只能通过服务本身来对其进行访问。
随着微服务技术的不断发展,这种思想也被应用到了前端。2018年,第一个微前端工具single-spa出现在github。而后出现了基于single-spa的框架qiankun。
1.1.4.3. API网关
API网关是一个服务器,客户端只需要使用简单的访问方式,统一访问API网关,由API网关来代理对后端服务的访问,同时由于服务治理特性统一放到API网关上面,服务治理特性的变更可以做到对客户端透明,一定程度上实现了服务治理等基础特性和业务服务的解耦,服务治理特性的升级也比较容易实现。
|
|