1. 程式人生 > >微服務架構設計實踐系列之五:架構準備階段

微服務架構設計實踐系列之五:架構準備階段

微服務架構設計實踐 
目    次1 序言2 微服務

4.2  架構準備階段

        在架構準備階段,主要是分析使用者的需求,推薦採用“ADMEMS矩陣”矩陣方法進行需求結構化,即“需求層次-需求方面矩陣”。

        通過業務級需求、使用者級需求、開發級需求三個層次,功能、質量、約束三個方面對使用者需求進行二維需求觀分析,抽取出決定架構的關鍵需求。

        ADMEMS矩陣如下圖所示:

        

 

        以下是分行特色業務雲平臺的關鍵需求,主要包括關鍵約束、關鍵質量和關鍵功能。

        另外,根據這些關鍵需求,抽象出業務架構檢視,從業務概念的角度,描述了整個系統要實現的功能。作為一種架構檢視,本人把這部分內容放到《細化架構階段-業務架構》部分,以便提供一個完整的架構檢視。

4.2.1  關鍵約束

        1.採用Java語言;

        2.採用行方自主研發的Tesla平臺作為基礎開發平臺;

        3.採用分散式服務設計風格;

        4.前期(一期、二期)應用執行在叢集環境,後期遷移到基於Docker的雲服務平臺;

        5.前期(一期、二期)資料執行在關係資料庫環境,暫時不用考慮分庫分表,後期隨著業務量的增加,必須考慮分庫分表;

        6.專案週期:

        一期:2017年3月1日至2017年7月31日,主要完成基於Tesla平臺的分行特色業務雲平臺的搭建工作,含部分通用公共元件;

        二期:2017年8月1日至2017年12月31日,主要完成分行特色業務雲平臺通用技術元件、業務元件、業務服務的開發、與不少於6個分行進行業務對接等;

        三期:2018年1月1日至2018年5月31日,分行特色業務雲平臺分庫分表、雲服務平臺遷移、業務對接等;

4.2.2  關鍵質量

4.2.2.1  效能

        系統必須滿足預期的效能目標,在併發使用者數(Concurrent Users)、併發事務數(Transactions per Second,TPS)、響應時間、吞吐量(Throughout)等指標方面達到預估值,支撐使用人群的正常使用操作。

        分行特色業務雲平臺預期的效能指標如下:(非叢集環境)

        1.併發使用者數:200。

        2.併發事務數:300。

        3.平均響應時間:100ms。

4.2.2.2  可用性

        可用性是指系統在指定時間內提供服務有效訪問的特性。

        分行特色業務雲平臺至少保證可用性是3個9,即軟體具有較高可用性,也就是說軟體年度不可用時間小於9小時。

        分行特色業務雲平臺要在以下幾個方面支援系統的高可用性: 

        1.高可用的應用 

       支援叢集化部署:使用F5進行負載均衡,使用基於suce linux的X86虛擬機器進行叢集部署;

        支援雲化部署:允許分行特色業務雲平臺遷移到行方的私有云,該私有云基於Docker實現。

        2.高可用的服務

        服務降級熔斷:當外部系統不可用或連續出現結果異常時,應可達到服務降級的效果,全熔斷或部分熔斷異常服務容量,保證正常服務的可用性,防止出現雪崩效應。

        服務流量控制:對某一特定服務提供併發量控制,通過修改引數配置可調整服務併發數量。

        服務物件權重控制:提供對不同服務物件(模組)的流量權重控制,通過修改引數配置可調整對不同服務物件提供服務的權重比例。

        服務開關:單個服務動態開關,系統整體狀態動態開關。

        叢集服務流量控制:針對於一個特定服務提供叢集併發量控制,通過修改引數配置可調整服務併發數量。該功能推出後,可替換單例項流控的方式。

        客戶化併發控制:針對某一特定服務,解析接入報文資料後,對指定資料項匹配後做併發控制,如:針對某一商戶進行單獨併發控制。

        3.高可用的資料

        支援總行資料庫DB2的高可用。

        對於分行資料庫的高可用性,由分行自己實現。

        4.高可用的軟體質量保證

        程式碼:對程式碼版本進行控制。

        測試:支援自動化測試。

        服務灰度釋出:對外服務變更時,做到對分行特色應用的透明,在驗證週期內,保證對非驗證分行應用不受影響,使得服務變更對分行特色應用造成的影響最低。

        5.執行監控

        程序/服務監控:對本地服務、程序繁忙情況提供監控介面,供系統負責人進行監控。

        實時交易:對實時交易基本要素進行監控:交易金額、成功情況、耗時、渠道、客戶資訊等提供實時監控。

        對流程編排過程的監控。

        監控預警:設定告警級別,告警方式,告警規則,告警活動。

            告警級別:自定義,頁面顯示,預設告警方式不同;

            告警方式:郵件,簡訊,頁面展示;

            告警規則:該條告警執行的操作(如取連續3筆後臺響應超時的交易),針對一個告警規則,指定告警級別及告警方式;

