软考·系统架构师论文——论分布式架构设计及其实现

文章目录

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

说明

1、【摘要 300~330字】
① 项目介绍:时间、项目名、项目主要功能简述、作者角色及工作内容
② 项目技术简介:正文理论/分论点的浓缩和精华,注意行文格式
③ 项目效果:简述上线效果
2、【项目背景 400~600字】
① 引言:项目由来/缘起/定位/目标,主要介绍项目的前提和诞生的背景,注意戴帽子要适可而止
② 项目主要内容:简要介绍,不是摘要中简单的重复,应比摘要稍详细,注意5W2h的次序可根据行文而定
when:何时,近三年项目(体现技术先进性),工期建议半年至1年
where:何地,脱敏,某省/某市
who:甲乙方、作者,甲方名称脱敏,乙方称“我司/我单位/我厂/我公司”
why:为何立项,项目建设目的
what:项目名、项目内容、作者的工作内容
how much:项目预算,不宜太小,不能太大,400~100W
how:作者采用的技术/方法
3、【过渡 50~100字】
① 关键需求:客户需求/项目特征/约束…
② 作者分析后识别出的问题,需要怎么解决,引出下文
4、【理论/分论点 500~600字】
① 紧扣题干要求:一般是对题干2的应答,注意要写成一段,但需要有明显的标识。行文需要注意格式,分论点之间用分号隔开
② 逐点回答:分论点的基本概念、基本原理、应用场景、简单举例即可,无关内容不要赘述
③ 惜字如金:注意控制字数,不要挤占实践部分
5、【实践部分 1000~1200左右】
① 结构上:与理论部分相呼应对应,最好保持一致
② 分论点标题:最好拟一个小标题,注意小标题的行文格式
③ 分论点内容:先识别问题,阐述why;然后分析/设计/解决问题,阐述how;再阐述效果
6、【结尾 300~400字】
① 项目效果:呼应论点、上线、稳定运行、获得好评、下一步计划…
② 存在的问题:阐述小问题,且已解决的
③ 收获/反思/复盘:甲乙方、个人、团队

摘要

2020 年 5 月,我司中标了某一线城市大型物流公司的物流信息管理项目。项目包括仓储管理、运输管理、财务管理、订单管理、BI等多个子系统。业主物流仓库分布在全国上百个不同地点,大约3000辆货车,由于业务规模较大,系统可用性、可靠性要求比较高,并且需具备高并发的处理能力。本人有幸担任架构师,负责系统架构、系统设计等工作,经过充分的分析、多次POC,设计并实现了分布式架构的物流信息管理系统。本文以此项目为例,首先介绍了如微服务、分布式文件系统、分布式缓存、分布式消息队列等相关分布式技术,然后详细阐述了分布式技术在项目中的具体应用。得益于分布式架构的设计,该项目已稳定运行两年多,经受了两次的双十一活动的考验,获得了业主单位的一致好评。

过渡

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

项目背景

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

论点理论

(1)微服务专门适应于分布式环境,将应用程序划分成一组小的服务,服务之间互相协调、互相配合,通过明确定义的接口进行通信。这些服务围绕具体业务功能构建,由于它们是独立运行的,因此可以针对各项服务进行更新、部署和扩展,以满足对应用程序特定功能的需求,适合于任何一个分布式系统。
(2)分布式文件系统通过计算机网络与节点相连,将若干不同的逻辑磁盘分区或卷标组合在一起而形成的完整的有层次的文件系统,具有冗余性,部分节点的故障并不影响整体的正常运行,而且即使出现故障的计算机存储的数据已经损坏,也可以由其它节点将损坏的数据恢复出来。它不但提高了系统的可靠性、可用性和存取效率,还易于扩展,适合存储一些大型文件。
(3)分布式缓存在有高并发需求的系统中起着至关重要的作用,可以进一步提高数据的读取速率。分布式缓存通常由一个服务端实现管理和控制,有多个客户端节点存储数据,能够动态地扩展缓存节点、自动发现和切换故障节点。主要用于在高并发环境下,减轻数据库的压力,提高系统的响应速度和并发吞吐,一般应用在数据库和应用的中间层。
(4)分布式消息队列是在消息的传输过程中保存消息的容器,它具有低耦合、可靠投递、流量控制等一些列功能。消息队列主要有三种角色:生产者、消息队列、消费者,消息队列提供路由并保证消息的传递,生产者和消费者通过消息队列传递消息。可以应用在解决系统之间耦合、异步通信、流量削峰填谷等问题。

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

论点实践

一是,选用熟悉成熟的分布式基础框架,降低技术风险。根据系统模块的独立性、耦合度,经过通盘考虑,仔细权衡,采用微服务形式将项目拆分成仓储作业服务、库存服务、订单服务、运输服务、用户中心、GPS服务、数据计算等多个服务,并选用Spring Cloud开源组件作为项目的分布式基础框架,该框架开箱即用,提供了服务注册、服务调用、限流降级、服务监控等分布式应用开发的一站式解决方案。同时通过 Docker 和 Jenkins 完成容器集群管理系统,实现自动化部署、自动扩缩容、维护等功能。实践证明,采用相对成熟的技术,为项目的成功扫除了技术障碍和技术瓶颈。
二是,采用分布式文件系统HDFS,提高系统中文件存储的可靠性。在仓储作业、运输作业等物流作业过程中,会产生如仓库货品、运输存证大量图片和视频、GPS数据信息等文件,这些大量的文件需要被快速的存储和访问,为了避免因文件的不可用而阻塞、中断业务,影响内部工作人员的工作效率以及客户体验,我们采用具备高度容错特性,支持高吞吐量数据访问的HDFS,通过调用HDFS提供的各种API进行开发,减少了开发人员的工作量,保障了系统业务的稳定运行。
三是,采用分布式缓存Redis,保障热数据的应用,提高系统访问效率。项目的数据大抵可以分为三类。一类是例如仓库配置、运输设备资源配置、组织结构配置等系统的基础信息。一类是系统正常运行时产生的数据,例如仓储相关数据、运输相关数据、订单数据等一些业务数据。第三类是经过计算、分析、加工后的数据,例如仓储报表、运输报表等业务报表以及监控作业大屏等。其中,第一类数据在系统中维护好后需要频繁访问名副其实的热数据,如果用传统关系型数据来存储,其读写 I/O 性能必然成为瓶颈,因此我们采用 Redis 来存储这类热数据,大大提升了系统响应速度,提高了用户体验感。并且建立高可用的Redis集群和哨兵模式,防止因Redis的宕机而影响整个系统。
四是,采用分布式消息队列 Kafka,确保大量数据接入以及多个服务之间通信。项目中为实现对运输中的车辆实时定位追踪,接入了第三方GPS定位系统,在GPS数据服务中与第三方GPS系统约定好协议,实时的接收成千上百个车辆的大量GPS信息,同时需要向数据计算服务和运输服务提供数据进行业务计算。为防止下游链路遭到流量冲击而瘫痪,利用Kafka的高吞吐以及异步通信等特点,承载了大量GPS数据,并且下游服务通过订阅Kafka主题对数据消费进行处理,完美的解决了大量GPS信息接收问题以及多个业务对相关信息的同时处理。

结尾

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

你可能感兴趣的:(软考,分布式,系统架构,数据库)