1.3.1 物理架构
物理架构关注的对象是底层系统、网络通信、服务器、云服务等基础设施。物理架构设计主要解决以下3个问题。
• 软件系统在硬件上的集成策略、部署策略、运维策略。
• 不同基础设施(特别是跨机房、跨环境、跨集群)间的数据、服务、功能的联系、通信、共享和调用。
• 基础设施的优化、升级、扩展,在高可用、高性能、容错性、安全性、经济性、可伸缩性间平衡策略。
物理架构设计涉及的要素包括物理选型、网络拓扑、集成部署。
1.物理选型
物理选型是指确定系统运行的承载主体,可分为物理机和云服务两种。
(1)物理机。
物理机即采购实体物理服务器,按照是否进行虚拟化,可分为物理机服务和虚拟化服务两类。
• 物理机服务即系统部署在原生物理服务器上,如直接在系统上部署计算服务。
• 虚拟化服务即系统部署在虚拟机技术产生的对象中,按照虚拟化技术的不同,又可细分为虚拟机和容器两类。虚拟机是对操作系统级别的隔离,主要技术包括VMWare、OpenStack等;容器是对应用进程级别的隔离,主要技术包括Docker和K8s(Kubernetes)。虚拟机和容器的区别如表1-1所示。
表1-1 虚拟机和容器的区别
物理机服务模式中涉及的物理服务器属于IT资产,在自主性、本地化集成等方面更有优势,因此更受传统企业的青睐。在选择物理机时,一般遵循的原则是网络相同、品牌相同、型号相同、配置相同,这样有利于部署、开发、运维等工作的开展。
虚拟化服务模式主要适用于物理资源冗余、跨平台、跨环境、应用进程隔离、服务模块化拆分等场景,目标是保持资源、功能、应用或数据的相对或绝对隔离。该模式在互联网企业中应用广泛,特别是剩余资源充足、业务场景众多、业务模块复杂、系统环境多样的企业。
(2)云服务。
云服务即采购第三方云服务的基础物理架构,主要包括IaaS(Infrastructure as a Service,基础设施即服务)和PaaS(Platform as a Service,平台即服务)两种模式,具体包括如下3类产品服务模式。
• 云服务器:采购云服务中的服务器。以阿里云的云服务器ECS(Elastic Compute Service)为例,相对于传统的物理机,它具有部署便捷、运维方便、成本弹性控制、节点灵活扩展等诸多优势。这种模式具备按需采购不同配置和数量的服务器,以及支持弹性扩展和配置升/降级等优点,因此适合企业初期探索性或POC类项目中最小化成本投入的应用需求,以及具有稳定需求场景下的长期稳定使用。
• 软硬件一体化云服务:将特定的软件或云服务集成到云服务器中,实现一体化采购模式。以阿里云的EMR(E-MapReduce)为例。它是运行在阿里云平台(ECS)上的一种用于大数据处理的系统解决方案,是在EC2的基础上,直接集成EMR服务来实现应用环境和服务的自动化部署、运维和管理的,具有“开箱即用”的特点(启动EC2和相关服务后,系统会自动初始化大数据系统正常工作的基础环境)。EMR适合于任何Hadoop、Spark等大数据系统支持的应用,相对于传统模式,即先购买物理机或云服务器再自行部署Hadoop及Spark的方式,EMR在弹性扩展、系统初始化、成本管理、组件可靠性、系统易用性等方面更有优势。
• ServerLess(无服务器):无须购买和管理服务器而直接部署应用的云服务。以阿里云的函数计算FC(Function Compute)为例。它无须采购服务器等基础设施,只需编写代码并上传,函数计算会自动准备好计算资源并执行代码。这种模式具有应用导向、弹性扩展、按需启动、按需付费等特点,因此应用部署更加灵活。
物理机和云服务器(含软硬件一体化云服务)的配置评估主要参考如下因素。
• CPU:如果是计算密集型任务,那么需要重点考虑主频/睿频高、多核心的CPU。
• 内存:在涉及计算密集型任务(如算法类任务)、内存数据库(如Redis)、数据库大规模运算(如Faiss的向量检索)时,需要较高的内存配置。
• 硬盘:主要是硬盘类型,SSD更快、HHD更便宜;而转速则越高越好。
• 带宽:多集群环境的数据交互、多服务器的数据I/O对带宽要求较高,特别是实时数据存取(如HBase、Redis)、实时数据交互服务(数据API服务)场景。
• GPU:在涉及深度学习、神经网络等应用时,GPU比CPU的计算效率高。
2.网络拓扑
网络拓扑是在不同的网络域中设备的物理布局或逻辑布局,体现了不同设备间通过何种网络方式相互联系及其应用、角色、作用等,用于明确设备相关的基础状态、限制依赖和工作流程,便于后期的系统运维、技术开发、网络管理等。
与物理架构相关的网络拓扑元素包括物理节点、网络环境、软件单元、数据单元4类。
• 物理节点:包括物理机(含服务器、交换机等)及云服务。
• 网络环境:按照网络托管主体,可分为私有云和第三方云服务(如阿里云、AWS、谷歌云等);按照网络功能角色,可分为Web环境、应用环境、管理环境、存储环境、计算环境等。
• 软件单元:包括各种软件或服务,如负载均衡、云数据库等。
• 数据单元:不同的网络环节及物理节点上承载的数据主体、范围、类型等。
3.集成部署
数据集成部署包括面向企业内部和外部的集成。这两种方式在具体实现上没有本质区别,仅在数据权限、网络环境、安全验证、数据加密等环节的限制和要求不同。
按照集成部署的对象,集成部署可以分为功能主体、服务主体、模型主体和数据主体4类。
(1)功能主体。
功能主体是独立的、用于解决特定问题的功能模块。功能主体的集成部署方式包括集群共享和API两种。
• 集群共享指将功能打包后上传到统一管理资源环境内,其他应用只需调用即可。例如,将jar包上传到Hadoop后,集群内的所有服务都可以使用该jar包及其中的功能。
• API指将功能封装起来,外部访问只能通过API的方式实现功能集成。这种方式利于功能在企业内、外部多环境中的集成使用。
(2)服务主体。
服务是多个功能的集合,常用于解决逻辑复杂的主题型任务。服务主体的集成部署方式与功能主体相同。例如,在线推荐服务包括数据同步、清洗、计算、预测等功能,可将其封装为推荐服务并通过API的方式提供集成服务,应用方只需输入实时信息便可得到推荐结果列表。
(3)模型主体。
模型主体是数据系统内与算法建模相关的主体,用于将训练完成后的模型信息提供给其他应用方使用。它主要用于模型在离线训练和在线环境调用,以及跨系统、跨平台、跨语言的模型调用等问题上。模型主体集成部署方式包括PMML、模型对象同步、模型Meta信息同步。
• PMML:预言模型标记语言(Predictive Model Markup Language),是一种利用XML描述和存储算法或模型的标准语言。在训练环境内,将训练后的模型信息导出为PMML文件;在其他环境中,只需通过程序读取PMML文件并使用即可。这种方式具有极强的可移植性、通用性、规范性,以及异构支持、跨语言支持、跨环境支持等特性。
• 模型对象同步:先将训练完成的模型持久化到硬盘中,然后将持久化文件同步到其他环境中使用。这种方式适用于模型训练环境和应用环境一致的场景。
• 模型Meta信息同步:其逻辑与PMML类似,区别在于Meta信息不是以PMML文件的方式提供给其他环境使用的。以ElasticSearch的LTR插件为例,当XGBoost在外部环境中训练完成后,可将其Meta信息上传到ElasticSearch中并创建模型对象,后续在ElasticSearch中通过LTR插件调用创建的模型对象实现预测应用。
(4)数据主体。
数据主体即数据。数据主体的集成部署方式包括JDBC/ODBC、API、文件下载机制3类。
• JDBC/ODBC:通过JDBC/ODBC的方式访问不同域内的数据并集成,几乎所有的关系数据库都支持这种方式。
• API:通过API(包括RPC和RESTful API)的方式操作数据,如通过HiveServer2的Thrift API、Google Reporting API实现数据集成管理。
• 文件下载机制:对于异构环境的海量原始数据或明细数据,一般通过FTP或类似的文件下载机制实现集成。例如,对于Google BigQuery原始数据的导出,需要先将原始表以文件的方式导出到Google Cloud Storage中,然后从Google Cloud Storage中下载到本地服务器中。