系统架构篇:传统架构和中台架构的辨析

1 评论 3169 浏览 12 收藏 17 分钟

自从头部互联网企业提出中台概念,很多企业都开始搭建中台系统,中台系统到底是什么和传统系统有哪些差异呢?本文通俗的聊一聊中台系统。

声明:本文非专业技术文章,重点在于通俗易懂。

一、传统架构和中台架构

1. 中台和PaaS的关系

先辨析下中台系统和PaaS系统的关系:

  • 从外部视角看:中台系统可以是SaaS系统也可以是PaaS系统,但是PaaS系统肯定使用中台系统的架构。
  • 从内部视角看:中台系统是改变了企业的组织架构和服务之间的组合关系。终端客户,感受并不直观。

2. 传统架构和中台架构的结构图

本图是传统系统架构和中台系统架构的简略示意图。

两者共同点和差异点为:

  • 都在虚拟机上运转,传统架构一般在一个虚拟机上运转,如设备算力不足,只能人工干预,部署新的服务。中台系统部署在容器系统中,一般是Docker系统,Docker系统支持自动拓展虚拟机数量,无需人工干预。
  • 都依托内部子服务对外提供功能,传统系统的子服务按照业务逻辑直接组织,内部层级混乱,拓展困难,无法实现针对性的算力拓展,如:只给服务1及其关联对象拓展5倍的算力,而不相关的服务不拓展。中台系统可以实现该功能。
  • 都可监控系统运行数据,传统系统一般在一个虚拟机上运转,直接使用虚拟机自带的工具集基本可以满足要求。中台系统的数据监控平台可以监控所有自动拓展的虚拟机,并能细颗粒度的干预系统运行。可以叠加预警机制和其他业务管理工具。
  • 都可以对系统干预,传统系统干预手段单一,比如:关机、重启。中台系统干预手段丰富,包括限流、预警等。
  • 中台系统微服务复用效率更高。
  • 都对外提供服务,由于以上优点,中台系统用户体验更好。
  • 中台系统的缺点是:系统复杂,开发周期长。如果企业业务没有复杂到一定程度,可以根据需要部分上线中台系统,逐步完善,无需急于求成。

本节剩余内容对部分模块详细展开:

3. 虚拟机及虚拟机管理

此处的虚拟机并不是狭义上的Java虚拟机,而是广义上的虚拟机。

现代计算机包括输入设备、输出设备、控制器、计算器、存储器五个模块,无论这些设备是直接的硬件实现或者建立在硬件之上的虚拟机如Java、Python等,都属于此处的虚拟机。

传统的框架,设计的计算机程序,都默认在一台虚拟机上运行,当时的计算需求相对较少,一台计算机能提供的算力能满足绝大部分的计算需要。大部分情况下,计算机的算力远远超过了用户对算力的需求,所以当时的思路主要集中在如何实现分时共享,所以诞生了分时操作系统。

随着互联网的发展,各行各业都开始实现互联网+,此时单台虚拟机算力不够的事情才开始凸显。比如春节抢票,几亿人几乎在同一时间点涌向12306,12306系统忽然产生巨大的计算需求,系统刚上线时,系统无法及时响应用户体验较差(这是以前,现在体验已经很不错了)。正是这种类似的需求催生了中台系统。

4. 服务

之前的文章提到过,抽象的说:

  • CPU的加法器、减法器等硬件实现的计算功能就是服务。
  • C语言的函数将计算器和变量包装到函数体里也是服务。
  • 面向对象的语言,是将多个函数和属性包装到对象里,也是服务。
  • 面向中台的编程,是将多个对象包装到一个docker里,多个docker在docker管理器的支撑下完成业务,也是服务。

所以服务一直都是存在的,只是在传统架构里,各种服务并没有装到相同类型的容器里,所以无法区分操作。

面向中台的编程则是将不同的对象打包到相同类型的多个容器里。通过Docker管理器可以实现仅对某些服务定向拓展或定向关闭。

5. 数据监控

a. 建模和监控的关系

