摘要:包括服務的自動化部署,以及鏈路監控等并未細說提及。結語誠然,整個服務架構可以輕松應對千萬級并發。期望,整個服務架構能伴隨公司繼續成長壯大。
背景介紹 回顧
ShareSDK,顧名思義,分享的SDK組件,公司基于互聯網,早期主要以ShareSDK起家。今日思來,很幸運,能陪著ShareSDK一起成長。
如圖
經典的單體應用架構, 和很多初創企業一樣,當時采用這種架構。用redis等緩存擋住并發,用MySQL來存儲數據。
前端的報表分析直接操作MySQL即可。
我并不反對單體架構,反而我覺得很合適,由于初創企業業務形態并不穩定,單體架構其實很容易調整,殺雞焉用牛刀。
公司是國內第一家做移動端分享SDK的企業,隨著業務發展,由于幾乎每個APP都會有分享功能的需求,業務發展飛快。
我記得當時一個“魔漫相機”App就占據了我們半壁帶寬。
在業務請求的入口并未根據業務做輕重之分,導致數據交互類的接口以及日志數據上報的接口共享網關。
業務高峰,請求擁堵,核心數據交互的接口失敗導致用戶體驗極差
服務降級無法實施,相對而言,日志上報接口并不屬于核心業務流程
無法做線路區分,只能統一使用BGP,帶寬等成本高
統計分析早期數據直接落地MySQL,通過MySQL做統計分析。
數據插入并發數受限,性能堪憂
存儲集群未拆分,不能根據業務特點分而治之
查詢慢
業務支持受限由于整個架構比較簡單,對于復雜的業務以及大數據分析支持基本上談不上
基于單體應用,我們基本上看不到未來,這除了單體應用本身的局限性之外,在架構上本身也跑不動。這樣就造就了成本以及資源的重度浪費。
系統架構演化 服務架構通過業務域名拆分以及智能DNS,實現不同地域國家省市&不同業務落入不同網關(不同機房),不同帶寬線路
業務拆分、微服務化,不同業務區別對待,資源上也是分而治之
服務拆分: 公共服務 & 具體業務服務
梳理后的整個服務架構,從請求端到網關API再到具體的業務處理,流量上可以隨意切割以及合并,很方便的做擴容以及縮容操作。
數據架構數據分為基礎數據以及統計分析數據。
將核心關鍵的基礎數據,比如配置信息等提取出來,分庫存儲,將所有的統計分析數據以及可異步存儲數據落地本地磁盤,再由flume實時拉走。這樣帶來的好處有很多:
基礎數據可以選用高性能存儲,極大加速部分核心業務響應
采用模hash、一致性hash、日期等算法分隔不同的數據,分實例存儲,方便擴容
引入搜索引擎,專職前端&客戶端的查詢請求
引入Flume、Kafka,采用落地日志 + Flume + Kafka實現數據流分發,即使Flume掛了,由于日志先落地,所以待Flume修復后,仍然可以保證數據無丟失無斷層繼續傳輸,而在Flume上面,我們采用了Kafka Channel,而不是普通的FileChannel、MemoryChannel等,使之即使在流量高峰,也不至于導致FlumeServer掛起
不同數據分析需求(如APM、業務統計等等)接入FlumeServer 或者 Kafka 按需獲取數據處理
心得體會上述簡單講到了服務架構以及數據架構的演化,但是細致各個環節可以有很多道道。包括服務的自動化部署,DI/DC以及鏈路監控等并未細說提及。
對于個人,最深刻的理解有兩點:
分而治之
充分理解各個軟件工具本身適合的領域,讓專業的軟件工具對付它們擅長的業務,而不是一招拍死
充分理解業務
架構基于業務,好不好的架構要看什么樣的業務,如果換成公司的IMSDK,顯然這個架構完全不合適。
追求架構簡單
數據每一次流動,都可能伴隨一定的異常。那么架構簡單如何體現?
能用一兩層服務解決的事情絕對不使用三層服務,方便數據追蹤跟進以及業務排錯。
其次,服務業務盡可能簡單,ShareSDK的配置服務以及社交信息服務等都是各自獨立,這在團隊分工優化上也顯得簡單。
誠然,整個服務架構可以輕松應對千萬級并發。但是,我認為可以優化的空間還有很多。期望,整個ShareSDK服務架構能伴隨公司繼續成長壯大。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71162.html
摘要:特別是將消息看的很重的平臺。場合用戶到百萬時,數據量到千萬級后已經滿足第一個條件后,平臺再來幾個推廣活動。用戶同時上線,參加活動會給用戶發消息的時候平臺對用戶進行推送消息,進行促銷時,參加活動,活動獎勵等使用消息通知的。 說明 第一次寫,也不知道寫成什么樣,喜歡的給個贊,不喜歡的給我留言?!?螞蟻爬樹不怕高,有心學習不怕老。 場景 消息對于用戶和平臺來說,就是平臺和用戶之間的橋梁。...
摘要:特別是將消息看的很重的平臺。場合用戶到百萬時,數據量到千萬級后已經滿足第一個條件后,平臺再來幾個推廣活動。用戶同時上線,參加活動會給用戶發消息的時候平臺對用戶進行推送消息,進行促銷時,參加活動,活動獎勵等使用消息通知的。 說明 第一次寫,也不知道寫成什么樣,喜歡的給個贊,不喜歡的給我留言。—— 螞蟻爬樹不怕高,有心學習不怕老。 場景 消息對于用戶和平臺來說,就是平臺和用戶之間的橋梁。...
閱讀 1531·2021-09-22 15:35
閱讀 2011·2021-09-14 18:04
閱讀 883·2019-08-30 15:55
閱讀 2454·2019-08-30 15:53
閱讀 2684·2019-08-30 12:45
閱讀 1205·2019-08-29 17:01
閱讀 2583·2019-08-29 15:30
閱讀 3520·2019-08-29 15:09