首页 > 数据库 > 数据库开发技术 > 互联网架构模板:“平台”技术
当业务规模较小时,运维、测试、数据分析、管理等支撑功能通常由各个系统或团队独立完成。随着业务规模扩大,系统复杂度增加,子系统数量增多,如果继续采取独立完成这些支撑功能的方式,会导致大量重复工作。因此,我们自然会想到将这些支撑功能平台化,以避免重复造轮子,减少不规范带来的沟通和协作成本。
运维平台的核心职责可以分为四大部分:配置、部署、监控和应急,每个职责对应系统生命周期的一个阶段,如下图所示。
配置:主要负责资源管理,例如机器管理、IP地址管理、虚拟机管理等。
部署:主要负责将系统发布到线上,包括包管理、灰度发布管理和回滚等。
监控:主要负责收集系统上线后的运行数据并进行监控,以便及时发现和解决问题。
应急:主要负责处理系统故障,例如停止程序、下线故障机器和切换IP等。
运维平台的核心设计要素是“四化”:标准化、平台化、自动化、可视化。
标准化
需要制定运维标准,规范配置管理、部署流程、监控指标和应急能力等,让各系统按照统一的运维标准来实现,避免不同系统采用不同的处理方式。标准化是运维平台的基础,没有标准化就无法建立有效的运维平台。那么,如果某个系统无法自行改造来满足运维标准该怎么办呢?常见的解决方法是不对系统本身进行改造,而是通过中间层来完成规范适配。例如,某个系统通过RESTful接口查询当前的性能指标,而运维标准要求通过日志定时上报性能数据,那么可以编写一个定时程序访问RESTful接口获取性能数据,然后转换为日志格式上报到运维平台。
2. 平台化
传统的手工运维方式需要大量人力投入,效率低且容易出错。因此,需要在运维标准化的基础上,将相关操作集成到运维平台中,通过平台来完成运维工作。
运维平台的优势有:
运维标准可以固化到平台中,运维人员无需死记硬背运维标准。
运维平台提供简便的操作,相比之下人工操作低效且容易出错。
运维平台具备可复用性,一套运维平台可以支持数百甚至上千个业务系统。
3. 自动化
传统的手工运维方式需要大量人力投入,效率低且容易出错。因此,需要在运维标准化的基础上,将相关操作集成到运维平台中,通过平台来完成运维工作。
运维平台的优势有:
运维标准可以固化到平台中,运维人员无需死记硬背运维标准。
运维平台提供简便的操作,相比之下人工操作低效且容易出错。
运维平台具备可复用性,一套运维平台可以支持数百甚至上千个业务系统。
4. 可视化
运维平台拥有大量数据,如果完全依赖人工查询和判断,效率会非常低。尤其是在故障应急时,时间至关重要,解决问题分秒必争,减少一分钟的处理时间可能挽回数十万元的损失。可视化的主要目的是提升数据查看的效率。
可视化的原理类似于汽车仪表盘。如果数据只是以一连串数字显示在屏幕上,大多数人会觉得眼花缭乱,而且很难将数据与具体情况联系起来。而有了仪表盘,通过指针的偏离幅度和指针指向区域的颜色,可以一目了然地判断当前状态是低速、中速还是高速。
可视化相比简单的数据罗列,具备下面这些优点:
能够直观地看到数据的相关属性,例如,汽车仪表盘中的数据最小值是 0,最大是 100,单位是 MPH。
能够将数据的含义展示出来,例如汽车仪表盘中不同速度的颜色指示。
能够将关联数据整合一起展示,例如汽车仪表盘的速度和里程。

测试平台的核心职责自然是测试,包括单元测试、集成测试、接口测试和性能测试等,都可以在测试平台上完成。
测试平台的主要目的是提高测试效率,从而提升产品质量,其设计关键在于自动化。传统的测试方式依赖测试人员手工执行测试用例,效率低且重复工作多。通过测试平台提供的自动化能力,测试用例可以反复执行,无需人工干预,大大提升了测试效率。
为了达到“自动化”的目标,测试平台的基本架构如下图所示。

