20250419-作 

题目

分布式是指将一个系统或任务分解成多个子部分,并在多个计算机或服务器之间进行协同工作的方式。每个子部分都可以在不同的计算机节点上运行,彼此之间通过网络进行通信和协调。分布式技术在当今互联网应用中起着重要作用,例如大规模搜索引擎、社交网络和电子商务平台等。常见的分布式系统包括分布式数据库、分布式存储系统、分布式计算系统等。这些系统通过将数据、计算和功能分散到多个节点上,可以提供更高的性能、可伸缩性和容错性。分布式系统的设计和实现需要解决一系列挑战,例如节点之间的通信和同步、数据一致性的维护、负载均衡、故障恢复等。为了解决这些挑战,通常会使用一些分布式算法和协议,如一致性哈希、Paxos、Raft等。

请围绕“论分布式设计与实现”论题,依次从以下三个方面进行论述。
① 概要叙述你参与管理和开发的软件项目以及你在其中承担的主要工作。
② 请阐述你参与的项目使用了哪些分布式技术,它们的特点是什么?
③ 请结合项目实际,具体阐述你在项目中分布式技术的实践,以及在实施过程中遇到的问题及解决方案。


摘要

    某省预约挂号系统以下简称预约挂号系统,是我司自主研发专门为患者提供一站式、便捷化的医疗服务,该服务集众多功能与一体,旨为提高医疗服务质量和患者体验。随着用户量的逐年攀升,系统面临着性能瓶颈和可用性的挑战,严重阻碍了系统服务质量的进一步提升,为了让系统能持续稳定的运行,我司于2023年3月决定对预约挂号系统进行全面升级工作,计划一年,投资800万,我担任系统架构设计师,主要工作是架构的整体设计。为了提高系统性能和可用性,我们采用了分布式技术,通过反向代理、负载均衡、微服务、分布式缓存、分布式数据库和分库分表技术,显著的提高了系统性能和可用性等核心问题,受到领导和组员的高度认可。

背景

    随着信息化时代的到来,各大医院纷纷拥抱线上系统,我司也顺应时代的潮流开发了一款医疗系统,该系统集预约挂号、体检预约、报告查询和名医抢号等核心功能于一体,旨提高医疗服务质量和患者体验,为患者提供一站式、便捷化医疗服务。随着用户基数的持续增长,系统面临着性能瓶颈和可用性的严峻挑战,严重阻碍了服务质量的进一步提升,为了让系统持续稳定的运行下去,我司决定2023年3月对预约挂号系统进行全面升级工作,我担任系统架构设计师,主要工作涵盖了系统架构的整体设计、技术栈精准选型和各个核心阶段的评审工作。为了提高系统的性能和可用性,我们采用了分布式技术,使用反向代理和负载均衡提高系统的资源利用率和持续性,使用微服务提高系统可维护性和扩展性,使用分布式缓存提高系统查询数据的性能和可用性,使用分布式数据和分库分表提高系统的性能和数据的安全性等,完成了系统升级,显著的提高了系统的性能和可用性,且系统平稳运行至今。

理论

    分布式技术中提供多种技术,接下来描述几种技术和特点。
    1.反向代理和负载均衡。1)反向代理特点:统一访问入口、代理服务器等,通过开放端口对外提供服务,并请求后端服务器。2)负载均衡技术特点有,提高服务器的利用率、持续性,通过请求策略访问服务器集群提高利用率,单节点故障,切换其他正常节点继续提供服务。
    2.微服务。该技术特点有:轻量级通信、独立性和服务专一性。1)模块间采用HTTP协议的轻量级通信方式。2)模块间独立设计使模块的变动影响范围缩小到相邻的节点。3)服务专一性,服务只专注业务内的功能。
    3.分布式缓存。该技术特点有:高性能和安全性。1)分布式缓存使用内存存储数据,对于系统的查询数据速度较磁盘快。2)数据分布在不同的节点,单个节点当机可使用其他节点备份恢复。
    4.分布式数据库和分库分表。1)分布式数据库有高可用性等特点,数据存储在不同节点,单节点故障可以灵活切换节点持续提供服务。2)分库分表技术有高性能等特点,可以通过垂直或水平分割,划分热点数据,提高数据的IO处理能力。