4.2.2.3  伸縮性

        伸縮性指不需要改變軟硬體設計,僅僅通過改變部署的伺服器數量就可以擴大或縮小軟體的服務處理能力。

        分行特色業務雲平臺需要支援多臺伺服器構成叢集,並且加入新的伺服器後可以提供和原來的伺服器無差別的服務。

4.2.2.4  擴充套件性

        擴充套件性指在對現有系統影響最小的情況下,系統功能可持續擴充套件或提升的能力。

        分行特色業務雲平臺需要具備良好的擴充套件性,能在系統基礎設施穩定不需要經常改變的情況下,對需求變更可以敏捷響應。

4.2.2.5  安全性

        安全性指保護系統不受惡意訪問和攻擊,保護重要資料不被竊取。

        分行特色業務雲平臺需要保證總分之間、第三方與總行、分行之間通訊安全,保證敏感的資料不外洩。

        1.通訊安全

            標準加解密功能:使用總行標準安全加解密方法提供給分行使用。

            標準加驗籤功能:使用總行標準安全加驗籤方法提供給分行使用。

        2.資料安全

            日誌脫敏功能:實現關鍵敏感字的日誌脫敏功能。

            加密儲存功能:FTP密碼明文儲存、資料庫密碼明文儲存修改為加密儲存。

4.2.3  關鍵功能