系统设计需要先建模,建模就是使用接口、类图梳理出不同的对象以及对象之间的关系,类图相当于该系统的静态地图。图中标识了哪些是高山、湖泊、河流、农田,他们相互之间的关联关系。

数据监控就是监控不同的数据在这个地图上是如何流动的,轨迹是什么。没有数据监控就不知道静态的地图哪里需要调整,哪条河需要清淤、什么时间容易涨水、哪个路需要加宽等等。

b. 传统模型的监控需求

在计算量需求不高的时候,对数据监控的关注度并不高,只有在系统运行故障时,才需要还原轨迹,用以帮助定位问题节点。

传统的架构,程序和数据在固定数量设备上运转,运算量足够,所以数据监控的重要性并未凸显,但是当系统用户越来越多时,就容易出现堵塞,就需要人工干预。

道理十分简单,很多村道只有一个车道,路口也不安装红绿灯,很少发生交通事故,主要就是因为流量小。但是大城市的道路大部分是四车道或更多,不仅安装红绿灯,高峰时期交警同志还需要上岗执勤,就是因为流量太大,容易出现问题。

c. 中台系统的监控需求

在中台系统中,系统会自动记录每个对象及其依赖对象的创建时间、数量、内存占有率、CPU占有时间等。并能用可视化的方式将信息呈现给技术运维。

d. 两系统对比

传统模型能不能监控数据呢?

当然能,无论是哪个语言都有机制查看对象的运行轨迹,但是当一个业务启用2个、3个甚至更多虚拟机的时候,逐个查看以判断问题,效率就太低了。

并且PaaS平台的数据监控不仅是显示数据,还需要叠加预警机制、干预机制。比如:扩增虚拟机的数量、关闭非紧急服务以释放算力、限制访问、限制流量等等都可以基于数据监控采取干预措施。

6. 干预平台

图中传统架构使用的是干预命令、中台架构使用的是干预平台。

从名字上就可知,中台架构对干预的手段做了极大的升级。

传统的方式最常见的方式就是停机、重启,中台架构不仅支持停机、重启、还支持限流、拓展算力、关闭虚拟服务。并且允许拓展干预指令定时执行等,干预平台实际上是传统架构的干预命令的升级版。

7. 服务平台

服务平台指的是服务用户的平台,包括PC系统、APP系统、智能硬件设备、物联网设备等,两个架构对用户而言,用户可能感觉不到太大的差异,但是实际上中台系统有很多优点:

a. 系统开发更快

按照中台架构设计的系统,系统原有的服务容易复用,传统架构的方式难以实现复用。

传统架构的复用可能主要体现为代码的复用,拷贝、粘贴、调试,基于中台系统的架构无需对原有服务拷贝、粘贴,可直接复用,所以开发周期更短。

系统延伸性强,如果延伸到可视化设计和流程搭建,可以将设计任务转到到非技术人员手中。

b. 系统服务更稳定

中台架构是自动延伸的架构,可以随着访问量的增加,自动拓展资源,自动拓展的硬件资源可以是一台、十台、百台、千台,只要系统本身够健壮,用户可以获得更好的服务体验。

比如12306上买票,大家现在的购票体验,肯定比系统刚上线的时候好很多,基本没有被阻碍的感觉了。

c. 平台更智能

平台在保证自动延伸的前提上,数据并没有分散,还是可以统一访问,为数据挖掘提供了便利,可以使平台更智能。

d. 拓展性更强

更强的拓展性体现在两方面:

  • 硬件拓展性:基于IAAS平台,可以动态扩充硬件资源而不影响系统稳定性。
  • 软件拓展性:方便增加新的微服务,比如部署用户画像系统、用户推荐系统等。

二、两种架构的拓展缘起

为什么要从传统架构升级到中台架构,我们可以从以下设想的场景中推演:

声明:下文只是以12306系统举例子,仅是推演。

设想:12306火车购票系统上线了,春节高峰期,有两亿用户同时访问本系统。虽然事先已经做了预案,但是客户访问量还是超过了预期,此时你应该用什么技术手段应对哪?