实践

    预约挂号系统开发之初使用的单体架构,业务耦合性很高,且有单点故障、系统处理压力大等问题,所以我们采用了分布式的技术,使用反向代理、负载均衡、微服务、分布式缓存、分布式数据和分库分表等技术来设计架构,接下来描述一下在预约挂号系统升级中的应用。
    1.反向代理和负载均衡。在系统复用设计阶段,我们参考了老系统的结构,使用Nginx作为系统的反向代理和负载均衡组件,该组件是我见过最稳定组件之一,又因为老系统中在Nginx的反向代理中编写了防黄牛抢票脚本,所以很适合复用到新系统中,节省开发成本。Nginx负载均衡策略有轮询、随机、权重三种策略,我们选择了根据权重的方式请求后端服务,当节点发生异常,自动切换到正常节点访问,提高系统的持续性。
    2.微服务。在分析时期,我们把预约挂号整个业务划分成了机构、用户、订单、支付和三方医院等服务。在设计时期,我们选择了微服务策略,分别从几个方面设计服务。1)独立性方面,采用小团队开发模式,每个服务对应一个主团队和一个备团队,根据不同业务对应不同技术,主要使用SSM框架。2)业务量方面,针对访问量较高的机构和订单服务,我们采用自动伸缩的方式来缓解服务器的压力,使用Docker部署各个微服务并管理伸缩。3)交互方面,内网采用轻量级的HTTP协议沟通方式,外网采用HTTPS的安全请求方式等等。
    3.分布式缓存。对于高频访问的数据我们决定使用分布式缓存技术,把缓存数据存储在不同的区域,提高系统的性能和可用性。例如:机构服务的医院、科室、医生等,我们采用ES搜索引擎的专用存储方式,提高医院、科室和医生检索效率。医生号源我们采用Redis存储,当处于抢号时段时,直接与redis交互,号源信息通过异步的消息队列同步到数据库中。
    4.分布式数据和分库分表。数据层的设计,我们采用分布式的数据库存储方式,分别存储在不同云和地点的节点上,即时某云或地点异常,也可秒级切换使用其他云和地点的数据继续提供服务。我们使用代理组件Cobar,服务直接与代理组件交互,使应用和分布式数据库解耦,同时解决了分片透明性问题。我们还对数据库应用了分库分表技术,根据分析和设计时期对业务划分多个微服务,数据库也根据业务划分成了多个数据库分别与微服务对应,各个服务和数据库之间相互独立,对于表中热门的数据,我们根据属性划分在同一张表中减少连表查询的性能消耗。

结尾

    经过一年的精打细磨,在2024年3月初正式上线,得益于分布式技术的应用,系统轻松应对抢号时期的万级请求量和高并发所需的资源问题,目前用户已经突破千万,且完成了11个市的500多家医院的深度对接,得到了组员的赞誉和领导的高度认可。然而,在开发之初,有组员对分布式技术的理解存在偏差,严重阻碍了系统进度的推进,我们针对这一问题快速行动,通过组间人员的灵活调配完美解决这一短板。接下来,我们准备对老系统中的数据进行迁移工作,经过了此次项目升级,我们对迁移工作充满信心,并将以更高的态度和标准完成此次迁移工作。这次分布式技术的成功实施,使我学到了很多技术和经验,我也会更加努力让自己在架构师之路上走的更远。

总结:
1.写作点控制在3/4个。
2.分析写出来的特点,实践部分跟着描述。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/86452.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/86452.shtml
英文地址,请注明出处:http://en.pswp.cn/web/86452.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue样式绑定与条件渲染详

一、Vue样式绑定 在Vue中&#xff0c;我们可以通过多种方式动态地绑定样式&#xff0c;让界面根据数据状态变化而自动更新样式。 1. class样式绑定 (1) 字符串写法 适用场景&#xff1a;样式的类名不确定&#xff0c;需要动态指定 <template><div><!-- 绑定…

