【遠程醫療】互聯網醫院 衛健委數據上報平臺技術方案

来源:https://www.cnblogs.com/Javame/archive/2020/03/23/12554736.html
-Advertisement-
Play Games

說到數據上報,很多人第一印象是直接點對點的上報數據,優點是簡單直接省事,但是缺點很明顯,侵入性太強,業務中會摻雜很多非業務的事情。當然這裡的簡單省事是短暫的,如果業務以及開發完了,後面追加數據上報功能,再按照這個模式,將帶來空前的壓力,代碼基本上要重新寫、測試。這個任務量也許會很大,因為一時的省事為 ...


說到數據上報,很多人第一印象是直接點對點的上報數據,優點是簡單直接省事,但是缺點很明顯,侵入性太強,業務中會摻雜很多非業務的事情。當然這裡的簡單省事是短暫的,如果業務以及開發完了,後面追加數據上報功能,再按照這個模式,將帶來空前的壓力,代碼基本上要重新寫、測試。這個任務量也許會很大,因為一時的省事為以後埋下大坑,這個是做研發要極力避免的、不能容忍的。此時我們要做的事是如何解耦,將非業務性功能提取出來,做成一個統一的數據上報平臺。因此我們就有了下文的技術方案。

系統設計架構圖:

 

 

 圖示:關於技術選型,a、b、c都是基於springcloud,數據存儲我們選擇Elasticsearch,消息中間件使用kafka。

 

  上圖的業務是將a服務的數據上報到d服務。按照一般的流程我們可以直接將a服務的數據直接發送到d服務,這樣的好處是簡單,但是缺點顯而易見,侵入性、耦合性太強,這不是我們想要的。我們要將與業務無關的服務剝離出來,做成一個統一的數據上報中心也就是上圖中的b服務,在這個服務中只做一件事,那就是業務數據上報,而此時的a服務只管專心的做業務,無需關心其它,二者各司其職,互不影響,做到真正的業務分離。

 

   此時b服務的上報數據從哪兒來,a服務直接發給b服務?很明顯不是,如果這樣做和a服務點對點發送到d服務有什麼區別呢,反而增加了一個中間環節,增加了不穩定因素。那我們該怎麼做?想一想,多個程式如何進行消息傳遞?此時我們會想到消息中間件這個很神奇的一個東西。網上搜索一大堆消息中間件,那麼我們該如何選擇呢?我們這裡選擇的是kafka,原因是我們這裡的數據量大、生態環境非常好,實時數據處理比較好,而且我們之前已經在使用它了,在滿足業務的情況下,沒有必要再額外的維護一個中間件,我們要本著業務、經濟的原則去技術選型,不要為了技術而技術。

 

 

 

在上報數據的時候我們還得考慮很多問題:

1.上報數據日誌監控

我們這裡的日誌量很大,而且需要各種維度的日誌分析這個功能,因此日誌存儲我們採用Elasticsearch。

它是一個分散式搜索引擎,支持海量數據存儲,檢索查詢。在這裡使用它再適合不過。

 

2.數據丟失。比如服務d宕機、網路堵塞原因會導致上報數據丟失(在a、b服務正常的情況下),那麼如何解決這個?由於我們做了日誌監控,所以會很簡單的解決這個問題,將上報異常的數據重新發送就好了。

 

使用場景:

本架構使用在互聯網醫院項目中,業務是衛健委要求醫院上報線上看病患者產生的數據,且上報數據不允許丟失,如果對方平臺無法使用,則要求補發丟失數據。

a對應醫院線上看病服務,d對應衛健委數據接收服務。b、c就是內部非業務服務。

最後總結核心點,我們要將業務和非業務相關的東西剝離開來,各司其職,互不影響,這正符合現在流行的微服務理念。

 

推薦閱讀:

【大廠】基於rabbitMQ消息中心技術方案
【乾貨】一篇文章講透數據挖掘
【乾貨】微服務設計的基礎知識【對話老王】聊聊那數據
【輕鬆話題】閑話程式員
【劃劃重點】論大數據中主數據的重要性
【談大數據】CDH6.x學習筆記(角色簡介)

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • JavaScript面向對象, 註意啦在這其實面向對象是一種編程的方式,它的思想是通用的,因此 我強烈的建議你去查看我在python,面向對象編程中做的筆記。 面向對象與面向過程 這裡還是相對比較容易理解的,這是兩種截然不同的編程方式。 | |面向過程 | 面向對象 | | : |: :| :| | ...
  • 一、Bootstrap Table列寬拖動的方法 Bootstrap Table可拖動列,需要用到它的Resizable擴展插件 需要引入 bootstrap-table擴展插件 bootstrap-table-resizable.js 這個插件還依賴於colResizable v1.6(下載地址: ...
  • 組件化的思想 將一個頁面中的處理邏輯放在一起,處理起來就會很複雜,不利於後續管理和擴展。 如果將頁面拆分成一個個小的功能塊,每個功能塊實現自己的內容,之後對頁面的管理和維護就變得很容易了。 註冊組件的基本步驟 1.創建組件構造器 2.註冊組件 3.使用組件 //創建組件構造器對象 const cpn ...
  • 事件註冊單個事件註冊語法: $('div').click(function () { 處理的事情 })$('div').click(function () { $(this).css('backgroundColor', 'red') });$('div').mouseenter(function ... ...
  • 前端是什麼? 工作流程為從UI處得到原型圖或者效果圖,在項目(網站、微信公眾號、小程式、WEBAPP)中還原圖片效果,然後與後臺進行各種數據交互。 目前的前端市場整體還是處於迅速發展期,市場對於前端的需求也一直比較大。市場對於中高級的前端工程師需求更加迫切,所以就算入了前端的門,也需要不斷的提升自己 ...
  • 在頁面中我們經常會使用到 checkbox 和 radio,但是,部分瀏覽器顯示的效果並不能讓我們滿意,因此想通過一種方式,更改其樣式。 這裡使用到的就是使用 label,結合 before 實現樣式的更改。 完整代碼: 效果圖: 這樣相比之前就好看那麼一點點,如果引入字體圖標,對 css 稍作更改 ...
  • 1.有關於屬性的操作 "項目源碼" 所謂的屬性操作就是操作一系列的元素的屬性,value啦class啦 .......特別是有關於input的操作是非常重要的。 為了完成後續有關於框架的高級騷操作,我們現在先來學習一下,jQuery的常用屬性操作的三種 prop(),attr(),data() (1 ...
  • 通過VueRouter實例的push()操作,可以進行路由跳轉,對於<router-link/>組件來說,它綁定的是click事件,最後也是通過執行push()方法來進行路由跳轉的。 對於push()方法來說,一共可以傳入三種形式的參數: 字元串形式,值為路勁 含有name的對象形式,可以搭配par ...
一周排行
    -Advertisement-
    Play Games
  • 概述:在C#中,++i和i++都是自增運算符,其中++i先增加值再返回,而i++先返回值再增加。應用場景根據需求選擇,首碼適合先增後用,尾碼適合先用後增。詳細示例提供清晰的代碼演示這兩者的操作時機和實際應用。 在C#中,++i 和 i++ 都是自增運算符,但它們在操作上有細微的差異,主要體現在操作的 ...
  • 上次發佈了:Taurus.MVC 性能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET Core 版本,今天計劃準備壓測一下 .NET 版本,來測試並記錄一下 Taurus.MVC 框架在 .NET 版本的性能,以便後續持續優化改進。 為了方便對比,本文章的電腦環境和測試思路,儘量和... ...
  • .NET WebAPI作為一種構建RESTful服務的強大工具,為開發者提供了便捷的方式來定義、處理HTTP請求並返迴響應。在設計API介面時,正確地接收和解析客戶端發送的數據至關重要。.NET WebAPI提供了一系列特性,如[FromRoute]、[FromQuery]和[FromBody],用 ...
  • 原因:我之所以想做這個項目,是因為在之前查找關於C#/WPF相關資料時,我發現講解圖像濾鏡的資源非常稀缺。此外,我註意到許多現有的開源庫主要基於CPU進行圖像渲染。這種方式在處理大量圖像時,會導致CPU的渲染負擔過重。因此,我將在下文中介紹如何通過GPU渲染來有效實現圖像的各種濾鏡效果。 生成的效果 ...
  • 引言 上一章我們介紹了在xUnit單元測試中用xUnit.DependencyInject來使用依賴註入,上一章我們的Sample.Repository倉儲層有一個批量註入的介面沒有做單元測試,今天用這個示例來演示一下如何用Bogus創建模擬數據 ,和 EFCore 的種子數據生成 Bogus 的優 ...
  • 一、前言 在自己的項目中,涉及到實時心率曲線的繪製,項目上的曲線繪製,一般很難找到能直接用的第三方庫,而且有些還是定製化的功能,所以還是自己繪製比較方便。很多人一聽到自己畫就害怕,感覺很難,今天就分享一個完整的實時心率數據繪製心率曲線圖的例子;之前的博客也分享給DrawingVisual繪製曲線的方 ...
  • 如果你在自定義的 Main 方法中直接使用 App 類並啟動應用程式,但發現 App.xaml 中定義的資源沒有被正確載入,那麼問題可能在於如何正確配置 App.xaml 與你的 App 類的交互。 確保 App.xaml 文件中的 x:Class 屬性正確指向你的 App 類。這樣,當你創建 Ap ...
  • 一:背景 1. 講故事 上個月有個朋友在微信上找到我,說他們的軟體在客戶那邊隔幾天就要崩潰一次,一直都沒有找到原因,讓我幫忙看下怎麼回事,確實工控類的軟體環境複雜難搞,朋友手上有一個崩潰的dump,剛好丟給我來分析一下。 二:WinDbg分析 1. 程式為什麼會崩潰 windbg 有一個厲害之處在於 ...
  • 前言 .NET生態中有許多依賴註入容器。在大多數情況下,微軟提供的內置容器在易用性和性能方面都非常優秀。外加ASP.NET Core預設使用內置容器,使用很方便。 但是筆者在使用中一直有一個頭疼的問題:服務工廠無法提供請求的服務類型相關的信息。這在一般情況下並沒有影響,但是內置容器支持註冊開放泛型服 ...
  • 一、前言 在項目開發過程中,DataGrid是經常使用到的一個數據展示控制項,而通常表格的最後一列是作為操作列存在,比如會有編輯、刪除等功能按鈕。但WPF的原始DataGrid中,預設只支持固定左側列,這跟大家習慣性操作列放最後不符,今天就來介紹一種簡單的方式實現固定右側列。(這裡的實現方式參考的大佬 ...