4.2.3.1  公共技術功能

        1.服務編排

        使用Tesla的服務編排元件,進行復雜流程服務(涉及兩個及其以上服務呼叫、以及需異常處理的服務)的封裝。

        2.基於Dubbo的服務呼叫

        基於Tesla3.0的服務呼叫方式,實現服務位置的透明發現,軟負載呼叫,服務超時設定,併發控制等功能。

        服務許可權管控等功能目前重點通過平臺數據庫控制機制實現,註冊中心上的管控方式依賴於註冊中心的可用性,僅作為輔助控制方法。

        3.公共聯機處理框架

        實現公共的聯機處理框架,提供通用的服務接入處理,包括入參預處理、初始化交易流水、更新交易流水、出參預處理等功能,對服務呼叫透明化,簡化業務開發。

        4.統一渠道接入能力

        通過API閘道器,接入總行公共渠道,在閘道器上實現通訊協議解析,安全認證,流量控制,資料轉換,協議轉換等功能。

        5.統一訊息通知

        服務通過配置化實現交易前、交易成功、交易失敗、交易異常的訊息通知機制,呼叫訊息通知元件,與聯機服務框架解耦。通知的方式可擴充套件,通知失敗後的處理規則可選擇。優先實現簡訊方式。

        6.統一異常處理

        服務通過配置化實現異常處理的自動處理,當異常處理到達最大重試上限後,將異常處理資訊推送異常處理平臺。同時,支援異常處理平臺回撥平臺服務的實現。

        7.非同步任務排程

        支援非持久化非同步任務排程和持久化非同步任務排程。

        8.本地快取

        實現基於本地記憶體的快取元件,快取執行過程中極少變更的配置資料和業務資料。除此之外,本地快取元件需要實現如下功能:

            實現快取查詢服務、快取更新服務(遠端服務、本地服務)等快取管理功能;

           基於Zookeeper的Watch機制,實現了叢集環境中,快取更新事件的釋出與訂閱,以支援該元件在叢集環境中的使用;

            為了保證叢集各節點快取都進行了更新,在控制檯增加了相應快取檢視,快取更新功能,便於應用例項與ZK之間出現通訊異常時,快取仍然能正常更新;

            同時支援基於ZK的自動更新和基於控制檯的手動更新,各應用根據實際情況配置;

            同時支援應用級本地資料快取和模組級本地資料快取,各自管理,互不衝突;

        9.自動任務排程

        實現自動任務排程元件,以支援平臺任務的定時排程,具體功能如下:

            支援Tesla平臺Function功能的跨模組呼叫;

            支援任務持久化;

            支援叢集和分散式任務;

            分執行緒池管理;

            任務排程定義可配置化管理;

        10.總分報文通訊元件

        實現公共的報文通訊元件,供分行呼叫總行的服務,對分行遮蔽報文協議解析封裝、壓縮解壓、簽名驗籤功能。另外,提供靈活的擴充套件機制,供後續功能的擴充套件。

        11.公共檔案處理元件

        實現檔案配置化的組裝、解析功能。

        12.總分檔案互動元件

        分平臺與總平臺或後臺公共模組檔案互動的方案實現,使用公共元件,使分行對總分檔案互動方式做到透明化。

        13.全域性序列號發生器

        實現資料庫儲存全域性序列號,應用啟動時載入流水號段。

        14.分散式叢集檔案配置

        使用Tesla現有的配置管理中心能力實現,用於分散式應用的叢集技術引數的配置。同時,配置的修改有歷史記錄可追蹤,提供審計資訊檢視功能;

        15.公共返回碼管理

        實現基於資料庫的公共返回碼管理,便於全平臺的返回碼資源共享,便於檢視,維護。支援啟動時載入資料庫內容至本地快取,支援動態重新整理。

        16.分庫分表

        應對大交易量交易對資料庫單表造成的操作壓力,支援進行分庫分表操作,對錶進行水平拆分和縱向拆分。

        17.資料歸檔元件

        應用系統對於長時間執行後,某些記錄數過大(存量/增量指標)的表,且不需要提供實時查詢的資料,應提供歸檔機制,直至滿足監管和行內要求的最低保留時限,以避免資料無限增長對系統容量和執行效率造成負面影響。歸檔資料可考慮備份至本系統歷史庫,也可考慮歸檔至歷史歸檔平臺。

        18.檔案歸檔元件:

        對於不需要長期保留的檔案,如對賬檔案,產品資訊檔案等,需要提供定時清理機制,系統應可配置保留天數,超過天數(建議7天)的檔案自動清理。

        對交易日誌檔案,實現自動定期備份、歸檔和清理,避免因檔案數量過多導致應用處理效率低下。對接ELK或日誌歸檔平臺進行備份後,自動清理。

        19.標準通訊SDK

        供接入商戶使用,整合加解密、數字簽名等安全功能,通訊協議拆解包等通訊功能,統一接入標準,簡化商戶接入難度。

        20.公共批處理框架

        實現批處理框架,以支援大量作業的併發處理、併發控制、異常處理等,具體要求如下:

            互斥控制:

                1)互斥作業應有防止併發控制機制;

                2)單個批處理應控制併發重複執行;

                3)前後依賴關係的批處理應保證順序執行;

            併發控制:對大資料量(量化)批處理應可實現併發處理,通過多執行緒/程序或資料庫層實現併發,併發數可動態調整;

            斷點執行:單個批處理處理過程中失敗,修復問題後應支援斷點處繼續執行;

            緊急跳過:對於無法短時間修復的批處理,能提供緊急跳過該步驟,繼續後續批處理功能;

            通知機制:批處理開始、結束、異常等情況,可通過郵件和簡訊通知相關人員;

            CPS排程:批作業應支援CPS系統排程發起交易和本地管理端發起交易。對處理失敗的批處理,可通過本地管理端再次發起該作業;

            異常業務資料通知:對批處理過程中遇到不影響繼續處理,但存在異常或可疑的資料,產生工作流任務或實時通知業務人員進行非同步處理;

            定時任務自定義:系統提供自定義的定時自動任務,完成經常調整的定時任務,不建議通過系統的crontab定義自動任務。與其他系統有關聯的作業,不建議使用此方式;

            與聯機交易衝突:

                1)批處理過程應儘量減少聯機(計劃內)的可用性;

                2)考慮資源(資料庫資源/網路資源/程序資源等)不影響聯機交易的可用性;

            作業監控:對批作業狀態及進度提供展示介面;

4.2.3.2  公共業務功能

        1.應用日終元件

        完成平臺通用的修改平臺狀態、切日前任務處理,切日任務,切日後任務處理功能。同時,支援多個切日前任務的依賴關係、多個切日後任務的依賴關係分別可配置,根據依賴關係順序執行。

        2.日終對賬元件

        對分平臺提供公共的日終對賬能力,從支付平臺按商戶獲取商戶對賬單檔案,商戶手續費檔案。

        3.額度控制組件

        實現額度控制組件,支援通過配置化的資料項,控制指定交易的額度佔用及釋放。可按照資料級的顆粒度進行配置,如控制某個商戶發起的指定交易額度控制規則。

        在後端有額度控制功能前提下,可不進行配置,避免效能損耗。

        4.頻度控制組件

        實現頻度控制組件,支援通過配置化的資料項,控制指定交易的頻度佔用及釋放。可按照資料級的顆粒度進行配置。如控制某個商戶發起的指定交易頻度控制規則。

        在後端有頻度控制功能前提下,可不進行配置,避免效能損耗。

        5.通用黑白名單控制組件

        通過配置的資料項,從指定的上下文中根據key=value的組合找出控制主鍵,並且對該主鍵進行黑名單准入或白名單准入功能。

