软考·系统架构师论文——论软件的高并发设计

文章目录

  • 说明
  • 摘要
  • 过渡
  • 项目背景
  • 论点理论
  • 论点实践
  • 结尾

说明

摘要

过渡

在经济全球化和电子商务的双重推动下,物流业正在从传统物流向现代物流迅速转型并成为当前物流业发展的必然趋势。在系统工程思想的指导下,以信息技术为核心,强化资源整合和物流全过程优化是现代物流的最本质特征。通过使用计算机技术、通信技术、 络技术等手段,建立物流信息化管理,以提高物流信息的处理和传递速度,提升更人性化的服务,完善实时物流跟踪,减少物流成本。

项目背景

2020 年 5 月,我有幸参加了某物流公司的物流信息管理项目,项目由多个子系统组成,包括仓储管理、运输管理、财务管理、订单管理、BI等多个子系统,这些子系统之间有许多协同作用,又是相互依赖的,同时从用户层面系统分为三个端:后台系统管理端、客户端、司机端。项目的目的是打造物流公司内外部各作业环节的信息化、可视化和一体化。通过对物流信息的收集、存储、传递和处理,达到对物流活动控制和管理,帮助企业进行信息分析以及决策支持,加快对市场的反应速度。本人作为系统架构师,参与了系统规划、需求分析、系统设计、系统开发和系统实施等过程,主要负责系统架构设计的工作。通过与关键干系人多轮次的沟通交流,经过项目组内部充分的需求分析,我们识别出该项目具备业务模块相对独立、业务不能中断、业务可承载高并发等关键需求。结合关键需求,我组织了项目组对高并发的软件设计技术进行调研,经过沟通、讨论、验证,最后一致认为采用CDN内容分发 络、负载均衡、缓存、消息队列等相关技术可以确保该项目的成功实施。下面分别对这些技术进行描述,并说明各自的主要适用场景。

论点理论

(1)CDN内容分发 络,通过在 络各处放置节点服务器所构成现有的互联 基础之上的一层虚拟 络,能够实时的根据 络流量和各节点的连接、负载情况以及到用户的距离和响应时间等综合信息将用户的请求导向离用户最近的服务节点上,使用户可以就近取得所需内容,解决 络拥挤的状况,提高用户访问 站的响应速度和成功率。CDN解决因分布、宽带、服务器性能带来的访问延迟问题,适用于站点加速、点播、直播等场景。
(2)负载均衡构建在原有 络结构之上,提供了一种透明且廉价有效的方法扩展服务器和 络设备的带宽、加强 络数据处理能力、增加吞吐量、提高 络的可用性和灵活性。将工作任务进行平衡、分摊到多个操作单元上进行运行,例如Web服务器、FTP服务器等,从而协同完成工作任务,同时根据实际情况选用不同的负载均衡技术和算法。是解决高并发,高可用,扩展性的终极解决方案。
(3)缓存技术在有高并发需求的系统中起着至关重要的作用,可以进一步提高数据的读取速率。缓存分为本地缓存和分布式缓存,区别在与是否要走 络通讯。其中分布式缓存通常由一个服务端实现管理和控制,有多个客户端节点存储数据,能够动态地扩展缓存节点、自动发现和切换故障节点。主要用于在高并发环境下,减轻数据库的压力,提高系统的响应速度和并发吞吐,一般应用在数据库和应用的中间层。
(4)消息队列是在消息的传输过程中保存消息的容器,它具有低耦合、可靠投递、流量控制等一些列功能。消息队列主要有三种角色:生产者、消息队列、消费者,消息队列提供路由并保证消息的传递,生产者和消费者通过消息队列传递消息。可以应用在解决系统之间耦合、异步通信、流量削峰填谷等问题。

下面详细阐述相关技术在项目中的具体应用。

论点实践

一是,采用CDN技术,提高 站应用中大量静态资源的加速分发。由于各个应用系统存在大量的静态资源,例如加载页面时需要的html、css、js等文件,物流作业过程中产生的仓库货品、运输存证等大量图片和视频。为了避免当大量请求涌入,在带宽不足的情况下,导致页面或资源加载不出来,影响工作人员效率及用户体验。我们利用CDN技术将这些静态资源提供下载加速分发,通过CDN缓存在边缘节点上,使各终端用户访问时可以就近访问,提高了回源速度,节省了近2/3的回源(业务服务器)带宽成本。
二是,采用负载均衡技术,提高系统并发处理能力。在设计和开发阶段,根据各子系统独立性、耦合度,采用微服务形式将项目拆分成仓储作业服务、库存服务、订单服务、运输服务、用户中心、GPS服务、数据计算等多个服务,形成了各终端用户访问应用系统,应用系统访问各服务的链路。为避免短时间内大量客户下单、查询物流信息,仓储高峰期业务人员的大量操作等高并发请求导致系统瘫痪。我们根据不同系统的访问量及用户量,为各计算节点添加若干节点,在各终端用户访问子系统时采用反向代理负载均衡技术Nginx,各子系统访问内部服务时采用基于HTTP的负载均衡技术Ribbon。由于相同系统或服务所分布的资源相同,在负载均衡算法上统一使用了轮询算法。项目实践中因负载均衡技术,不仅提高了系统高并发,也提高了系统的高可用和高扩展性。
三是,采用分布式缓存Redis,保障热数据的应用,提高系统访问效率。项目的数据大抵可以分为三类。一类是例如仓库配置、运输设备资源配置、组织结构配置等系统的基础信息。一类是系统正常运行时产生的数据,例如仓储相关数据、运输相关数据、订单数据等一些业务数据。第三类是经过计算、分析、加工后的数据,例如仓储 表、运输 表等业务 表以及监控作业大屏等。其中,第一类数据在系统中维护好后需要频繁访问名副其实的热数据,如果用传统关系型数据来存储,其读写 I/O 性能必然成为瓶颈,因此我们采用 Redis 来存储这类热数据,大大提升了系统响应速度,提高了用户体验感。并且建立高可用的Redis集群和哨兵模式,防止因Redis的宕机而影响整个系统。
四是,采用消息队列 Kafka,达到流量削峰填谷、应用耦合、异步通信作用。项目中为实现对运输中的车辆实时定位追踪,接入了第三方GPS定位系统,在GPS数据服务中与第三方GPS系统约定好协议,实时的接收成千上百个车辆的大量GPS信息,同时需要向数据计算服务和运输服务提供数据进行业务计算。为防止下游链路遭到流量冲击而瘫痪,利用Kafka的高吞吐以及异步通信等特点,承载了大量GPS数据,并且下游服务通过订阅Kafka主题对数据消费进行处理,完美的解决了大量GPS信息接收问题以及多个业务对相关信息的同时处理。

结尾

得益于高并发设计技术,项目组在时间紧、任务重、跨多部门的前提条件下,经过 6 个月的艰苦奋战研发,保质保量地按期完成项目交付,目前已稳定运行 2 年。该项目支撑了物流公司的核心业务,项目运行可靠,各项功能和性能指标超过客户预期,连续两年经受了双十一活动的考验,深受客户好评。在项目开发过程中也存在不足之处,由于系统被拆分了多个服务,同时还存在多个中间件,在初期需要登录多个服务器进行部署,操作繁琐复杂,后面通过Docker和Jenkins实现了自动化部署,减少了运维成本。经过本项目的实践,我系统架构能力也得到了提高。路漫漫兮其修远,吾将上下而求索,我将在未来的系统架构师一路走下去,在今后的项目开发工作中仍需要不断的总结和提升架构能力。

文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树数据库组成32320 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年10月6日
下一篇 2022年10月6日

相关推荐