固态电池火热-美国固态电池企业QuantumScape宣布,产能规模化迈出了重要一步

美国固态电池企业QuantumScape宣布&#xff0c;其先进的Cobra隔膜工艺已成功集成到基线电池生产中&#xff0c;标志着公司生产能力规模化迈出了重要一步。 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 600478 科力远 业绩固态电池 | 1.科力远发布20…

Python 商务数据分析—— NumPy 学习笔记Ⅰ

一、NumPy 简介 1.1 NumPy 特性 高性能科学计算库&#xff1a;专为处理多维数组设计&#xff0c;底层用 C 语言实现&#xff0c;运算速度远超 Python 原生列表。 矢量运算&#xff1a;支持批量数据操作&#xff0c;避免显式循环&#xff0c;代码更简洁高效。 广播机制&…

中州养老:搭建环境(第二节)

目录 项目初始工程搭建: 不同项目需要的前后端环境也不同 前端项目搭建: 熟悉模块的方式 代码阅读 如何开发一个接口 Swagger(接口文档) Api注解的说明 ​​​​​​​项目初始工程搭建: 公司项目分两种,新立项目(0-1)和已有项目开发(1-2) 熟悉项目结构,每个模块对应的…

[1-01-01].第78节:Java8新特性 - Lambda表达式

java基础语法大纲 一、Lambda 表达式 1.1.概述&#xff1a; 1.Lambda 是一个匿名函数&#xff0c;我们可以把 Lambda 表达式理解为是一段可以传递的代码&#xff08;将代码像数据一样进行传递&#xff09;2.使用Lambda 表达式可以写出更简洁、更灵活的代码。作为一种更紧凑的…

【2025.6.27 校内 NOI 模拟赛】总结(贪心, 容斥、组合计数, dsu on tree、 虚树)

文章目录 时间安排反思题解[六省联考 2017] 期末考试&#xff08;贪心&#xff0c; 枚举&#xff09;[JSOI2019] 神经网络&#xff08;容斥&#xff0c; 组合计数&#xff0c; 树背包&#xff09;[ZJOI2019] 语言&#xff08;dsu on tree&#xff0c; 虚树&#xff0c; 结论&am…

实际前端开发中,常用指令的封装

实际前端开发中&#xff0c;常用指令的封装 全局指令处理步骤main.ts指令目录结构src/directives/index.ts 一、输入框空格禁止指令1、指令文件clearSpace.ts2、指令使用 全局指令处理步骤 main.ts import { createApp } from "vue"; import App from "./App.…

鸿蒙OH南向开发 轻量系统内核(LiteOS-M)【异常调测】

基本概念 OpenHarmony LiteOS-M提供异常接管调测手段&#xff0c;帮助开发者定位分析问题。异常接管是操作系统对运行期间发生的异常情况进行处理的一系列动作&#xff0c;例如打印异常发生时异常类型、发生异常时的系统状态、当前函数的调用栈信息、CPU现场信息、任务调用堆栈…

算法-堆排序

文章目录 整体架构流程技术细节小结 整体架构流程 大顶推&#xff1a;是构建一个完整的二叉树 大顶推&#xff1a;即父节点的值大于左右子树的值。 循环构建大顶推 在给定的数组&#xff0c;既可以明确树的高度。 在循环的时候&#xff0c;构建树的高度从lgn至0。即从堆低往堆…

【鸿蒙HarmonyOS Next App实战开发】二维码生成技术实现与解析

随着移动应用开发中对便捷交互体验的需求日益增长&#xff0c;二维码作为信息传递的重要载体&#xff0c;其生成与使用变得越来越普遍。本文将基于鸿蒙HarmonyOS应用开发框架&#xff0c;详细介绍如何实现一个功能完备的二维码生成器&#xff0c;并附上完整代码解析。 注意该实…

1 Studying《Is Parallel Programming Hard》6-9