1. 现状

系统基于传统架构设计,已提前预估了可能的访问量,并采取了对应的技术措施。

但是系统访问量还是远远超过了预期,如何解决?

  • 立刻改系统来不及,并且如何改,使用什么方案还不清楚。
  • 只能启用临时方案

2. 解决方案

方案至少有三个:

  • 方案一:多次放票,尽量不让访问需求集中在同一时间,错峰放票。(不展开)
  • 方案二:直接拓展硬件,比如加CPU、加内存,该方法有上限。实际执行有哪些限制,需要IT部门评估可行性。(不展开)
  • 方案三:再部署一套或两套独立的系统、独立的数据库。然后使用IP地址的路由技术实现:购买京广线的用户访问后台访问系统A,购买京沪线的用户访问系统B,购买其他路线的用户访问系统C。

最简单的是方案三,该方案可以解决本次问题,但是产生以下新问题:

a. 哪条线路的用户量和哪个系统能提供的计算量最匹配,没有实时的数据依据。

b. 系统不能自动切换,需要人工介入,人工响应慢。人工操作的时间=人反应的时间+机器响应时间。

c. 人工割裂的系统虽然能临时满足购票需求,但是导致数据割裂。导致很多与数据相关的服务无法拿到完整数据。

3. 根本方案

根本方案就是上云,并做中台系统改造:

a. 基于IAAS系统部署,可以动态扩展运算能力。每次新增的算力单位是一个虚拟机,因此虚拟机上运行的需要是具体的微服务,不能整体拓展。

b. 对微服务需要有管理平台,监控服务运行,并能提供干预。

三、服务平台拓展

服务平台有哪些可行的拓展,下文仅展开三个。

1. 可视化设计

产品经理最常使用的工具,肯定是Axure,使用Axure以及积累的元件母版,可以快速的在界面上画出:列表、单选框、复选框、菜单等等各种元素,可以使用动态面板或页面组织这些元素。

中台系统的可视化设计,就是将Axure的组件构建能力移植到Pass平台上,产品经理或者客户可以直接在Paas系统做设计。

PaaS平台的可视化设计比Axure设计的优势为:

  • 可视化平台界面元素都已关联真实数据,无需使用Axure的中继器做数据模拟。
  • 可视化平台的字体、颜色可以被预定义,保证了不同用户设计的风格一致。Axure不做限制,每个用户的设计风格可以不同。
  • 可视化平台的菜单、跳转等框架可以被预定义,用户只需关注界面交互逻辑。相当于在Axure原型的基础上调整,而不是重新构建新系统。
  • 可视化平台搭建的系统,搭建完成后可以直接交由测试,无需技术重新开发。

实际使用时,可视化设计可能会有各种各样的限制,这取决于Pass系统的设计特点和成熟度,理论上可以代替大部分的Axure功能。

2. 流程搭建

产品经理梳理业务常用的流程工具,包括 Visio、ProcessOn、Plantuml等,这些工具做出的流程图与Axure有个类似点,就是与业务系统并不直接联动。

可以将流程搭建的功能集成在PaaS平台上,与传统流程工具相比的特点为:

  • 优势:流程搭建器已关联真实业务对象,通过该工具可以直接组织业务对象的功能和动作,开发周期短。
  • 劣势:流程搭建器,约束更多,自由度低。

3. 叠加人工智能工具

传统方式做AI研究获取数据集的方式包括:excel表格、数据库直接获取、压缩包,然后使用Python自带的数学模型工具做研究。

PaaS平台上获取数据集的方式更简单,直接简单指令就可以获取平台上所需的数据集,并且可以对潜在的数据模型做包装,业务人员使用包装后的工具会比直接使用Python工具效率更高。

平台也支持集成Python工具,对新的模型允许使用Python工具直接计算。

本文由 @我是产品张 原创发布于人人都是产品经理。未经许可,禁止转载

题图来自Unsplash,基于CC0协议

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 这个是面向产品经理的文章吗?感觉有一些难度

    来自广东 回复