国铁通用物资采购平台高并发访问关键技术研究

2023-02-18 13:11杨钊王婷董立华
铁路计算机应用 2023年1期
关键词:国铁商城架构

杨钊,王婷,董立华

(1.中国铁道科学研究院集团有限公司 电子计算技术研究所,北京 100081;2.北京经纬信息技术有限公司,北京 100081)

为落实中国国家铁路集团有限公司(简称:国铁集团) “大统筹、大平台、大监管”的物资管理改革发展要求,基于微服务理念,以大数据、云服务、物联网等技术为支撑,开发了国铁通用物资采购平台(简称:国铁商城),并致力于将国铁商城打造成为专业化、信息化、集约化、智能化的铁路特色采购交易平台,使其发挥采购、供应、管理、服务的优势,实现降低物资采购成本、提高效率效益、保障供应质量、规范采购行为、加强风险管控的目的。随着应用的不断推广,用户群体不断增大,入驻国铁商城的单位采购人用户越来越多,且习惯于在每天特定时间段集中访问,尤其是铁路特有的集中采购时间段,国铁商城的访问压力极大。

交易型平台面向高并发的设计原则包括拆分、服务化、消息队列、数据异构、缓存等[1]。一般应对高并发的设计思路是限流、削峰、异步处理、负载均衡、缓存、微服务、数据库设计等方式。微服务方面,王雪峰等人[2]采用Spring Cloud 作为微服务基础框架集合,保证平台的可靠性和可扩展性;仇念飞[3]、高豪[4]等人采用微服务架构对平台进行了模块的划分和设计,对高并发访问进行了实践和研究。缓存方面,丛磊[5]提出为用户行为所有环节加上合理缓存,并将缓存时间设置为毫秒级,针对不同接口指定不同缓存策略,有效提高缓存命中率;梅巧玲等人[6]基于Redis 分布式缓存,论证了在大并发访问下分布式数据处理技术的可行性。

基于上述研究,本文采用微服务、多级缓存、Kubernetes 和对象存储技术,解决高并发访问难题。

1 国铁商城简介

国铁商城作为国铁集团及所属单位、商户进行在线采购交易的平台,由中国铁道科学研究院集团有限公司自主研发。该商城基于B2B 模式,部署于中国铁路主数据中心,于2020 年上线运营。国铁商城首页如图1 所示。

图1 国铁商城首页

国铁商城在功能上覆盖了对商家入驻、商家开店、商品上架管理、采购人下单、在线支付、订单履约、物流发货追踪、发票管理、售后服务、对账结算等采购交易的全流程管理。国铁商城的核心子系统包含了运营管理中心、采购人中心、供应商中心、电商采购、批量采购专区、专用物资专区、消费帮扶专区、防疫物资专区、采购人端App 等。其中,电商采购类支持用户在系统中直接选品下单,可满足全部铁路单位采购人小批量采购需求;批量采购结合铁路集中采购管理的特点,针对单品采购数量较多的情况,额外提供采购人与供应商议价的途径;专区采购则针对铁路专用物资、防疫物资等铁路特殊采购需求,提供相对独特的专区模式进行在线交易等。

截至2022 年6 月底,国铁商城入驻品牌数已超过60 000 个,单品数量超过400 万件,订单数超过300万单,销售额累计逾170 亿元人民币。

2 高并发访问需求分析

2.1 业务量大

在需求调研阶段,就明确了国铁商城未来需要面对的高并发访问挑战。因此,国铁商城在性能需求方面,按照采购人用户数过万、供应商企业1.5 万家、年交易额50 亿元人民币的规模进行设计。随着业务的不断扩展,截至2022 年6 月,铁路采购人用户数已近4.5 万,供应商企业近3 万家。按照2022年初国铁商城的运营总体规划和部署,预计到2023年初,供应商企业会超过20 万家,商城累计交易额超过240 亿元人民币。

2.2 数据访问量大

国铁商城的关键访问数据包括商品图片信息、商品基础信息、采购单信息、订单信息、对账信息等。其中,图片信息的访问特点是文件较多,总体访问数据量大,仅单个商品主图片的当日浏览流量可超13 G,单日图片的总流量约在1.4 T 左右。

商品基础信息查询的访问压力核心是检索功能,日均访问量在10 万次以上;其次是商品详情页查询,日均访问量可达30 万次;采购单信息、订单信息及对账信息日均查询量均在10 万次以上。

2.3 用户集中访问

除数据访问量较大外,国铁商城存在用户访问集中的情况。分析发现,日均3 万的访客数和45 万的浏览量集中在9:00~11:00 和14:00~17:00。域名访问带宽峰值工作日内保持在400 Mbps 左右,以2022 年6 月15 日为例,流量最高的3 个时间点分别是10:00(393.9 Mbps)、15:05(401.6 Mbqs)及15:35(405.6 Mbps),如图2所示。

图2 6 月15 日国铁商城域名访问带宽情况

国铁商城的访问流量大多在采购人用户工作时段的几个小时内形成,随着业务不断扩展,国铁商 城高并发访问的压力不断增大。

解决高并发问题的关键是要采用扩展性强的技术架构,同时,针对高并发访问情况进行单独设计和改造。

3 关键技术

3.1 微服务架构

微服务具有模块化开发、分布式部署的特点,各服务间使用轻量级通信机制,各服务单元独立开发、部署、运行、更新,有灵活的扩展性。每个服务单元可由多个实例副本支撑,副本的数量可随系统的负荷变化进行调整。微服务技术中的节点扩容、探活和自动容错重启、削峰和降流等特点是应对高并发访问、提高整体系统可用性的关键要点。国铁商城在微服务技术架构体系下不断拆解访问量较大的服务,将流量分摊到不同的服务单元,并提高相应服务单元的副本数量,借助微服务技术,通过异步通信保障业务逻辑的可用性,以解决高并发访问的瓶颈。

