物流系統高可用架構案例

来源:http://www.cnblogs.com/wintersun/archive/2017/03/25/6616188.html
-Advertisement-
Play Games

系統可用率 多級緩存 動態分組切換 DB物理隔離 服務分組隔離 跨機房隔離 漏斗模型 DB限流 系統一般可以分為前端應用系統和後端資料庫系統,前端應用系統實施分散式集群部署技術上是... ...


 

image

系統可用率

image

image

多級緩存

image

動態分組切換

image

DB物理隔離
image
服務分組隔離
image
跨機房隔離
image
漏斗模型
image

image
DB限流
image

image

image

image 

   

     系統一般可以分為前端應用系統和後端資料庫系統,前端應用系統實施分散式集群部署技術上是比較成熟的,後端資料庫系統實現異地多活技術難度很大,目前也只有阿裡,京東這樣的公司才真正實現。因此,對於大多數應用,前端應用雙機房集群部署,後端資料庫系統採取成熟的主備從的模式,也就是單個機房作為寫入,備庫在另外機房,可以快速進行切換,讀庫雙機房部署,是優選的方案。對於這個架構方案,存在跨機房寫延長的問題,可以根據場景利用非同步的方式進行解決,一般也是沒有問題的。對於系統來講,也有些特別,利用分揀中心的本地伺服器和操作人員的設備,實現離線生產,進一步提高可用性。

     大系統小做,服務拆分,是互聯網應用的特點,也符合敏捷交付的理念。對於傳統軟體,如Windows,Office等,都要經過一個漫長的需求,研發,測試,發佈周期,在“唯快不破”的互聯網時代,這顯然是無法滿足業務要求的,即使最後上線,也可能因為周期太長而不再適用了。因此,對一個互聯網服務,一般會首先完成最核心的功能,快速進行上線,不斷進行迭代,後續再進行輔助功能跟進。對於核心功能,隨著用戶數的增加,會不斷進行服務拆分,如何進行拆分,拆分到什麼樣的粒度,是不是微服務是解決問題的銀彈?這些都要根據實際的應用場景來評估,絕不是越細越好,而是要達到一個優雅的平衡。

     併發控制,服務隔離。併發控制,現在已經成為互聯網服務基本要求,在應用程式端和資料庫端,也都有成熟的方案,如果忽略,可能造成災難性的後果。對於重要的服務,還要進行隔離,例如同一個服務,要提供給內部調用,公司級調用和公司外開放服務調用,開放服務調用者我們一般認為是不可靠的,甚至有可能是惡意的,如果不進行隔離,開放服務調用有可能使得服務資源占滿,對內也無法提供服務。從技術上,可以是硬體級隔離,全部隔離,也可以是前端應用的隔離。

     灰度發佈也是互聯網服務的一大利器,有了灰度發佈,才使得快速迭代成為可能,並且,很多服務因為各種原因線下也是很難測試的,只能線上上測試。如果沒有灰度發佈,只能全量發佈,就存在較長測試周期問題,如果沒有重覆勉強上線,就存在很大的系統崩潰的風險。按照用戶,區域進行灰度發佈是比較常用的方法。

     全方位監控報警,可以分為技術層面和業務層面,技術層麵包括對CPU,記憶體,磁碟,網路等的監控,業務層面,包括對處理積壓量,正常的業務量等。做到全方位監控,才有可能在影響用戶之前,提前解決問題,提升系統可用性。否則,等用戶發現問題,在很大的壓力下,技術團隊更難處理,導致系統不可用時間加長。

     核心服務,平滑降級。任何技術手段,都不可能保障100%可用,並且,即使能夠做到,其代價也是巨大,不經濟的,因此,對於核心服務來講,能夠平滑進行降級,提供基礎的服務,也是非常重要的。對於系統來講,就利用分揀中心本地伺服器和操作人員的設備,研發了離線生產系統,來應對集中服務萬一不可用的情況。

     大型互聯網服務,一般都微服務化了,這樣意味著一個用戶操作,都是由多個服務介面支持,如果按照傳統的同步介面設計,那麼,不僅面臨性能問題,而且,QPS也是無法滿足的,因此,需要將同步介面調用非同步化。在2012年左右,eBay就提出所有系統調用非同步化,後面,幾乎所有大型互聯網公司,都對自身系統進行了非同步化改造,並且,取得了很好的效果,在和騰訊CTO Tony交流中,他就提出即使支付這種服務,也是有辦法進行非同步化設計的。同步介面非同步化,也是需要系統工具支持的。

    數據一致性
     我們就能分為四個基本的場景:高實時性/高一致性,高實時性/低一致性,低實時性/高一致性,低實時性/低一致性。針對具體的業務,我們可以匹配到具體的數據場景,這樣,我們就能找到對應的解決方案

  • 實時&強一致場景:這個在大數據技術成熟之前,是非常棘手的,但是,現在解決方案已經比較成熟了。典型應用是生產系統的實時監控,例如實時生產量,各個生產環節差異量等,其實是作為生產系統的一部分。利用當前主流的大數據處理架構是可以解決的,例如線上生產庫binlog實時讀取,Kafaka進行數據傳輸,Spark進行流式計算,ES進行數據存儲等。如果利用傳統的ETL抽取方案來解決,頻繁對生產資料庫進行抽取,並不是可行的方案,因為,這樣會極大的影響線上OLTP系統的性能。還可以舉一個生產系統實時監控案例,架構方案是應用系統完成寫資料庫的同時,把內容通過消息發送,後面的大數據處理系統接收消息來進行處理,這個架構方案,對於實時性某種程度上可以保障,但是,也存在效率問題,但是,對於強一致性就非常不合適了,因為消息系統如ActiveMQ等不僅無法保障消息數據不能丟失,而且對應消息順序也是無法保障,項目實施後,雖然採取了很多補救措施,也無法滿足強一致性需求,不得不重起爐竈。
  • 實時&弱一致性場景:典型的應用場景是消息通知,例如電商的全程跟蹤消息,如果個別數據出現丟失,對於用戶的影響並不大,也是可以接受的,因此,可以採用更加廉價的解決方案,應用完成對應的動作後,將消息發出即可,使用方訂閱對應的消息,按照主鍵,如訂單號,存儲即可。
  • 離線&強一致場景:這是典型的大數據分析場景,也就是眾多的離線報表模式。從技術上,傳統的ETL抽取技術也能滿足要求,數據倉庫對應的技術也能夠解決。
  • 離線&弱一致場景:對於抓取互聯網數據,日誌分析等進行統計系統,用於統計趨勢類的應用,可以歸為此類,這類應用主要是看能夠有足夠廉價的方案來解決,是不是可以巧妙的利用空閑的計算資源。這個在很多公司,利用晚上空閑的計算資源,來處理此類的需求。
      在對業務能首先是業務數據化,並且具有數據質量保障。系統的支撐下,實現了所有物流操作的線上化,也就是數據化,並且,對每個操作環節都是可以進行實時分析,這就奠定了很好的基礎。如果業務都是線下操作,或者系統無法準確及時收集數據,那麼,即時數據量夠大,缺乏關鍵數據和數據不准確,也會給大數據處理帶來很大的困難。第二基礎就是大數據處理技術,包括收集,傳輸,存儲,計算,展示等一系列技術。夠進行實時監控和準確評估後,也就是利用大數據對業務進行預測。預測一直是大數據應用的核心,也是最有價值的地方。對於物流行業,如果能夠提前進行業務量預測,那麼,對於資源調度等非常有意義,不僅能夠實現更好的時效,而且能夠避免浪費。舉一個的例子,就是單量預測,根據用戶下單量,倉儲生產能力,路由情況等,可以進行建模預測。

     智慧物流,以大數據處理技術作為基礎,利用軟體系統把人和設備更好的結合起來,讓人和設備能夠發揮各自的優勢,達到系統最佳的狀態。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

