引子
开始正文之前先来看两个前沿技术的架构。
1、SDN 软件定义网络
软件定义网络(Software Defined Network,SDN)是由美国斯坦福大学clean-slate课题研究组提出的一种新型网络创新架构,是网络虚拟化的一种实现方式。SDN技术的成功运用将使得网络更加智能、更开放、更简单,使得用户成为网络真正的主人。
其核心技术OpenFlow通过将网络设备的控制面与数据面分离开来,从而实现了网络流量的灵活控制,使网络作为管道变得更加智能,为核心网络及应用的创新提供了良好的平台。
2、服务网格
“服务网格” 是近年来非常火热的技术,其全托管的思维非常适合云原生场景。
“服务网格” 核心分为控制面与数据面:数据面主要是一个名为 Sidecar 的代理组件,它通过接收控制面发送的路由与控制信息来定向转发或处理数据。这样一些坐落在服务网格里的应用就将整个分布式逻辑交给了底层,自己不用关心了。一旦与底层解耦,灵活性大大增加,更符合云原生的标准。
WHAT
今天所聊的三平面分离架构是指控制平面、数据平面和管理平面三平面分离。古老而经典的“三大分离架构”因为有5/7的字重复了,为了避免大家混淆,这里也提一下:三大分离架构设计原则是指动静分离、前后端分离、读写分离。两者不在一个分析维度上。
三平面分离架构非常适合一些通信类服务、通道类服务。这是在网上搜到的一个交换机的三平面分离架构:
在互联网软件领域,网关类服务、渠道类服务、工作流类服务都非常合适这种架构。下面是一个API网关服务的架构:
WHY
简单科普下API网关的概念。随着微服务架构的流行,API网关也越来越受欢迎。在微服务体系架构中,将应用程序按垂直领域划分为几个、十几个、几百个微服务。客户端要和几百个服务对接,安全性和快速开发方面都有很大障碍。API网关可以充当使用这些微服务的客户端的中央接口,主要功能称为路由。下面是一个典型的API网关示意图:
API网关的基本作用如下:
常见的API网关有:nginx、spring cloud Zuul(最初是Netflix Zuul)。
一个基本的API网关需要进行安全控制,比如需要权限认证,权限认证可以分为控制面、数据面和管理面。控制面可以简单理解为判断是否有权限的逻辑,这段逻辑是固定的,修改频率很低。数据面可以简单理解为存储层,存储了认证信息,比如用户密码。管理面是用来维护认证信息的增删改查。
一个基本的API网关需要有限流功能。限流功能也可以分为控制面、数据面和管理面。控制面可以简单理解为判断是否要限流的逻辑,这段逻辑是固定的,修改频率很低。数据面可以简单理解为存储层,存储了需要对谁限流、阈值是多少等信息。管理面是用来维护限流信息的增删改查。
一个基本的API网关需要打印完善的日志用于监控。日志功能也可以分为控制面、数据面和管理面。控制面可以简单理解为打印日志的逻辑,这段逻辑一般只有其他功能发生改变时才会改变。数据面可以简单理解为存储层,存储到磁盘,后又被集中日志采集分析器采集走。管理面是根据日志做成的监控运维平台,可以展示请求趋势、请求量、成功率等。并可以配置相应的告警或者进行BI分析。
API网关还可以包含很多部分,这里不一一列举。每个部分都可以采用控制面、数据面和管理面三个平面分离的设计方法。因为控制面是修改频率很低的稳定态,侧重业务逻辑,高可用要求很高。数据面重心在于数据模型的合理抽象,抽象好了,数据模型也是稳定态。变化的是数据。数据会通过管理面来运维。管理面只是后台操作,高可用要求不高,可用很少的资源部署,允许宕机。晚上没有人操作时停掉服务都可以。
我们再来看一下这个API网关服务的架构,会发现这个架构是一个以维持系统稳定、快速支撑业务为核心的架构。合理的数据模型可以把新业务直接以数据的形式录入进来,无需任何代码修改。合理的数据模型如此之重要,所以有了MDD(模型驱动设计)的概念,这是题外话。
当系统非常稳定了,开发人员想做一些高大上的事情,本着no zuo no die(不作不死)的原则,核心逻辑是绝对不能动的。但是我们可以从外围入手,把数据获取出来做分析决策。比如路由分发逻辑,路由有可能暂时不可用,这时可以在管理平台搞一个路由探测功能,探测路由的可用性,不可用时自动进行路由切换。还可以在管理做做大数据分析,没准发现的那个规律又新引领了一个行业。
后记
三平面分离架构的普适性和我所了解的一个大女主宫斗剧套路的普适性可以做类比。大家仔细回忆一下,自己看过的80%以上的大女主宫斗剧是不是这样的剧情:
1、女主家庭可能遭到了变故,但必定她出身不俗
2、她会遇到自己最好的姐妹女二号,将来会更为她最大的对手
3、遇到了男主后,女二号变成反派
4、经过一系列斗争,女主好不好不一定,女二号一定下场很惨
5、完结撒花~~
这个大女主宫斗剧的套路由于从不同维度完美的符合了激烈冲突、对手相当等方法学理论,可认为一种最佳实践。
三平面分离架构也是事物正常运行的一种最佳实践,想想世界是怎么运转的:
1、控制平面:世界上不变的是法则,如:质量守恒、万有引力
2、数据平面:所有的事物是数据,如:人、地球、风
3、管理平面:天降陨石、天才的降生,世界大战……谁知道不是人作为小小的数据看不清全貌的大手在掌控呢?