java - 如何設計大型分散式系統報表?
过去多啦不再A梦
过去多啦不再A梦 2017-06-20 10:05:40
0
1
1027

真是無語了,第二次提交又被拒絕了,理由是「該內容屬於技術討論,建議就該問題,簡單地談一談你的想法思路,以便更好地和他人做一個技術交流「,要是第一次的是因為排版的原因我也認了,想發個問答貼怎麼就這麼難呢?行吧,就照要求稍微表達一下吧,要是真的沒有思路難道也必須得胡編亂造嗎?相信網站團隊的出發點是好的,但是對於新人來說,很可能會因此棄用。最後一次,再不過就不用這個論壇了,實在是提問好難。

以下是原文,最後將附上部分自己的思路。

初來乍到,第一次應該是自己的排版太亂,導致審核沒有通過,後面還為此特地學些了markdown的語法。廢話不多說,進入正文。

  1. 系統背景

    • 某大型上市國有企業,在各省市都有分公司,為了統一管理全國各地市分公司子公司業務過程及財務數據,統一開發了一個管理平台,再下發給各省市依實際需求進行二次開發,以取代各地市原有的分散的財務系統、業務管理系統等。

  2. #平台介紹

    • 前台用angularJs,bootstrap,html,後台用springMVC,MyBatis,資料庫有Oracle有Mysql,rpc框架用dubbo,註冊中心用zookeeper,快取用redis,系統整體架構為分散式集群。整個系統包含了以“專案管理”,“合約管理”,“採購管理”,“銷售管理”,“會計管理” 5個模組為主的多個業務模組。

  3. #現有需求

    • 基於現有業務,做100 張報表。報表模組將有獨立的資料庫及應用。

  4. #技術難點

    • 如何建立大表供所有報表使用?
      業務部分理清楚自然是最基本的,但是每個模組之間透過介面來呼叫服務。

    • 如何從分散式的資料庫中抽取大數據量?
      每個模組有各自的資料庫,部分使用oracle,部分mysql,資料量等級在千萬以上。

    • 資料的同步方式又應該如何比較合理?以什麼技術實現?
      增量同步的難度較大,從業務模組沒有很好的方式能保證不遺漏增量數據;若是全量數據,每次數據的量又實在是太大了。另外報表展示的時候以及資料匯出又如何保證其效能?

第一次做這麼大的項目,實在是有些摸不著頭腦。可能表達的不太清楚,有需要補充的地方歡迎留言。希望論壇裡的各位前輩多多指教,不勝感激。

ps:
markdown好多地方還不太明白,例如有序無序列表嵌套的時候為什麼實心的黑點變成空心的了?
為什麼無序列表換行只有目前行有效,而目前行有效的時候上面已經換過行的又無效了?
有點不懂,難道說不同的編輯器的語法還不一樣?
還有怎麼才能看到人家發布的貼文的markdown怎麼寫的?能看到的話好歹也能學一下.


個人設計思路

  1. 分析所有報表的統計維度和共同字段,在報表模組新建一個oracle用戶,將所有字段根據模組分錶,作為報表的基礎大表;

  2. 要考慮資料的擷取方式,目前我能想到的方式有兩種:

    • 透過各個模組提供接口,取數後插入至報表模組基礎大表;優點:抽取規則好維護;缺點:效能太差;

    • #透過DBLink將oracle資料庫和Mysql資料庫打通,用預存程序直接將資料插入至基礎大表。優點:性能提升;缺點:規則由他人維護將變得困難。

  3. 資料每次全量同步。優點:邏輯簡單;缺點:資料同步量太大,時間太久。

以上是個人的一些拙見,希望各位前輩多多指教。

过去多啦不再A梦
过去多啦不再A梦

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!