一、为什么系统架构需要演进
随着互联网的爆炸性发展、网站应用规模不断扩大,且硬件设施也在发展、需求更加多样化、开发人员增加、计算机理论及技术的发展,系统架构也在随之进行变化。
二、系统架构的演变
1.单体架构
优点:性能最高,冗余小
缺点:debug困难,模块相互影响,开发流程长。
2.垂直应用架构
特点:按照业务线垂直划分。
优点:业务独立开发维护。
缺点:不同业务存在冗余,每个业务还是单体。
3.分布式架构
特点:抽出了与业务无关的公共模块。
优点:具有与业务无关的独立服务。
缺点:服务模块bug可导致全站瘫痪,调用关系复杂,不同服务冗余。
4.SOA架构
特点:面向服务。
优点:服务独立。
缺点:整个系统设计是中心化的,需要从上到下设计,重构困难。
5.微服务架构
特点:彻底的服务化。
优点:开发效率高,业务独立设计,自下而上设计模式,故障隔离。
缺点:治理、运维困难,观测具有挑战性,安全性难以控制,使用分布式系统。
微服务架构核心要素
服务治理(服务注册,服务发现,负载均衡...);可观测性(日志采集,日志分析...);安全(身份验证,认证授权...)
微服务架构基本概念
服务(service):一组具有相同逻辑的运行实体。
实例(instance):一个服务中,每个运行实体即为一个实例。
实例与进程的关系:两者无必然关系,可以一个实例对应多个进程,但反之不常见。
集群(cluster):通常指服务内部的逻辑划分,包含多个实例。
常见的实例承载形式:进程、VM、k8s、pod……
有状态/无状态服务:服务的实例是否存储了可持久化的数据。
服务间通信:对于单体通信,不同模块通信只是简单的函数调用,对于微服务,服务间通信意味着网络传输。
流量特征:统一网关入口;内网通信多数采用RPC;网状调用链路。