您好,登錄后才能下訂單哦!
這篇文章主要介紹了mysql大型網站技術架構核案例分析的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇mysql大型網站技術架構核案例分析文章都會有所收獲,下面我們一起來看看吧。
七、隨需應變:網站的可擴展架構
擴展性(Extensibility):指對現有系統影響最小的情況下,系統功能可持續擴展或提升的能力。是系統架構設計層面的開閉原則,架構設計考慮未來功能擴展,當系統增加新功能時,不需要對現有系統的結構和代碼進行修改。
伸縮性(Scalability):指系統能夠通過增加(減少)自身資源規模的方式增強(減少)自己計算處理事務的能力。
A.構建可擴展的網站架構
1.軟件架構師最大的價值不在于掌握多少先進的技術,而在于具有將一個大系統切分成N個低耦合的子模塊的能力,這些子模塊包含橫向的業務模塊,也包含縱向的基礎技術模塊。
2.核心思想是模塊化,在此基礎上,降低模塊間的耦合性,提高模塊的復用性。
B.利用分布式消息隊列降低系統耦合性
1.事件驅動架構
事件驅動架構(Event Driven Architecture):通過在低耦合的模塊之間傳輸事件消息,以保持模塊的松散耦合,并借助事件消息的通信完成模塊間合作,常用的是分布式消息隊列。
消息隊列利用發布—訂閱模式工作,消息發送者發布消息,一個或者多個消息接收者訂閱消息。
2.分布式消息隊列
隊列是一種先進先出的結構 ,應用程序可以通過遠程訪問接口使用分布式消息隊列,進行消息存取操作,進而實現分布式的異步調用。
消息生產者應用程序通過遠程訪問接口將消息推送給消息隊列服務器,消息隊列服務器將消息寫入本地內存隊列后立即返回成功響應給消息生產者。消息隊列服務器根據消息訂閱列表查找 訂閱消息的消息消費者應用程序 ,將消息隊列中的消息按照先進先出(FIFO)的原則將消息通過遠程通信接口發送給消息消費者程序。
分布式消息隊列可以很復雜,比如可以支持ESB(企業服務總線)、支持SOA(面向服務的架構),也可以很簡單使用MySQL記錄:消息生產者程序將消息當作數據記錄寫入數據庫,消息消費者程序查詢數據庫并按記錄寫入時間戳排序,就實現了一個事實上的分布式消息隊列。
C.利用分布式服務打造可復用的業務平臺
1.分布式服務通過接口分解系統耦合性,不同子系統通過沙漠玫瑰的接口描述進行服務調用。
2.巨無霸系統的問題:編譯、部署困難;代碼分支管理困難;數據庫連接耗盡;新增業務困難;
3.解決方案
縱向拆分:將一個大應用拆分為多個小應用
橫向拆分:將復用的業務拆分出來,獨立部署為分布式服務,新增業務只需要調用這些分布式服務,不需要依賴具體的模塊代碼
4.Web Service與企業級分布式服務
缺點:臃腫的注冊與發現機制;低效的XML序列化手段;開銷相對較高的HTTP遠程通信;復雜的部署與維護手段;
5.大型網站分布式服務的需求與特點
負載均衡、失效轉移、高效的遠程通信、整合異構系統、對應用最少侵入、版本管理、實時監控
6.分布式服務框架設計:Thrift、Dubbo
D.可擴展的數據結構
利用NoSQL數據庫中使用的ColumnFamily(列族)設計。
E.利用開放平臺建設網站生態圈
1.開放平臺是網站內部和外部交互的接口,外部需要面對人多的第三方開發者,內部需要面對網站內諸多的業務服務。
2.架構:API接口、協議轉換、安全、審計、路由、流程
八、固若金湯:網站的安全架構
A.網站應用攻擊與防御
1.XSS攻擊
XSS攻擊即跨站腳本攻擊(Cross Site Script),指黑客通過篡改網頁,注入惡意HTML腳本,在用戶瀏覽網頁時,控制用戶瀏覽器進行惡意操作的一種攻擊方式。
一種攻擊是反射型,攻擊者誘使用戶點擊一個嵌入惡意腳本的鏈接,達到攻擊的目的
另一種攻擊是持久型XSS攻擊,黑客提交含有惡意腳本的請求,保存在被攻擊的Web站點的數據庫中,用戶瀏覽網頁時,惡意腳本被包含在正常頁面中,達到攻擊的目的。經常用在論壇、博客等Web應用中。
防范:消毒,過濾危險字符;HttpOnly,禁止頁面JS訪問帶有HttpOnly屬性的Cookie;
2.注入攻擊
分為SQL注入和OS注入
SQL注入獲取數據庫結構:利用開源軟件程序、錯誤回顯、盲注
SQL注入防范:消毒;參數綁定,使用預編譯手段,綁定參數;
3.CSRF攻擊
CSRF(Cross Site Request Forgery,跨站點請求偽造),攻擊者通過跨站請求,以合法用戶的身份進行非法操作。主要手法是利用跨站請求,在用戶不知情的情況下,以用戶的身份偽造請求,利用了瀏覽器Cookie或服務器Session策略,盜取用戶身份。
防范:表單Token、驗證碼、Referer check(檢查HTTP請求頭的Referer域中記錄的請求來源)
4.其他攻擊漏洞
Error Code:錯誤回顯、HTML注釋、文件上傳、路徑遍歷
5.Web應用防火墻:ModSecurity
6.網站安全漏洞掃描
B.信息加密技術及密鑰安全管理
1.單向散列加密:md5、sha等,加salt
2.對稱加密:DES算法、RC算法等,加密使用同一個密鑰
3.非對稱加密:RSA算法
4.密鑰安全管理
把密鑰和算法放在一個獨立的服務器上,甚至做成一個專用的硬件設施,應用系統通過調用服務實現數據加解密。
將解密算法放在應用系統中,密鑰則放在獨立服務器中,實際存儲時,密鑰被切分成數片,加密后分別保存在不同存儲介質中,兼顧密鑰安全性的同時又改善了性能。
C.信息過濾與反垃圾
1.文本匹配:解決敏感詞過濾的問題
少量內容使用正則替換一類的就可以
詞多且并發高時,使用Trie樹算法(雙數組Trie算法)
構造Hash表進行文本匹配
有時還需要進行降噪處理,如”阿_拉_伯”
2.分類算法:貝葉斯算法、TAN算法、ARCS算法
3.黑名單:Hash表、布隆過濾器
D.電子商務風險控制
1.風險:賬戶風險、買家風險、賣家風險、交易風險
2.風控
機器自動識別高風險交易和信息會發送給風控審核人員進行人工審核,機器風控的技術和方法也不斷通過人工發現的新風險類型進行逐步完善。
規則引擎:當交易的某些指標滿足一定條件時,就會被認為具有高風險的欺詐可能性。
統計模型:使用分類算法或者更復雜的機器學習算法進行智能統計。根據歷史交易中的欺詐交易信息訓練分類算法,然后將經過采集加工后的交易信息輸入分類算法,即可得到交易風險分值。
九、淘寶網的架構演化案例分析
1.LAMP->JAVA/ORACLE->MySQL/NoSQL
2.業務推動技術不斷進步
十、維基百科的高性能架構設計分析
A.Wikipedia網站整體架構:LAMP+開源產品,GeoDNS、LVS、Squid、Lighttpd、PHP、Memcached、Lucene、MySQL
B.Wikipedia性能優化策略
1.前端性能優化
前端架構的核心是反向代理服務器Squid集群,由LVS負載均衡,在反向代理之前,通過CDN返回。
Wikipedia CDN緩存的準則:內容頁面不包含動態信息;每個內容頁面有唯一的REST風格的URL;在HTML響應頭寫入緩存控制信息;
2.服務端性能優化:使用APC、Imagemagick、Tex、替換PHP的字符串查找函數starter()使用更優化的算法
3.后端性能優化:
緩存
熱點特別集中的數據直接緩存到應用服務器的本地內存中
緩存數據的內容盡量是應用服務器可以直接使用的格式
使用緩存服務器存儲session對象
相比數據庫,Memcached的持久化連接非常廉價,有需要就創建一個
MySQL
使用較大的服務器內存
使用RAID0磁盤陣列以回事訪問
將數據庫事務一致性設置在較低水平
如果Master數據庫宕機,立即將應用切換到Salve數據庫,同時關閉寫服務
十一、海量分布式存儲系統Doris的高可用架構設計分析
對于一個數據存儲系統而言,高可用意味著:高可用的服務、高可靠的數據
A.分布式存儲系統的高可用架構
1.冗余:服務器熱備、數據多份存儲
2.系統整體劃分:
應用程序服務器:存儲系統的客戶,對系統發起數據操作請求
數據存儲服務器:存儲系統的核心,存儲數據、響應應用服務器的數據操作請求
管理中心服務器:由兩臺機器組成的主-主熱備的小規模服務器集群,負責集群管理,對數據存儲集群進行健康心跳檢測;集群擴容、故障恢復管理;對應用程序服務器提供集群地址配置信息服務等
B.不同故障情況下的高可用解決方案
1.分布式存儲系統的故障分類:瞬時故障、臨時故障、永久故障
2.瞬時故障解決:多次重試
3.臨時故障解決:需要人工干預,有問題服務器使用臨時存儲服務器
4.永久故障解決:啟用備用服務器替代永久失效服務器
十二、網購秒殺系統架構設計案例分析
A.秒殺活動的技術挑戰:對現有網站業務造成沖擊、高并發下的應用,數據庫負載、突然增加的網絡及服務器帶寬、直接下單
B.秒殺系統的應對策略
秒殺系統獨立部署
秒殺商品頁面靜態化
租借秒殺活動網絡帶寬
動態生成隨機下單頁面URL
C.秒殺系統架構設計
1.如何控制秒殺商品頁面購買按鈕的點亮:使用一個JS文件,開始時修改其中內容,每次都請求,不被CDN等緩存,使用隨機版本號。
2.如何只允許第一個提交的訂單被發送到訂單子系統:控制進入下單頁面的入口,只有少數用戶能進入,其他用戶直接進入秒殺結束頁面。比如10臺服務器,每臺處理10個請求,當請求超過10個,其他返回錯誤,再請求全局緩存記錄,如果是第一個,進入訂單頁面,其他返回失敗。
十三、大型網站典型故障案例分析
A.寫日志也會引發故障
應用程序自己的日志輸出配置和第三方組件日志輸出要分別配置
檢查log配置文件,日志來玩吧米歇爾考慮至少為Warn
需要關閉某些第三方組件可能輸出的太多Error日志
B.高并發訪問數據庫引發的故障
首頁不應該訪問數據庫
首頁應該是靜態的
C.高并發情況下鎖引發的故障
使用鎖操作要謹慎
D.緩存引發的故障
緩存服務器已經是網站架構不可或缺的一部分,需要和數據庫一樣的級別去管理
E.應用啟動不同步引發的故障
F.大文件讀寫獨占磁盤引發的故障
小文件和大文件不要共用存儲
G.濫用生產環境引發的故障
訪問生產環境要格外小心,數據庫請專門的DBA維護
H.不規范的流程引發的故障
代碼提交前用diff命令進行比較,確認沒有提交不該提交的代碼;加強code review,提交前至少被一個其他工程師做過code review并共同承擔因代碼引起的故障責任
I.不好的編程習慣引發的故障
注意對空對象、空值等的處理
十四、架構師領導藝術
A.關注人而不是產品
1.一群優秀的人做一件他們熱愛的事,一定能取得成功
2.最好的軟件管理是發掘項目組每個成員的優秀潛能
3.尋找一個值得共同奮斗的目標,營造一個讓大家都能最大限度發揮自我價值的工作氛圍
B.發掘人的優秀
1.是事情成就了人,而不是人成就了事
2.大多數人,包括我們自己,都比自己以為的更優秀,有些優秀需要在合適的環境中才會被激發出來,比如做一些有挑戰的事,和更優秀的人合作,抑或擁有了超越自我的勇氣
3.發掘人的優秀遠比發掘優秀的人更有意義
C.共享美好藍圖
1.藍圖應該是表述清楚的:產品要做什么、不做什么、要達到什么業務目標
2.藍圖應該是形象的:產品能為用戶創建什么價值、能實現什么樣的市場目標、產品最終會長什么樣
3.藍圖應該是簡單的:一句話話說明白:我們在干什么
4.架構師要保持對目標藍圖的關注,對任何偏離藍圖的設計和決定保持警惕,錯誤的偏離要及時修正,必要的變更要經過大家討論,并且需要重新獲得大家的認同。
D.共同參與架構
1.不要只有架構師一個人擁有架構
2.讓其他人維護框架與架構文檔
E.學會妥協
1.對架構和技術方案的反對意見,其實意味著架構和技術方案被關注、被試圖理解和接受。架構師不應過于敏感,應該坦率分享意見,求同存異
2.對于技術細節的爭論應該立即驗證而不是繼續討論
3.當大家不在討論架構的時候,表明架構已經融入到項目、系統和開發者中了,架構師越早被遺忘表明架構越成功
F.成就他人
1.我們的工作不僅是生產產品,還要成就人,并最終成就我們自己
2.做成一個項目不但要給客戶創造價值,為公司盈利,還要讓項目成員獲得成長
3.架構師作為團隊的技術領導者,在項目過程中不要去試圖控制什么,帶著一個彈性的計劃和藍圖推進,團隊會管好他們自己
十五、網站架構師職場攻略
開發軟件的目的是為了解決現實世界的問題,但是很多時候人們并不清楚真正的問題是什么。
軟件開發過程中也會遇到很多問題,需要協調各方面的利益關系獲取盡可能大的支持,需要平衡客戶需求、軟件產出、開發資源之間的關系,需要搞定許多事情才能實現軟件設計最初的藍圖。
A.發現問題,尋找突破
1.所謂問題,就是體驗——期望,當體驗不能滿足期望,就會覺得出了問題。消除問題有兩種手段:改善體驗或者降低期望。降低期望只是回避了問題,而如果直面期望和體驗之間的差距,就會發現問題所在,找到突破點。
2.新員工首先要做的事情是融入團隊
3.新員工最不需要做的事情就是證明自己的能力。
B.提出問題,尋求支持
1.問題被發現,它只是問題發現者的問題,而不是問題擁有者的問題,如果想要解決一個問題,就必須提出這個問題,讓問題的擁有者知道問題的存在。
2.提出問題Tips:
把“我的問題”表述成“我們的問題”
給上司提封閉式問題(給出AB方案讓上司選擇哪個更好),給下屬提開放式問題
指出問題而不是批評人
用贊同的方式提出問題
3.所謂直言有諱是指想要表達的意圖要直截了當說明白,不要兜圈子,但是在表達方式上要有所避諱,照顧到當事人的感受
C.解決問題,達成績效
1.解決我的問題之前,先解決你的問題
你幫別人解決了問題,別人也會幫你解決問題
在幫別人解決問題的過程中,熟悉了情況
解決別人的問題用的是你的解決方案,這個方案在你的控制之中
2.適當的逃避問題
十六、漫話網站架構師
A.按作用劃分架構師
設計型架構師、救火型架構師、布道型架構師、Geek型架構師
B.按效果劃分架構師
夏爾巴人架構師:通常會開發項目中最具技術難度和挑戰性的模塊、斯巴達人架構師、達官貴人架構師
C.按職責角色劃分架構師
產品架構師:參與產品的整個生命周期、基礎服務架構師(平臺型架構師)、基礎設施架構師
D.按關注層次劃分架構師
只關注功能的架構師、關注非功能的架構師、關注團隊組織與管理的架構師、關注產品運營的架構師、關注產品未來的架構師
E.按口碑劃分架構師
最好的架構師、好的架構師、一般的架構師、差的架構師、最差的架構師
F.非主流方式劃分架構師
普通架構師、文藝架構師、1+1架構師
附錄A:大型網站技術一覽
A.前端架構
瀏覽器優化技術、CDN、動靜分離,靜態資源獨立部署、圖片服務、反射代理 、DNS
B.應用層架構
開發框架、頁面渲染、負載均衡、Session管理、動態頁面靜態化、業務拆分、虛擬化服務器
C.服務層架構
分布式消息、分布式服務、分布式緩存、分布式配置
D.存儲層架構
分布式文件、關系數據庫、NoSQL數據庫、數據同步
E.后臺架構
搜索引擎、數據倉庫、推薦系統
F.數據采集(日志)與監控
瀏覽器數據采集、服務器業務采集、服務器性能數據采集、系統監控、系統報警
G.安全架構
Web攻擊、數據保護
H.數據中心機房架構
機房、機柜、服務器
關于“mysql大型網站技術架構核案例分析”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“mysql大型網站技術架構核案例分析”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。