国铁商城采用Spring Cloud 微服务架构。将国铁商城划分为商品、订单、交易、售后、结算等微服务,实现服务与服务间的解耦。每个微服务都在自己的进程中运行,并以轻量机制进行通信[7],围绕业务功能构建,可通过全自动部署机制来独立部署。各业务服务均可将自己发布到注册中心上(包括网关服务Gateway),注册中心提供服务注册及实时健康检查,以防止向不健康的服务发送请求。网关实现路由转发、统一认证,以及服务的降级、限流、熔断等[7],并作为后端服务的唯一出口。各后端服务间通过feign 调用完成业务操作。

国铁商城微服务架构采用双分组进行部署,每个服务分组中的服务均为多副本部署,拒绝单点故障,提升国铁商城的稳定性;在国铁商城发生性能并发问题时,可通过灰度切换,在用户无感的情况下,对国铁商城进行升级和扩容;用户请求通过负载均衡接入,负载均衡将请求转发至国铁商城的Nginx 服务,Nginx 根据规则将请求转发到前端服务或网关服务。国铁商城微服务架构如图3所示。

图3 国铁商城微服务架构

3.2 多级缓存

对于高并发场景,设计原则是为用户行为所有环节加上合理的缓存。从用户请求数据到数据返回,数据通常经过了浏览器或App 端、内容分发网络(CDN,Content Delivery Network)、代理服务器、应用服务器、中间件缓存及数据库各个环节,每个环节都可运用缓存技术,重点是每个环节,尤其是对于传统易忽略的数据接口,都要进行合理的缓存,提高服务性能。

在应对国铁商城高并发访问的问题上,本文在缓存方面主要采用以下做法:(1)使用客户端缓存,减少不必要的数据传输,节省带宽、提升性能;(2)使用边缘CDN 对国铁商城内的所有静态脚本资源、部分图片文件和数据资源进行缓存,方便用户终端在互联网端直接获取CDN 缓存的资源,分担国铁商城核心服务器的压力,减缓国铁商城出口带宽流量阻塞的情况,提高用户访问响应速度;(3)使用Nginx 缓存服务器的静态资源,访问时直接读取Nginx 缓存,减少对后端服务器的访问,从而减轻国铁商城核心服务器的压力;(4)使用应用框架缓存Guava、分布式缓存Redis 将数据存在国铁商城核心服务器内存中,可处理大量请求;(5)对所有只读型数据接口加缓存,将缓存时间设置为毫秒级,针对不同接口制定不同缓存策略,有效提高缓存命中率,提升并发数据处理效率[8],减轻数据库服务器压力,提升国铁商城性能。国铁商城通过对不同层级采用不同的缓存技术,来解决不同类型数据并发访问的要求,从而减少针对数据库资源的访问,减轻微服务架构的性能负担,更好地支撑互联网用户高并发的访问需求。

3.3 Kubernetes

容器编排引擎Kubernetes 为容器化的应用提供资源调度、部署运行、服务发现、扩容及缩容等功能。Kubernetes 具有完备的集群管理能力,包括服务注册和服务发现机制、智能负载均衡、故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制,以及多粒度的资源配额管理能力[9]。

Kubernetes 将集群中的机器划分为管理节点(Master)和工作节点(Node),Pod 是Kubernetes中可以创建和管理的最小单元。在Master 上运行集群管理相关的一组进程(apiserver、controller manager 和scheduler),实现整个集群的资源管理、调度、弹性伸缩、安全控制、系统监控和纠错等管理功能;在Node 上运行真正的应用程序(kubelet、kube-proxy 服务进程),这些服务进程负责Pod 的创建、启动、监控、重启、销毁,以及实现软件模式的负载均衡。

国铁商城部署在基于Kubernetes 搭建的平台即服务(PaaS,Platform as a Service)环境中,可实现容器集群的自动化部署、自动扩缩容、维护等功能。鉴于Kubernetes 完备的集群管理能力,可定时巡查国铁商城每个服务的所有实例的可用性,确保服务实例的数量始终保持为预期的数量,当发现某个实例不可用时,会自动重启该实例或在其他节点上重新调度、运行一个新实例[9]。Kubernetes 可更好地支持微服务架构,其服务弹性扩容机制可让国铁商城应对突发流量。在服务高峰期,可快速扩容国铁商城某些服务的实例副本,以提升吞吐量,应对高并发访问,改善用户体验。

3.4 对象存储

国铁商城使用对象存储服务(OSS ,Object Storage Service)来存储商品图片、视频、日志等海量文件。各种终端设备、Web 网站程序、移动应用可直接访问OSS 域名读取数据。利用互联网带宽,OSS 可实现海量数据的互联网并发下载。OSS 结合CDN,提供静态内容存储和分发到边缘节点的解决方案,利用CDN 边缘节点缓存的数据,提升同一个文件被同一地区客户大量重复并发下载的体验。

4 结束语

本文分析了国铁商城的高并发需求,采用微服务、多级缓存、Kubernetes、对象存储等技术,有效解决了当前国铁商城高并发的问题。今后会持续、深入研究高并发相关技术,并应用到国铁商城,提升其性能,改善用户体验。

猜你喜欢
国铁商城架构
基于FPGA的RNN硬件加速架构
功能架构在电子电气架构开发中的应用和实践
东航与国铁开启中国“空铁联运”新时代
市域铁路与国铁互联互通共线运营地下车站建筑研究
基于云服务的图书馆IT架构
党建工作推动国铁发展
法国铁路或将迎来3个月大罢工
WebGIS架构下的地理信息系统构建研究
商城
悦居商城