用例管理
测试自动化的主要手段是通过脚本或代码进行测试。例如,单元测试用例是代码编写的,接口测试用例可以用 Python 编写,可靠性测试用例可以用 Shell 编写。为了能够重复执行这些测试用例,测试平台需要对它们进行管理,管理维度包括业务、系统、测试类型和用例代码。例如,网购业务的订单系统的接口测试用例。
资源管理
测试用例需要在具体的运行环境中才能执行,运行环境包括硬件(如服务器、手机、平板电脑等)、软件(如操作系统、数据库、Java 虚拟机等)和业务系统(被测试的系统)。
除了性能测试,一般的自动化测试对性能要求不高。因此,为了提升资源利用率,大多数测试平台会使用虚拟化技术,如虚拟机和 Docker 等,来充分利用硬件资源。
任务管理
任务管理的主要职责是将测试用例分配到具体的资源上执行,并跟踪任务的执行情况。任务管理是测试平台设计的核心,它将测试平台的各个部分串联起来,完成自动化测试。
数据管理
测试任务执行完成后,需要记录各种相关数据(例如,执行时间、执行结果、用例执行期间的 CPU 和内存占用情况等)。这些数据具有以下作用:
展示当前用例的执行情况。
作为历史数据,方便后续测试与历史数据进行对比,发现明显的变化趋势。例如,某个版本后单元测试覆盖率从 90% 下降到 70%。
作为大数据的一部分,可以基于测试任务数据进行一些数据挖掘。例如,某个业务一年执行了 10000 个用例测试,另一个业务只执行了 1000 个用例测试,而两个业务的规模和复杂度差不多,为何差异这么大?
数据平台的核心职责主要包括三部分:数据管理、数据分析和数据应用。每一部分又包含更多的细分领域,详细的数据平台架构如下图所示。

数据管理
数据管理涵盖数据采集、数据存储、数据访问和数据安全四个核心职责,是数据平台的基础功能。
数据采集:从业务系统收集各类数据,如日志、用户行为、业务数据等,并将这些数据传送到数据平台。
数据存储:将从业务系统采集的数据存储在数据平台中,以便后续数据分析使用。
数据访问:对外提供各种协议用于读写数据,如SQL、Hive、Key-Value等读写协议。
数据安全:通常情况下,数据平台是多个业务共享的。部分业务的敏感数据需要保护,以防被其他业务读取或修改,因此需要设计数据安全策略来保护数据。
数据分析
数据分析包括数据统计、数据挖掘、机器学习和深度学习等细分领域。
数据统计:根据原始数据统计相关总览数据,如PV、UV、交易额等。
数据挖掘:为与机器学习和深度学习区分开来,这里指传统的数据挖掘方式。例如,有经验的数据分析人员基于数据仓库构建规则来分析数据,发现隐含的规律、现象或问题。经典案例是沃尔玛发现啤酒与尿布的关联关系。
机器学习和深度学习:这些是数据挖掘的一种具体实现方式。由于其实现方式与传统数据挖掘方式差异较大,因此数据平台在实现机器学习和深度学习时,需要针对其独立设计。
数据应用
数据应用非常广泛,包括在线业务和离线业务。例如,推荐系统和广告属于在线应用,报表生成、欺诈检测和异常检测等属于离线应用。
数据应用能发挥价值的前提是具备“大数据”。只有当数据规模达到一定程度时,基于数据的分析和挖掘才能发现有价值的规律、现象或问题。如果数据规模不大,通常只需做好数据统计即可,特别是对于许多初创企业,无需一开始就参考BAT构建自己的数据平台。
管理平台的核心职责就是权限管理,无论是业务系统(例如,淘宝网)、中间件系统(例如,消息队列 Kafka),还是平台系统(例如,运维平台),都需要进行管理。如果每个系统都自己来实现权限管理,效率太低,重复工作很多,因此需要统一的管理平台来管理所有的系统的权限。

身份认证
确认当前操作人员的身份,防止非法人员进入系统。例如,不允许匿名用户访问系统。为了避免每个系统独自管理用户,通常会使用企业账号进行统一认证和登录。
权限控制
根据操作人员的身份确定其操作权限,防止未经授权的人员进行操作。例如,不允许研发人员访问财务系统查看其他人的工资。
原文作者:二进制跳动;如有侵权,请联系管理员删除。