希望對您系統架構,軟體項目開發,運維管理,系統架構與研發管理體系, 信息安全, 企業信息化等有幫助。 其它您可能感興趣的文章:
DevOps的基本原則與介紹
Docker與CI持續集成/CD
持續交付中高效率與高質量
持續集成CI與自動化測試
軟體研發工程基礎設施
容器化實踐金融業案例一
雲計算參考架構幾例
微服務與Docker介紹
互聯網直播平臺架構案例一
高可用架構案例一
某互聯網公司廣告平臺技術架構
某大型電商雲平臺實踐
雲計算參考架構幾例
移動應用App測試與質量管理一
全面的軟體測試
著名ERP廠商的SSO單點登錄解決方案介紹一
軟體項目風險管理介紹
企業項目化管理介紹
智能企業與信息化之一
由企業家基本素質想到的
敏捷軟體質量保證的方法與實踐
構建高效的研發與自動化運維
IT運維監控解決方案介紹
IT持續集成之質量管理
人才公司環境與企業文化
企業績效管理系統之平衡記分卡
企業文化、團隊文化與知識共用
高效能的團隊建設
餐飲連鎖公司IT信息化解決方案一

如有想瞭解更多軟體研發 , 系統 IT集成 , 企業信息化,項目管理,企業管理 等資訊,請關註我的微信訂閱號:

