文章目录

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

说明

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,设计并实现了支持高并发的物流信息管理系统。本文以此项目为例,首先介绍了如CDN、负载均衡、缓存、消息队列等相关高并发设计技术,然后详细阐述了高并发设计技术在项目中的具体应用。得益于高并发设计技术,该项目已稳定运行两年多,经受了两次的双十一活动的考验,获得了业主单位的一致好评。

过渡

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

项目背景

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实现了自动化部署,减少了运维成本。经过本项目的实践,我系统架构能力也得到了提高。路漫漫兮其修远,吾将上下而求索,我将在未来的系统架构师一路走下去,在今后的项目开发工作中仍需要不断的总结和提升架构能力。

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

  1. 软考·系统架构师论文——论基于架构的软件设计方法及应用

    文章目录 说明 摘要 过渡 项目背景 论点理论+实践 结尾 说明 1.[摘要 300~330字] ① 项目介绍:时间.项目名.项目主要功能简述.作者角色及工作内容 ② 项目技术简介:正文理论/分论点的 ...

  2. 软考系统架构师教材推荐和学习方法

    软考系统架构师教材推荐<系统架构设计师教程>(清华大学出版社) 学习方法建议 上午题经验分享 复习教材+做题 教程看不懂的可以去网上找视频结合一起看,书本知识复习完后做题. 上午题只有多做 ...

  3. 2023年软考系统架构师新版专栏导读

    目录 新的改变 软考是不是内卷? 老版教材删减章节 建议学习计划 专栏更文列表 新的改变 软考今年改版啦 高级系统架构师考试在2022年12月底出了第二版教材,比第二版多出来140页,虽然看起来好像更 ...

  4. 软考系统架构师倒计时第2天

    软考系统架构师倒计时第2天 分片透明性:是指用户不必关心数据是如何分片的,它们对数据的操作在全局关系上进行,即如何分片对用户是透明的,因此,当分片改变时应用程序可以不变.分片透明性是最高层次的透明性, ...

  5. 软考系统架构师倒计时第6天

    码云参考资料: https://gitee.com/lxmuyu/soft_examination 整理到2018资料下载: 迅雷网盘链接:https://pan.xunlei.com/s/VNFbm ...

  6. 软考系统架构师、信息系统项目管理师、系统分析师、系统规划与管理师和网络规划师资料大汇总

    公众号此文章地址:https://mp.weixin.qq.com/s/ojzMFODodAnKkhNSmLg1kg 前言 在软考交流群的几天,很多准备2021年软考的同学已经开始准备整理复习资料了. ...

  7. 软考-系统架构师大纲思维导图+真题下载

    真题+大纲 = 顺利通过 [真题下载地址(点击下载)] 系统架构师-大纲 科目1:信息系统综合知识 1. 计算机软件与网络基础知识 1.1 操作系统 操作系统的类型和结构 操作系统基本原理 网络操作系 ...

  8. 软考系统架构师笔记-最后知识点总结(三)

    ATAM中文名:体系结构权衡分析方法,他最后的目标是生成关键的质量属性效用树. 在软考中,体系结构=架构 体系结构权衡方法(ATAM)包含4个主要的领域活动:场景和需求收集.体系结构视图和场景实现.属 ...

  9. 九、软考·系统架构师——系统架构质量及评估

    系列文章 一.程序员进阶架构师的基础知识[计算机基础] 二.程序员进阶架构师的基础知识[操作系统] 三.程序员进阶架构师的基础知识[计算机网络基础] 四.程序员进阶架构师的专业知识[软件工程基础] 五 ...

最新文章

  1. leetcode:Search in Rotated Sorted Array
  2. 【怎样写代码】函数式编程 -- Lambda表达式(四):Lambda表达式与Expression树
  3. Co-occurrence网络图在R中的实现
  4. SAP MM 预留单据里的Base date和Requirement date
  5. 在WebAPI中自动创建Controller
  6. FPGA静态时序分析基本概念
  7. C语言写的流氓关机程序及破解
  8. 后端:414 Request-URI Too Large解决方案
  9. [vue] 你有使用过JSX吗?说说你对JSX的理解
  10. 使用nodejs进行WEB开发
  11. 经常玩电脑正确的坐姿_「姿态训练」保持良好坐姿的八个步骤
  12. Unix Vi命令基本用法
  13. 用 Python 创建你自己的加密货币(附源码)
  14. DevExpress之ChartControl用法
  15. java web 车辆管理系统_javaweb车辆信息管理系统
  16. android dagger2 原理,Dagger2 系列(四)Dagger2.Android基本原理
  17. c语言数组回文数编写字符串,回文数C语言(示例代码)
  18. 刚刚,5000000 里程碑达成!
  19. 计算方法实验一、秦九韶算法
  20. 网线水晶头接法详细图文教程

热门文章

  1. sql server服务器 性能,初涉SQL Server性能问题(1/4):服务器概况
  2. 点对点语音通信(转)
  3. 【POJ P3311】【状压DP】Hie with the Pie
  4. JS判断当前页面是在 QQ客户端/微信客户端/iOS浏览器/Android浏览器/PC客户端
  5. LTD营销SaaS-官微云代理商加盟服务
  6. 光子晶体和深度学习结合进行多相流检测
  7. 图之深度优先生成森林
  8. C# 中DataGridView 表头设置
  9. Android开源项目学习 | QKSMS短信app
  10. Bert预训练新法则