4.2.3.3  基本服務封裝

        1.PE-支付引擎

        封裝總行支付引擎提供的通用支付相關的服務,預計17個,根據後期具體業務需求而定。

        2.UNPS-統一網路支付系統

        封裝統一網路支付系統提供的線上支付相關的服務,預計27個,根據後期具體業務需求而定。

        3.NPS-網路支付系統

        封裝網路支付系統提供的線上支付相關的服務,預計2個,根據後期具體業務需求而定。

        4.RLS-零售貸款系統

        封裝零售貸款系統提供的貸款相關的服務,預計5個,根據後期具體業務需求而定。

        5.移動支付收單系統

        封裝移動支付收單系統提供的移動支付相關的服務,預計5個,根據後期具體業務需求而定。

4.2.3.4  流程服務封裝

        1.支付結算服務封裝

        封裝支付結算類的服務介面,包括通用的支付結算介面、招標通的服務介面、見證支付的服務介面、訂單支付的服務介面等。

        2.資訊查詢服務

        封裝支付/退款結果查詢、交易結果查詢、商戶提現/餘額查詢等服務。

        3.輔助服務

        封裝一些通用功能服務,如總分檔案傳輸服務等。

  微信掃一掃,關注該公眾號

  該系列文章已經在微信公眾號釋出,如果感興趣,請關注。

   以後更多知識通過該微信公眾號分享。


相關推薦

服務架構設計實踐系列架構準備階段

微服務架構設計實踐 目    次1 序言2 微服務4.2  架構準備階段        在架構準備階段,主要是分析使用者的需求,推薦採用“ADMEMS矩陣”矩陣方法進行需求結構化,即“需求層次-需求方面矩陣”。        通過業務級需求、使用者級需求、開發級需求三個層次,

服務架構設計實踐系列技術架構

微服務架構設計實踐 目    次1 序言2 微服務4.4.4  技術架構4.4.4.1  技術架構定義        技術架構定義了實現整個系統所需的各種技術,包括開發類、過程管理類、執行環境類、運維支撐類、以及相關技術規範等。        更確切地說,技術架構描述了在一個

服務架構設計實踐系列十一物理架構

微服務架構設計實踐 目    次1 序言2 微服務4.4.5  物理架構4.4.5.1  物理架構定義        物理架構定義了“程式”如何對映(安裝、部署或燒寫等)到“硬體”,以及“資料“如何在”硬體“上儲存和傳遞。        物理架構必須考慮”功能的分佈“和”資料

Kubernetes系列使用yaml檔案建立service向外暴露服務

Service和Pod的理論介紹,方便繼續下去 Pod是有生命週期的,使用凡人皆有一死來描述pod很貼切,當一個工作節點(node)銷燬時,節點上執行的pods也會被銷燬, ReplicationController會動態地在其他節點上建立Pod來保持應用程式的執行,每一個Pod都有一個

深入理解Tomcat系列Context容器和Wrapper容器

ssa stream servlet實例 可用 igel sse ould rip alt 前言 Context容器是一個Web項目的代表,主要管理Servlet實例,在Tomcat中Servlet實例是以Wrapper出現的。如今問題是怎樣才幹通過C

數據庫面試系列mysql的存儲引擎

當前 查看 efault 表鎖 blog 如果 show 事務 測試 mysql的默認存儲引擎是innoDB,是唯一一個支持事務和支持外鍵的存儲引擎, 可以通過:show variables like ‘default_storage_engine‘;查看當前數據庫到默認引

Office 365 系列創建新用戶

office365 創建賬號、分配許可 本章節跟大家分享怎麽去創建新用戶、分配許可以及修改用戶後綴和電子郵件地址。 登錄 Office 365 管理中心,點擊“用戶”--“活動用戶”--“+添加用戶”; 參照截圖,輸入對應的姓名、顯示名、登錄名、密碼等信息點擊“添加”

mongo 3.4分片集群系列詳解平衡器

大致 mongos 搭建 一次 相對 時間 表示 部分 man 這個系列大致想跟大家分享以下篇章(我會持續更新的↖(^ω^)↗): 1、mongo 3.4分片集群系列之一:淺談分片集群 2、mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3、mongo 3.4

多線程系列Balking 模式