目录 Chapter 6 Partitioning and Synchronization Design 6.1 分区练习 6.2 设计准则 6.3 同步粒度 6.4 并行快速路径 6.5 超越党派分歧 6.6 分区、并行和优化 Chapter 7 Locking 7.1 活命 7.2 锁的类型 7.3 锁定实施问题 7.4 基于锁的存在性保证 7.5 锁定&a…

Java练习题精选16-20

Java练习题精选16-20 一、第十六题二、第十七题三、第十八题四、第十九题五、第二十题一、第十六题 现有一个存放学生成绩的数组{66, 77, 88, 99},要求将该数组正序输出每个下标所对应的元素。 public class Test {public static void main(String[] args) {int<

新能源知识库(68)汽车电镀与蒸汽

汽车电镀是提升零部件耐磨性、抗腐蚀性和美观性的关键工艺&#xff0c;其流程根据基材&#xff08;金属或塑料&#xff09;和部件功能需求有所差异。 汽车电镀是以 基材特性和 功能需求为导向的精密工艺&#xff1a; ​金属件​&#xff1a;核心流程为 ​除油→酸洗→电镀→钝…

Veo 3 视频生成大模型完整操作教程(2025)

随着 AI 多模态能力的飞跃&#xff0c;Google DeepMind 发布的 Veo 3 成为了生成视频领域的一颗重磅炸弹。它不仅能够根据文本生成高质量的视频画面&#xff0c;还能同步生成对白、背景音和环境音&#xff0c;是目前最接近真正“AI 导演”的大模型。 本文将带你详细了解 Veo 3…

10【认识文件系统】

1 认识硬件——磁盘 1.1 物理构成 磁盘是计算机中唯一的机械设备&#xff0c;同时也是一种外部存储设备&#xff08;外设&#xff09;。早期的计算机通常配备的是机械硬盘&#xff08;HDD&#xff09;&#xff0c;依靠磁头和盘片的机械运动来进行数据的读写。但随着用户对计算…

Windows命令连接符的安全风险分析与防御策略

1. 命令连接符简介 在 Windows 的命令行环境&#xff08;CMD/PowerShell&#xff09;中&#xff0c;命令连接符用于在同一行执行多个命令&#xff0c;提高效率。然而&#xff0c;攻击者常利用这些符号构造恶意命令&#xff0c;绕过安全检测或执行多阶段攻击。 常见命令连接符…

大屏可视化制作指南

一、大屏可视化概述 &#xff08;一&#xff09;概念 大屏可视化是指通过大屏幕展示复杂数据的视觉呈现形式&#xff0c;它借助图形、图表、地图等元素&#xff0c;将海量数据以直观易懂的方式呈现出来&#xff0c;帮助用户快速理解数据背后的含义和价值。 &#xff08;二&a…

Halcon ——— OCR字符提取与多类型识别技术详解

工业视觉实战&#xff1a;OCR字符提取与多类型识别技术详解 在工业自动化领域&#xff0c;OCR字符提取是产品追溯、质量控制和信息读取的核心技术。本文将深入解析Halcon中OCR字符提取的全流程&#xff0c;重点解释核心算子参数&#xff0c;并提供完整的工业级代码实现。 一、O…

嵌入式项目:基于QT与Hi3861的物联网智能大棚集成控制系统

关键词&#xff1a;MQTT、物联网、QT、网络连接、远程控制 一、系统概述 本系统是一套完整的智能大棚监控解决方案&#xff0c;由两部分构成&#xff1a; 基于Hi3861的嵌入式硬件系统&#xff08;负责环境数据采集和设备控制&#xff09;基于Qt开发的跨平台控制软件&#xf…

揭开 Git 裸仓库的神秘面纱:`git clone --mirror` 详解与使用指南

大家好&#xff01;在使用 Git 进行版本控制时&#xff0c;我们最熟悉的莫过于那些带有工作目录的本地仓库了——我们在里面编辑文件、提交代码&#xff0c;然后推送到远程仓库。但有时候&#xff0c;我们可能会遇到一种特殊的仓库&#xff1a;裸仓库&#xff08;Bare Reposito…