五毛QQ項目記

問題與挑戰:某公司為了實現某馬總造福全人類,紅旗插遍全球的宏偉目標,為應對后續用戶量激增的問題。特別安排了一次針對全體用戶的秒殺活動:于XXXX年XX月XX日XX時XX分XX秒開始的秒殺五毛錢一百個QQ幣的活動。每個賬戶僅限一次,總數1000萬個。公司董事會經過有關人員書面提議,大家集體開會討論,經過慎重決策,確定該項目正式立項,成立項目管理委員會,開始項目招標流程。我們成功中標該項目。在相關項目合作手續辦理完成以后,我們成立了五毛QQ項目組。

立項之初,我們分析了項目特點,認識到項目建設難度大。由于業主方是一個廣受歡迎的社交大廠,可以預見到五毛QQ一旦發布,巨大的用戶群體會引來海量用戶注冊、登錄、秒殺,享受各種服務,包括不限于網上商城,QQ空間,QQ游戲,QQ博客等。因此甲方公司對于整體系統性能要求極高。我們必須在架構設計時保持嚴謹、正確、科學的設計方法,才能對項目的功能和質量目標起到保障作用。因此我們決定運用分布式存儲,微服務,負載均衡,DNS等多種分布式架構理論及設計方法,結合分層設計的架構思想,力爭實現業主方提出的1000萬最大并發用戶、3000萬tps、延時最高不超過500ms的秒殺場景的質量需求。下文將從系統分層的角度,詳述在該項目中如何實施分布式架構方法。

一、分布式存儲

由于存儲層的各項性能指標將決定整個系統的性能,因此存儲層的架構設計至關重要。本項目對分布式存儲數據進行了分區,分區方式有水平分區和垂直分區兩種。本項目對分布式存儲數據進行了分區,分區方式有水平分區和垂直分區兩種。水平分區是按照一定的分布策略,將數據分布到不同的節點(庫,表等)去存儲,常見的策略有范圍分區、列表分區(枚舉分區)、hash分區。垂直分區是按照業務字段進行分類并拆分表格,分布存儲到不同的節點。采用分區方案后,針對本項目讀多寫少,我們對每個存儲節點設計成“主從集群”方式實現“讀寫分離”和數據的“多節點備份”。這樣的設計方案適用于性能要求較高的大規模存儲系統,既提升了系統的整體并發性、數據存儲的高可靠性,又保證了數據的可靠性。

在該項目中,3000萬tps的訂單數量數據要高效地、可靠地保存到數據庫,只靠單點集中式數據庫是無法實現的。業務方要求性能的同時,也對存儲服務的可用性、數據存儲的可靠性提出了需求,例如可用性要達到99.9999%,數據丟失率要小于0.00001%,因此分布式存儲的架構方案是該項目的不二之選。我們采取的措施如下:

(1)確定基礎技術的選型。我們選用MySQL開源數據庫作為基礎構件,來搭建分區的每個節點。在每個節點使用兩個MySQL組成“主從復制集群”,通過MySQL的復制,保證兩者數據的一致性。當主庫出現問題時,自動化執行“主從切換”,升級從庫為主庫,繼續提供數據讀寫服務,保證兩者數據的一致性。當主庫出現問題時,自動化執行“主從切換”,升級從庫為主庫,繼續提供數據讀寫服務,保證可用性。

(2)確定分區策略。為了確保數據存儲的均勻性,采用了hash的分布策略。對每一個訂單的關鍵信息進行hash運算,并對節點數進行取模后,得到該訂單應該歸屬的存儲節點。

(3)確定分區數量。經過負載測試,我們得到每個存儲節點上的MySQL主從集群在16核32G內存500G普通SSD磁盤的配置下,在可接受的延時范圍內,能夠達到3萬的tps的性能指標。因此我們決定用1000個分區節點來達到3000萬tps指標。

(4)確定透明性等級。為了讓應用層更方面的訪問數據庫,我們選用了Sharing Proxy數據庫代理構件,向應用層屏蔽了存儲層的細節,達到了“分片透明性”登記。這樣應用層訪問分布式數據庫時,就像訪問單點數據庫一樣簡單。

在落實這些策略以后,我們滿足了客戶所要求的數據存取性能指標,為整個系統的質量達標奠定了基礎。

二、微服務化

“微服務化”主張將傳統的單體應用拆分成一組小的服務,服務之間互相協作,實現務功能。每個服務運行在獨立的進程中,采用輕量級的通信機制協作,保證了每個小服務的封裝性、可重用性、易維護性、易擴展性,用以解決業務的復雜性問題。拆解出來的多個小服務有利于實現系統的高并發、高性能、高可用性。

應用層架構需要滿足業主方提出的最大1000萬并發用戶指標。因此我們采用了微服務設計方案,微服務能提供服務的彈性擴展能力,以及并發的擴展能力。業務上我們選用Java的Spring框架,來實現面向用戶的業務服務,把電子商城的訂單、支付、防偽、溯源,封裝成Web Service。在3000萬tps的模擬用戶壓力測試下,不斷調整和優化微服務的數量,讓應用層的整體資源使用率保持在75%左右,由此確定了各業務微服務的集群數量。

