系統架構設計師論文--微服務 2021 系統架構設計師備考分享

--摘要
      2019年8月,我司承接了某市醫療集團,智慧藥房項目,該項目主要爲集團下屬36家社區衛生服務中心提供藥品統一目錄管理、藥品集中採購、庫存管理、處方合理用藥審覈、藥品配發、自動化發藥設備驅動提供軟件支撐。在該項目中我擔任了軟件架構設計師一職,主要負責該項目的軟件架構設計工作。本文以智慧藥房項目爲例,主要論述了微服務架構在項目中的具體應用,該項目主經由藥品供應管理、處方審覈、藥品配發、設備協同及藥房管理等模塊組成,子模塊之的業務相對單一,因爲採用了微服務架構設計,將這些模塊進行了微服務設計開發及部署,使他們在後期迭代過程中,開發及發佈不會影響到其它的模塊,通過使用微服務架構設計,提高了軟件設計質量和開發效率,最終項目成功上線,並獲得了用戶一致好評。
--項目背景
     根據深化醫藥衛生體制改革規範藥求,推進藥品集中採購,增加藥品的供應保障能力,嚴格監督管理,保障藥品的用藥安全,所有醫療機構開出的處方,必須通過處方審覈後,方可進入劃價計費環節,未經審覈的處方,不得進行計費和配發。2019年8月,我司承接了某醫療集團智慧藥房項目,該項目爲醫療集團下屬36家社區衛生服務中心提供軟件支持,主要分爲藥品供應模塊、藥房管理模塊、處方用藥審覈模塊、藥品配發模塊、設備協同模塊。藥品供應模塊負責藥品庫存預警,供社區衛生服務中心藥房對藥品進行集中採購,並將藥品發送到省採招平臺;藥房管理模塊主要進行一些基礎信息的維護,及關注藥品的庫存管理,藥品批號跟蹤;處方用藥審覈模塊,負責對醫生開出的藥品進行合理用藥審覈,將不合理的處方審覈結果返回給醫生,提醒醫生修改處方;藥口中配發模塊,負責將處方中的藥品進行調配,打印用法用量標籤,確認發藥後扣減相應的庫存;設備協同模塊主要是驅動藥房中的一些自動化發藥設備,將要藥品信息發給設備上位機,根據設備藥品的效期進行排序,通過上位機程序調用下位機,驅動設備出藥。在該項目中我擔任軟件架構設計師職務,主要負責軟件的架構設計及中間件等技術的選型工作。

--就當回答面試題
     傳統的單體軟件架構在構建部署和擴展方面有很大的侷限性,耦合度比較高,更新升級,都需要整體進行,隨着軟件規模的增大,業務模塊越來越多,分佈式越來越複雜,合得軟件的構建變得越來越複雜,對開發人員的要求也越來越高,微服務是一種架構風格,根據業務務領域驅動分析,以垂直劃分的方式將一個複雜的應用拆分成多個獨立自治的服務,服務與服務之間通過鬆耦合的形式進行交互,每個微服務都是單一的職責,以SOA的核心思想,以服務的形式對外提供服務,配合DevOps的一些組件,CI/CD持續集成每日構建,升級、擴容不中斷業務
--簡單介紹一下湊字數,後面分了三塊介紹,主要是前後臺分離,怎麼部署的;代碼層面是怎麼垂直劃分實現的
     智慧藥房項目中,將藥品SPD採購入庫模塊、處方審覈模塊、 藥品配發模塊、設備驅動模塊等模塊進行了微服務的劃分,同時研發小組劃分成了4個小組,每個小組負責模塊軟件的生命週期開發工作,從開發、集成、測試,再到微服務的發佈升級。服務與服務之間通過 restful 接口進行控制集成。
     前端表現層:由於智慧藥房項目,有設備硬件,所以前端表現層,採用了B/S+C/S的混合架構風格,在藥品採購入庫模塊中,採用了B/S的形式,將前端Web,通過Nginx 進行集羣部署,當用戶通過瀏覽器訪問Web系統時,通過Nginx 輪訓加權算法,進行Web服務的訪問分配。通過Ajax方式調用 平臺服務層的 Restful API接口。設備協同模塊,爲了方便給下位機發送命令驅動設備,因此設備上位機採用的C/S架構,通過HttpClient 方式調用平臺服務的 Restful 接口。
     平臺服務層:採用比較成熟的SpringCloud框架進行搭建,爲表現示提供接口服務。將SPD採購入庫模塊、處方審覈模塊、藥品配發模塊、設備驅動模塊等模塊接口啓動上線後通過Nacos註冊中心進行註冊,負責服務的註冊、發現。通過Gateway網關將所有的服務地址暴露在外,對外進行接口統一管理,並且在網關層,做了統一的安全認證,,當後端有多個服務時,通過服務命名管理,由Ribbon負責負載均衡的實現,當請求過多時,通過 Ribbon路由到指定的服務端,通過Skywalking進行接口鏈路的監控,確保接口服務對外的可用性。服務應用通過編寫 Dockerfile,通過Docker Compose將應用部署在Docker 上,提高了應用發佈的效率,降低DevOps的複雜度
     業務服務:按採購入庫模塊、處方審覈模塊、藥品配發模塊、設備驅動模塊等業務分了多個微服務。各服務之間的調用通過Openfeign進行 RPC的動態調用。接口以Restful 的形式進行交互,處方審覈接口服務調用頻率遠高於其它服務。並且及時性要求比較高,因爲爲審方服務提供了五個實例節點做集羣服務,結合負載均衡解決服務端的請求壓力,審方合理用藥規則有18萬個藥品目錄,數據量較大,在做處方審覈時對數據查詢的要求比較高,因此引入了Mongodb組件,MongoDB適用於大數據的存儲和分析。同時在設備協同模塊中,引用了Kafka MQ消息中心件,將設備和業務系統進行解耦,配發模塊將需要出藥的處方數據,發給Kafka,設備收到Kafka消息後,提取消息中的藥品數據,進行效期和庫存的排序,驅動下位機出藥。

--結尾
項目於2019年8月啓動到2020年10月曆時14個月,圓滿完成,順利完成驗收,並取得了客戶的一致好評,該項目運行一年多,也出現過一些小的問題,由於醫院使用的是集團內部局域網,與外網隔離,給排查問題及維護增加了困難,一次發藥設備上的上位機不心小被藥房老師刪除後,不會重新安裝操作,上報我司後,我們聯繫醫院信息科老師,在信息科的老師協助下,對軟件重新進行了安裝,此次事件,導致了設備停止工作了幾個小時,影響了藥房發藥效率。後來我司安排了1名售後維護該項目,這一年內也新增了一些發藥設備,由於選用了合適的微服務架構,使得設備的接入及服務的擴展變得非常容易,在售後同事的協助下,系統至今運行穩定。該項目的成功,讓我意識到了使用了微服務架構的作用和價值,堅定了我對微服務架構應用的信心,合理選擇合適的微服務架構,能夠大大的提高了軟件設計的複用方法,加快開發的進程,在項目中起到事半功倍的作用。經過這次項目,我也看到了自己身上的不足之處,在未來還會不斷地更新知識,完善本系統的設計,使系統能夠適應國家醫改的變化需要,這是作爲軟件從業的我爲之努力的動力和方向。

 

2021 系統架構設計師備考分享

系統架構設計師論文--通用模板  抽出來的方便記憶

系統架構設計師論文--微服務      

系統架構設計師論文---架構風格  

系統架構設計師論文--設計模式   

系統架構設計師論文--企業集成   

系統架構設計師論文--可靠性設計  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章