背景
滿足整個大B業務從線上到供應鏈的全線業務系統的研發和維護,保證整個系統的穩定性和性能。
架構思考
大B業務不同於小B業務,它沒有常見的業務高並發的場景,所以更多是對業務數據的一致性(業務數據基本都跟財務相關),系統的穩定性和常規故障自動恢復能力有更高期盼和要求。同時伴隨業務的及數據增長,整體系統性能要保證的穩定。
業務架構圖
總體架構圖
業務服務架構-核心流
架構演進歷程
項目基礎設施搭建 -> 運維自動化 ->數據庫運維構建 -> 分布式基礎設施搭建 -> 分布式監控體系構建 -> 分布式框架自研 -> 業務基礎服務構建 -> 技術分享 -> 開源社區構建
(大致的推進重新歷程如上,實際場景下不分嚴格先后順序。)
項目基礎設施的建設
涉及 gitlab, svn, jenkins , nexus, sonar, 禪道, 知識庫;剝離出永輝自身的研發基礎設施,減少頻繁的溝通成本,獲取系統的管理員權限便於打通研發和運維自動化。
運維自動化
1. 釘釘自動化報警/通知
涉及jenkins,gitlab,禪道,sonar,知識庫等自動化集成。
2. jenkins 一鍵發布
涉及jenkins的一鍵滾動發布,自動回滾,異常自動重啟,便於運維快速發布,避免手工發布的出錯。
3. docker 容器集群化
從docker單機版到docker集群版本,逐步驗證,逐步推進到線上環境部署,提升現有服務器的資源的利用率,優化服務的穩定性(自動恢復機制),更加精簡運維的維護。(如果高並發場景的業務,考慮實現自動化的彈性擴容服務)
數據庫運維構建
1. 存儲: 數據庫采用mysql存儲,innodb存儲引擎。
2. 讀寫分離: 采用主從mysql 進行讀寫分離。
3. 冷備熱備: 采用主從mysql 進行熱備。
每天進行一次冷備到其他服務器。
磁盤每天進行一次快照存儲。
4. 異地備份: 暫無。
5. 故障切換: 因數據一致性要求較嚴,一般dba手工進行故障恢復。
分布式基礎設施搭建
采用開源的基礎服務設施, 構建整個分布式技術體系, 從而加快完成分布式基礎設施的整體布局,做好主備和故障愈合的預案,從而確保整體基礎設施的穩定性。(ps: 假如是大型的,偏向高並發,長遠的電商業務,可以綜合考慮自研基礎服務設施為優先方案)
1. 分布式任務調度平台
技術選型: xxl-job, 用於后台/異步任務等任務的掛載,確保一些耗時/耗資源/定時的任務和api分離,確保前端api的穩定。
2. 分布式服務中心
技術選型: eureka-server, 用於服務的注冊,負載均衡,故障轉移,健康檢測等服務統一管理。
3. 分布式消息隊列
技術選型: rocketmq, 用於業務的異步解耦,上下游消息的轉發,異構業務的異步通信等。
4. 分布式日志中心
技術選型: elk, 用於應用日志的統一管理,查詢,統計等。
5. 分布式文件服務
技術選型: 七牛文件服務, 用於文件的上傳,下載,文件生命周期的管理,圖片的動態縮放等。
6. CDN
技術選型: 騰訊cdn, 用於圖片,腳本,css等文件的cdn網絡加速,加快前端資源的下載速度。
7. 分布式配置中心
技術選型: apollo, 用於所有項目的配置分類,抽象,灰度發布等管理。
8. 分庫分表中間件
技術選型: sharding-jdbc, 用於對業務開發人員屏蔽數據庫的分庫分表,主從讀寫分離的拆分細節。
9. 搜索服務
技術選型: elasticsearch, 用於全文檢索,相似度文檔(數據)的業務查詢。
10. 分布式緩存
技術選型: redis, 用於業務的分布式緩存,從而加快業務的查詢速度。
分布式監控體系搭建
1. 調用鏈監控
技術選型: pinpoint, 用於所有服務的調用關系的監控分析,里面也包含(cpu,內存,耗時)性能等。未來要遷移成skywalking。
2. 日志監控
技術選型: elk, 用於應用日志的統一管理,查詢,統計等。
3. 服務器監控
技術選型: zabbix, 用於所有linux服務器系統級別的性能監控。
4. DB監控
技術選型: pmm,用於所有線上mysql數據庫的性能監控記錄,慢查詢等分析。
5. 應用監控(性能分析)
技術選型: cat,用於所有線上順向和逆向調用鏈路的分析,數據庫和url耗時的性能分析,服務及服務器的性能分析報表,bsf自研監控報表等。
分布式框架自研
基於開源的分布式基礎設施和分布式的監控體系,通過自研的bsf框架進行粘合;把復雜的配置和復雜的各個分布式組件之間的協作,通過單一bsf框架進行整合,通過簡單的接口對開發者提供標准規范的調用方式;采用類似springcloud的思想,以插件形式對所有的基礎服務進行平行擴展,方便開發人員閱讀和維護;未來基礎服務可以隨時升級替換,只需要保持對開發者的接口兼容即可。
願景: 讓開發人員僅關注快速使用,無需了解底層服務實現,讓開發變得更簡單。
目前已集成插件有:
cat(分布式監控平台),
apollo(分布式配置中心),
elk(分布式日志中心),
eureka(注冊中心),
job(分布式任務調度),
message(消息),
mq(消息隊列),
shardingjdbc(分庫分表),
redis(分布式緩存),
elasticsearch(搜索引擎),
health(bsf健康檢查),
file(文件服務)
等。
同時底層框架bsf和業務框架business剝離,讓通用的底層框架剝離實際的公共業務類庫。
基於bsf和business之上,定義標准的項目腳手架csx-b2b-demo,用於快速構建項目服務。
業務基礎服務構建
主數據 提供公用的業務基礎配置數據。
用戶中心 提供統一用戶登陸鑒權。
流程服務 提供流程的設計,表單設計和流程審批功能。
短信服務 提供永輝等第三方短信平台對接等。
報表 提供線上統一報表查詢和導入導出等。
技術分享
架構組提供進行11場左右的技術分享,同時業務部門也會舉辦一些業務培訓,讓開發人員了解並熟悉底層框架技術原理,日常使用,以及現有產品業務等。
開源社區構建
構建開源技術博客,開源bsf底層技術框架,推進核心技術人員參與技術分享社區和沙龍, 邀請第三方技術人員做一些培訓分享。
關於混合雲
永輝雲 用於內部所有測試開發環境的構建和部分線上服務。
騰訊雲/七牛雲 用於文件服務,第三方cdn,dns等公共服務。
自建機房 用於搭建所有線上服務,數據庫,容器集群,大部分基礎服務設施等等。
其他
暫未涉及前端,大數據,機器學習(人工智能),測試平台相關。
by 首席架構師 車江毅
2019-12-20