三、負載均衡

通常接入層都會有一個Web服務器,它首先接受客戶端的請求,然后將請求傳遞給應用層的某臺服務器去處理。此時它就充當了“負載均衡”功能,決定如何選取應用服務器。

常見的負載均衡策略有輪詢法、隨機法、源地址哈希法等靜態策略,還有最小連接數法、最快響應速度法動態策略。它對于整個系統的分布式架構具有”導流”的作用,也可以提供”限流””熔斷”等高級負載均衡策略。

本項目中,應用層擁有龐大的應用層服務器,需要在接入層選用高性能的Web服務器,來充當負載均衡器。經過仔細研究分析和調研,我們最終選擇了Nginx來擔當Web服務器,并選取了最小連接數法作為負載均衡策略。這可以讓每個應用層服務器獲取平均網絡連接數,使得每個服務的響應用戶數基本相等,從而盡可能地提高應用層服務器的利用效率。

在該項目中,由于有秒殺業務壓測的場景,所以為了避免單機房的流量瓶頸,更靠近用戶來提供服務。由此,我們采用了建設多機房的方案,我們在北京,上海,武漢,深圳,貴陽五地建設了5個機房,分別服務華北、華東、華中、華南、華西的用戶。每個機房都有兩個接入IP,全部綁定同一個域名。DNS會將域名解析為離訪問用戶最近的IP地址,這樣就可以把全國的用戶按照地理位置分配給不同的機房,從而實現更高層面的”負載均衡”。

系統在測試過程中,我們使用漏掃工具發現不少的系統安全漏洞。因此,我們采取了一系列措施提升系統的安全性,例如采取支持HTTPS的傳輸協議,通過SSL鏈路實現數據防篡改、數據加密等功能。采用堡壘機監控平臺的運維活動,審計所有的運維操作,實現操作系統、數據庫、應用等日志統一采集和分析處理。同時充分將代碼審查、漏洞掃描、滲透測試等安全檢查工作貫穿于維護活動中。

得益于各層面分布式架構方案的綜合實施,”五毛QQ”項目質量指標順利達成。

問題:

1. 如何保障該項目的商業收益?拉新與留存的思考?最重要的3個點?思考過程?

2. 對于該設計您有什么好的想法?您認為最重要的3個點是什么?您是基于什么樣的權衡層面來進行思考的,您的權衡過程是什么?

3. 如何保證每個人只能薅一次羊毛?

4. 這個系統的可靠性,安全性能有什么更好的方案,請詳述最重要的3點,以及您是怎么思考的?

5. 后續業務的挑戰與演化的方向,以及應對最重要的3個點是啥?

6. 馬總,這個活動我們打算啥時候開展啊?2024年春節可以不?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160783.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160783.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160783.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

oracle面試相關的,Oracle基本操作的SQL命令

文章目錄 數據庫-Oracle〇、Oracle用戶管理一、Oracle數據庫操作二、Oracle表操作1、創建表2、刪除表3、重命名表4、增加字段5、修改字段6、重名字段7、刪除字段8、添加主鍵9、刪除主鍵10、創建索引11、刪除索引12、創建視圖13、刪除視圖 三、Oracle操作數據1、數據查詢2、插入…

ubuntu 20.04如何切換gcc/g++/python的版本

ubuntu 20.04如何切換gcc/g/python的版本 1 安裝gcc/g/python2 設置gcc/g/python的備選項3 選擇當前系統要使用的gcc/g/python版本3.1 切換gcc/g/python版本3.2 切換示例 當系統同時存在gcc-9以及gcc-10時該如何切換讓當前的系統gcc版本指向gcc-9或是gcc-10呢?g也同…

Connect-The-Dots_2

Connect-The-Dots_2 一、主機發現和端口掃描 主機發現,靶機地址192.168.80.148 arp-scan -l端口掃描 nmap -A -p- -sV 192.168.80.148開放端口 21/tcp open ftp vsftpd 2.0.8 or later 80/tcp open http Apache httpd 2.4.38 ((Debian)) 111/tcp …

循環隊列詳解!!c 語言版本(兩種方法)雙向鏈表和數組法!!

目錄 1.什么是循環隊列 2.循環隊列的實現(兩種方法) 第一種方法 數組法 1.源代碼 2.源代碼詳解!! 1.創造隊列空間和struct變量 2.隊列判空 3.隊列判滿(重點) 4.隊列的元素插入 5.隊列的元素刪除 …

GIT實踐與常用命令---回退

實踐場景 場景1 回退提交 在日常工作中,我們可能會和多個同事在同一個分支進行開發,有時候我們可能會出現一些錯誤提交,這些錯誤提交如果想撤銷,可以有兩種解決辦法:回退( reset )、反做(revert) keywords:reset、rev…

2023軟件測試的4個技術等級,你在哪個級別?

