論分布式設計

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…