實現 vat 正常 bject ret .get 完全 .data 工具 一,什麽是Balking模式 如果現在不合適執行這個操作,或者沒必要執行這個操作,就停止處理,直接返回。在Balking模式中,如果守護條件不成立,就立即中斷處理。 二,例子: 定期將當前數據內容寫入

Spring Boot 系列Spring Boot 通過devtools進行熱部署

前面已經分享過四篇學習文章: 1、Spring Boot 系統之一:Spring Boot 入門 2、Spring Boot 系統之二:Spring Boot 修改預設埠號和context path 3、Spring Boot 系統之三:Spring Boot 整合JdbcTemplat

碼農裝13寶典系列Ubuntu自定義字型縮放級別

目前主流顯示器都有一個很高的解析度,而使用預設的解析度會使字型顯示過小,單純地調整解析度又容易讓字看起來發虛。 系統提供了一個字型縮放級別調整的功能。Windows初始化時就已經為使用者設定好了,而Ubuntu只有兩個選項:100%、200%,顯然不能滿足需求。 那怎麼辦? 這裡需要

輕鬆上雲系列阿里雲容災與備份方案

災備能力是各類雲產品能力與穩定性非常重要的衡量指標,猶記得某友商雲因為資料丟失被索賠1000多萬的慘痛教訓。保障企業業務穩定、IT系統功能正常、資料安全十分重要。因此可以同時保障資料備份與系統、應用容災的災備解決方案應勢而生,且發展迅速。 下面我們來看,在阿里雲和阿里雲產品都有哪些災備的解決方案和能力。

Docker系列Volume 卷的使用——以Redis為例

簡介 卷在Docker裡非常重要,在系統之三中提到過,Docker利用聯合載入技術在root檔案系統層上載入更多的只讀檔案系統,這裡簡稱聯合檔案系統(Union File System),卷是在一個或者多個容器內被選定的目錄,可以繞過這個聯合檔案系統為Docker提供持久資

Java分析系列常見的Thread Dump日誌案例分析

目錄 [隱藏] 症狀及解決方案 下面列出幾種常見的症狀即對應的解決方案: CPU佔用率很高,響應很慢 按照《Java記憶體洩漏分析系列之一:使用jstack定位執行緒堆疊資訊》中所說的方法,先找到佔用CPU的程序,然後再定位到對應的執行緒,最後分析出對應的堆疊資訊

敏捷開發智慧敏捷系列定不定流程和模板?

這是敏捷開發智慧敏捷的第五篇。(之一,之二,之三,之四,之五,之六)緣起(立項時)甲:“你們的設計文件打算怎麼寫?”乙:“到時候再說。”甲:“應該有規範的開發流程和模板,才能寫好設計文件。”乙:“預先定義的流程和模板未必適用,敏捷開發崇尚推遲決策,只有在具體工作之前才能決定是

敏捷開發使用者故事系列使用者故事的分類

這是敏捷開發使用者故事系列的第五篇。(欄目目錄)引子在之一、之二、之三中,我們曾經提到了“作為一個……可以……以便……”的使用者故事描述方式,還提到應該如何描述使用者故事,才能更好地反映客戶價值。下面請嘗試一下描述這兩個故事:1. 如果把“儲存按鈕”統一放在頁面上端而非下面,

MongoDB實戰系列mongodb的分片配置

md01    10.0.0.11 md02    10.0.0.12 md03    10.0.0.14 2、啟動三臺機器的mongod例項 根據Replica Set、Sharding策略部署mongod。將兩個sharding組部署到三臺伺服器上,每個sharding

.Neter玩轉Linux系列crontab使用詳解和Linux的程序管理以及網路狀態監控

基礎篇 實戰篇 一、crontab使用詳解  概述:任務排程:是指系統在某個時間執行的特定的命令或程式。 任務排程分類:       (1)系統工作:有些重要的工作必須周而 復始地執行。       (2)個別使用者工作:個別使用者可能希望執 行某些程式。

PowerDesigner系列執行sql指令碼方式建立資料模型

在PowerDesigner中建立資料模型時,如果有相應的sql指令碼,則不必通過在物理模型中逐個插入相應的欄位方式建立物理模型。可以通過在PowerDesigner中執行sql語句來建立資料模型。 建

《視訊直播技術詳解》系列推流和傳輸

七牛雲於 6 月底釋出了一個針對視訊直播的實時流網路 LiveNet 和完整的直播雲解決方案,很多開發者對這個網路和解決方案的細節和使用場景非常感興趣。結合七牛實時流網路 LiveNet 和直播雲解決方案的實踐,我們用八篇文章,更系統化地介紹當下大熱的視訊直播各環節的關鍵技