MegadotnetMicroMsg_thumb1_thumb1_thu[1]

 


作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
該文章也同時發佈在我的獨立博客中-Petter Liu Blog


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

-Advertisement-
Play Games
更多相關文章
  • 用戶與訂單時一對多關係,再加上商品信息的話,訂單與商品之間就是多對多關係了 sql DROP DATABASE IF EXISTS testdb; USE testdb; / 用戶表,記錄用戶信息;用戶與訂單為一對多關係:一個用戶可擁有多個訂單 / DROP TABLE IF EXISTS ; CR ...
  • 緣起 因為一個月的短暫停留,我在給朋友搞事情,所以Yii系列的文章耽擱了很長時間,現在又重拾當時的知識,給大伙好好擼下這一系列的博客 提起Yii,雖然是國外的開發者搞的,但是它的作者是華人,這才是讓我們引以為豪的,如果以後有機會薛強回國大力發展PHP事業,我肯定回去他麾下搞事情,為PHP在國內的發展 ...
  • (一)Eclipse中的快捷鍵: ctrl+shift+f自動整理選擇的java代碼 alt+/ 生成無參構造器或者提升信息 alt+shift+s+o 生成帶參構造 ctrl+shift+o快速導入包 alt+shift+s+r tab+enter-->shift+tab+enter 快速生成ge ...
  • http://jingyan.baidu.com/article/e8cdb32b420ce737052badc4.html ...
  • JAVA 類總結 最近看了遍java內部類相關的一些內容,做一些總結。與個人博客 zhiheng.me 同步發佈,標題: JAVA 類總結。 頂級類與嵌套類 定義在某個類(或介面,下同)內部的類,稱為嵌套類(nested class),相應的,其所在的類稱之為該類的外圍類(enclosing cla ...
  • 一、環境搭建: 1、需要用的包: JUnit4.7:http://files.cnblogs.com/files/ShawnYang/junit4.7.zip hamcrest-1.2:http://files.cnblogs.com/files/ShawnYang/hamcrest-1.2.zip ...
  • 當你開發一個客戶端應用程式的時候,往往一個單頁會包含很多子模塊,在不同的平臺下,這些子模塊又被叫成子View(視圖),或者子Component(組件)。越是複雜的頁面,被切割出來的子模塊就越多,子模塊越多,彼此之間需要同步的數據和狀態就越頻繁,即易產生耦合。那麼如何保證在複雜業務情況下,各個子模塊之 ...
  • 一、基本概述 單件模式:確保一個類只有一個實例,並提供一個全局訪問點。 解析如下: 1)首先,該Singleton的構造函數必須是私有的,以保證客戶程式不會通過new()操作產生一個實例,達到實現單例的目的; 2)因為靜態變數的生命周期跟整個應用程式的生命周期是一樣的,所以可以定義一個私有的靜態全局 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...