永輝彩食鮮架構概述

背景css

知足整個永輝彩食鮮大B業務從線上到供應鏈的全線業務系統的研發和維護,保證整個系統的穩定性和性能。前端

架構思考mysql

大B業務不一樣於小B業務,它沒有常見的業務高併發的場景,因此更可能是對業務數據的一致性(業務數據基本都跟財務相關),系統的穩定性和常規故障自動恢復能力有更高期盼和要求。同時伴隨業務的及數據增加,總體系統性能要保證的穩定。linux

整體架構圖git

架構演進歷程redis

項目基礎設施搭建 -> 運維自動化 ->數據庫運維構建 -> 分佈式基礎設施搭建 -> 分佈式監控體系構建 -> 分佈式框架自研 -> 業務基礎服務構建 -> 技術分享 -> 開源社區構建spring

(大體的推動從新曆程如上,實際場景下不分嚴格前後順序。)sql

項目基礎設施的建設docker

涉及 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

相關文章
相關標籤/搜索