最近,我們討論了軟件測試工程的的分級,大家都貢獻了自己的想法,對于大家來說,軟件測試人的分級其實也代表了我們的進階方向,職業發展。總體來說,測試工程師未來發展有三個方向: 技術精英 行業專…

層次分析法--可以幫助你做決策的簡單算法

作用 層次分析法是一個多指標的評價算法,主要用來在做決策時,給目標的多個影響因子做權重評分。特別是那些需要主觀決策的、或者需要用經驗判斷的決策方案,例如: 買房子(主觀決策)選擇旅游地(…

android11 申請所有文件訪問權限

Android 11 引入了強制執行分區存儲的限制,導致應用默認不能訪問外部文件。 針對以前涉及較多文件的操作,可采用申請所有文件訪問權限的方式來解決這一問題,實現方式如下。 (雖然這樣做安全性低,官方并不推薦這樣&…

preplexity test

Preplexity test can use model claude and gpt-4, feel speed is ok and only for $10 with coupon (below give a link). Feel ok to try reference link: https://perplexity.ai/pro?referral_codeV6UOS5PH

Shell判斷:模式匹配:case(三)

系統管理工具箱 1、需求:Linux提供的豐富的管理命令,用戶管理,內存管理,磁盤管理,進程管理,日志管理,文件管理,軟件管理,網絡管理等等數十個工具包。如果你能通過shell編…

【代碼隨想錄】算法訓練計劃30

【代碼隨想錄】算法訓練計劃30 1、51. N 皇后 按照國際象棋的規則,皇后可以攻擊與之處在同一行或同一列或同一斜線上的棋子。 n 皇后問題 研究的是如何將 n 個皇后放置在 nn 的棋盤上,并且使皇后彼此之間不能相互攻擊。 給你一個整數 n ,…

微信API:探究Android平臺下Hook技術的比較與應用場景分析

微信API:探究Android平臺下Hook技術的比較與應用場景分析 正文: 在Android平臺開發中,Hook技術是一種常用的技術手段,用于在運行時修改應用程序的行為。下面對一些常見的Hook技術進行比較,并分析它們的適用場景和優缺…

信息系統項目管理師論文

軟考官網:中國計算機技術職業資格網 (ruankao.org.cn) 2020年 2020年下半年試題一:論信息系統項目的成本管理 2019年 2019年下半年試題一:論信息系統項目的整體管理 2019年下半年試題二:論信息系統項目的溝通管理

PCI5565反射內存網技術的應用研究

隨著嵌入式與通信技術的發展,數控系統經歷了由傳統的單處理器的集中式體系結構到開放式體系結構,再到多處理器的分布式數控系統體系結構的發展過程。分布式數控系統以高精、高速的加工特征為發展核心,同時以達到異構網絡間信息的無縫融合&…

分布式鎖3: zk實現分布式鎖

一 zk 實現分布式鎖 1.1 zk分布式操作命令 1.指令: ls / get /zookeeper create /aa "test" delete /aa set /aa "test1" 2..znode節點類型: 永久節點:create /pa…

優秀智慧園區案例 - 上海世博文化公園智慧園區,先進智慧園區建設方案經驗

一、項目背景 世博文化公園是上海的綠色新地標,是生態自然永續、文化融合創新、市民歡聚共享的大公園。作為世博地區的城市更新項目,世博文化公園的建設關乎上海城市風貌、上海文化展示、城市生態環境、市民游客體驗、上海服務品牌等,被賦予…

依托數據、平臺、知識增強等優勢 夸克大模型大幅降低問答幻覺率

“大模型時代,夸克有巨大機會創造出革新性搜索產品。”11月22日,夸克大模型公布了其面向搜索、生產力工具和資產管理助手的大模型技術布局。數據顯示,夸克千億級參數大模型登頂C-Eval和CMMLU兩大權威榜單,夸克百億級參數大模型同樣…

電大搜題——讓學習變得輕松高效

作為一名現代學者,您一定時刻關注著教育領域的進展和創新。今天,我將向大家介紹一個名為“電大搜題”的神奇工具,它將為您的學習之路帶來一場完美的革命。 在快節奏的現代社會中,學習已經成為每個人追求成功的必經之路。然而&…

【數據結構】動態順序表詳解

目錄 1.順序表的概念及結構 2.動態順序表的實現 2.1創建新項目 2.2動態順序表的創建 2.3接口的實現及測其功能 2.3.1初始化 2.3.2尾插 2.3.3頭插 2.3.4尾刪&頭刪 2.3.5打印&從任意位置插入 2.3.6刪除任意位置的數據 2.3.7查找 2.3.8銷毀順序表 3.結語 He…

【交易誤區】初學者常犯的MT4外匯交易錯誤有哪些?

作為初學者,踏入外匯交易市場時,往往會陷入一些常見的誤區,導致交易效果不佳甚至遭受損失。在本文中,我將列舉并解釋五個初學者常見的MT4外匯交易錯誤,并提供相應的解決方案,幫助您避免這些錯誤&#xff0c…