版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、Cenwen早期:通過模塊化減少耦合時如何確定模塊劃分的粒度?如何評價冗余和粒度過于復雜的矛盾的依賴方式?諒解:結合性是影響軟件系統(tǒng)復雜性和設計質量的重要因素,模塊化設計的目的是構建模塊之間結合度最大限度地寬松的系統(tǒng),充分利用數(shù)據(jù)結合,減少控制結合,限制共同結合的范圍,避免內(nèi)容結合,從而降低接口的復雜性。在系統(tǒng)體系結構中,模塊化設計對于將相關功能集成到一起,減少相關功能分離的結合性具有重要作用。模塊劃分的粒度決定了最終劃分結果的合理性和有效性。模塊越詳細,定義和開發(fā)就越容易,但是隨著模塊數(shù)量的增加,模塊之間的接口增加,將每個模塊裝配到系統(tǒng)中所需的時間也增加,整體系統(tǒng)測試的復雜性也增加。模塊越大
2、,對整個系統(tǒng)裝配越有利,整個系統(tǒng)的測試復雜性也越低,但整個系統(tǒng)的靈活性較差,難以滿足用戶對系統(tǒng)的多樣性需求。模塊劃分的粒度是不容易掌握的問題,不同產(chǎn)品和項目的粒度方法不同。模塊的粒度應根據(jù)模塊的三個主要特征(相對獨立性、互兼容性、通用性)來確定。每個模塊的聚合度越高,接合性越低,反之亦然。分割模塊時,必須使模塊之間盡可能獨立,使塊中的連接盡可能大,使塊之間的連接盡可能小,并按層分解和細分功能模塊,直到可以輕松構建多個模塊。要綜合考慮模塊的功能、模塊的大小、模塊的出入口等諸多因素。模塊越小,公用范圍就越廣,可以在更多應用程序中重用,但是較小的裝配過程可能會很麻煩,并且重用效率會降低。相反,劃分模
3、塊的粒度越大,裝配的步驟越少,可重復使用的效率越高,但其重復使用范圍受到限制。Cen wenchu:高并發(fā)系統(tǒng)如何處理緩存失敗方案?諒解方案:從硬件到操作系統(tǒng)、從系統(tǒng)軟件到應用程序,緩存的樣子隨處可見。緩存在Web2.0網(wǎng)站(尤其是高流量的并發(fā)系統(tǒng))中發(fā)揮著越來越重要的作用。緩存支持性能提高和高并發(fā)性,同時,當緩存停機導致所有緩存失敗時,所有流量都被后端服務(如數(shù)據(jù)庫層)擠掉,從而導致了另一個問題。此時,過度的壓力導致后端服務無法提供服務或快速響應,等待后端請求響應的緩存未引起“熱”,最終導致“雪崩”問題。在高并發(fā)系統(tǒng)中,解決高速緩存未命中的方法有三種:使用一致Hashing算法。分割數(shù)據(jù)緩存
4、以減少緩存停機對服務的影響。為了在最大限度地抑制散列密鑰重新分配的同時更好地實現(xiàn)負載平衡,需要在服務器數(shù)量較少的情況下增加虛擬節(jié)點,以使服務器均勻分布在環(huán)上,并將服務器增減節(jié)點時出現(xiàn)的緩存重新分配問題降至最低。緩存多份。應用多個寫緩存或應用寫緩存,使中間件復制多個此類緩存,從而在緩存中斷時切換到其他緩存,減少緩存停機對后端數(shù)據(jù)存儲的影響。這種方法最好通過在緩存之間復制來降低應用程序開發(fā)的復雜性。要在高并發(fā)系統(tǒng)中解決緩存失敗問題,必須結合業(yè)務邏輯綜合考慮。實現(xiàn)緩存持久性或半永久性。持久性意味著定期將緩存中的數(shù)據(jù)清理到磁盤上以進行保留,如果緩存出現(xiàn)故障(例如,使用Redis或MemcacheDB在
5、磁盤上存儲某些數(shù)據(jù)),大部分數(shù)據(jù)都將保持不變?!安链疟P的瞬間會影響緩存的效率嗎?”可能有人說。高端硬件(如Fushion IO或SSD)減少了筆刷緩存過程中對服務的影響。這些只是實現(xiàn)的三個想法,各有優(yōu)缺點。要在高并發(fā)系統(tǒng)中解決緩存失敗問題,必須結合業(yè)務邏輯綜合考慮。Cen wenchu:當前應用程序的依賴性監(jiān)測工作進展如何?例如,是否知道依賴高速緩存、高速緩存命中率、利用率等,是否知道依賴外部服務消耗外部服務的時間,以及成功失敗的情況。諒解方案:應用程序監(jiān)控已成為確保系統(tǒng)安全運行的不可缺少的工具,對于提高系統(tǒng)可用性和故障的預警能力,以及最小化故障修復時間,其重要性越來越高。此外,對應用程序相關
6、服務的監(jiān)控也很重要,現(xiàn)在我們可以構建全面的監(jiān)控系統(tǒng),不僅對應用程序本身進行監(jiān)控,還對外部服務進行監(jiān)控。調(diào)用應用相關服務時,打印應用調(diào)用的詳細日志,記錄調(diào)用的返回時間和成功與否,并要求外部或從屬服務提供返回每次調(diào)用所花費時間和故障率的集成接口。通過對這些日志的實時分析發(fā)送郵件和短信預警。Cenwen早期版本:您的系統(tǒng)有內(nèi)部或外部服務嗎?如何管理服務權限,如何執(zhí)行服務升級?諒解備忘錄:系統(tǒng)中服務的使用權限非常重要。特別是對內(nèi)服務和對外服務都提供的系統(tǒng)。設置白名單是管理當前服務權限的最簡單的方法。如果設置了白名單,則只有白名單中的用戶和源IP可以訪問服務,其他人不能訪問。外部調(diào)用服務也使用appke
7、y,這是API接口的關鍵,僅通過此密鑰打開API的門獲取數(shù)據(jù),同時為appkey的申請設置一系列流程以確保安全性。根據(jù)這些appkey設置不同的權限級別,并控制對目標數(shù)據(jù)的訪問和調(diào)用頻率。使用Gearman系統(tǒng)進行“熱”升級。將代理層添加到負載平衡設備的后端。升級時,修改代理層的心跳檢測頁,以截斷掉落到此系統(tǒng)上的通信量,然后升級此系統(tǒng),升級后進行測試,測試完成后在某一段時間內(nèi)升級系統(tǒng),在一段時間內(nèi)無問題測試,然后升級所有其他段。預先準備好回退機制,以確保平穩(wěn)升級,同時將每次升級對用戶的影響降至最低。Cen wenchu:如何處理不同系統(tǒng)之間的耦合?例如,前端系統(tǒng)必須快速響應大量用戶請求,但是依
8、靠后端的服務系統(tǒng),服務系統(tǒng)的瓶頸可能發(fā)生在數(shù)據(jù)庫讀取和寫入的情況下,這種要求區(qū)分系統(tǒng)如何協(xié)同工作?諒解條:不同系統(tǒng)之間的結合性意味著各系統(tǒng)之間的相互依賴。必須熟悉各種聯(lián)接器的特性,選擇不同系統(tǒng)之間的適當聯(lián)接器。在系統(tǒng)之間使用緊耦合時,通常包括與交互對象的直接通信,而不是與松散耦合系統(tǒng)進行交互。如果兩個對象位于不同的系統(tǒng)上,并且被不同的網(wǎng)絡隔離,則可能會出現(xiàn)性能和延遲問題。如果系統(tǒng)之間有松散耦合的基于消息的體系結構,客戶端和服務器都不需要知道對方是如何實現(xiàn)的。如果兩端的消息協(xié)議滿足協(xié)商,客戶端或服務器端實現(xiàn)可以根據(jù)需要進行更改,而不會相互影響。松散耦合提供了緊密聯(lián)接無法提供的許多優(yōu)點,有助于減少
9、客戶端和服務器之間的依賴性。例如,使用異步策略。對于需要快速響應的系統(tǒng),請盡可能將進程更改為異步,以減少請求者經(jīng)歷的響應延遲。如果系統(tǒng)a同步調(diào)用系統(tǒng)b,則a和b緊密組合,而緊密組合的系統(tǒng)需要共同進退,兩個系統(tǒng)必須承擔相同的量,如果b不可用,則a也不可用。如果系統(tǒng)a和系統(tǒng)b通過消息隊列、多播消息、批處理或其他方法異步執(zhí)行,則系統(tǒng)a和系統(tǒng)b彼此獨立,即使b停機,a仍可以繼續(xù)提供服務(即“優(yōu)雅的降級策略”)。這種異步策略可以將高并發(fā)寫入峰值轉換為平緩的寫入速度,從而降低硬件部署成本,同時控制消息隊列的寫入速度,優(yōu)化隊列以防止后端服務的過度壓力。Cenwenchu:在系統(tǒng)優(yōu)化方面,通常如何找到瓶頸,最
10、后如何確定優(yōu)化是有效的?如果可以的話,請舉例說明。諒解組:系統(tǒng)在網(wǎng)上首先進行系統(tǒng)所需的壓力測試,將能承受的最大數(shù)量量化。收集客戶機性能指標和非客戶機性能指標,分析系統(tǒng)的響應時間、并發(fā)用戶數(shù)、吞吐量和硬件資源性能等關鍵因素,最終發(fā)現(xiàn)系統(tǒng)的性能瓶頸。與此同時,通過這種壓力測試,系統(tǒng)確定訪問不良增加時可能出現(xiàn)瓶頸的組件。在壓力測試期間,輸出詳細的日志信息,然后整理日志信息以分析各種組件的性能表現(xiàn)。對于已經(jīng)聯(lián)機的系統(tǒng),最好部署各種狀態(tài)監(jiān)視系統(tǒng)。發(fā)生性能瓶頸時,可以通過這些狀態(tài)監(jiān)視信息以找到性能瓶頸,或將性能瓶頸減少到一定范圍內(nèi),然后按邏輯功能(如靜態(tài)池、動態(tài)池、緩存層次和數(shù)據(jù)庫服務)對在線系統(tǒng)進行分區(qū)
11、。修改每個功能模塊以輸出詳細的日志信息,整理和分析相應的日志信息,查找瓶頸,記錄各個功能塊的性能性能,在優(yōu)化后收集相同的信息,通過比較確定優(yōu)化前后的性能差異。對于單個模塊,可以通過幾個性能分析工具,用于分析Rational Quantify等程序的性能。以下是數(shù)據(jù)庫的瓶頸:收集一天內(nèi)的所有SQL語句,以及每種類型的語句占用的百分比統(tǒng)計信息。收集當前系統(tǒng)的CPU、內(nèi)存和硬盤I/O性能,分析硬件資源瓶頸。收集、分析和整理整個日志。決定資料庫執(zhí)行每個SQL敘述句的平均時間。優(yōu)化效率低下、占用硬件資源且響應緩慢、經(jīng)常調(diào)用的SQL語句。優(yōu)化后的硬件資源性能與以前進行了比較,從而量化了優(yōu)化增長的百分比???/p>
12、之,對于不同的系統(tǒng),查找性能瓶頸的步驟可能會有所不同,但重要數(shù)據(jù)的收集和分析是必不可少的。主持人介紹:feng dahui,現(xiàn)為ding xangyuan(http:/www . dxy . cn)網(wǎng)站CTO。曾擔任Alipay architect、數(shù)據(jù)庫團隊主管和其他職位。提問嘉賓介紹:cenwenchu于2006年加入Alibaba,2007年初開始負責阿里軟件平臺體系結構設計,2007年底開始進入開放平臺領域,2009年8月加入Taobao開放平臺,現(xiàn)為Taobao開放平臺大師。自負沒有特長,但學習能力比較強。回答來賓簡介:楊海潮,新浪首席DBA,負責整個公司的數(shù)據(jù)庫管理工作。專注于數(shù)據(jù)
13、庫設計、性能優(yōu)化、分布式部署方案和高可用性方面的研究。具有豐富的管理和維護經(jīng)驗,特別是在大型并發(fā)批量訪問、大型數(shù)據(jù)庫操作和維護方面。5.18建筑師諒解備忘錄vs .孫力主持人:馮大輝諒解條:在錯綜復雜的龐大系統(tǒng)中,如何避免多行經(jīng)常發(fā)布新代碼對在線業(yè)務的影響?Sun Li:在公司或業(yè)務的快速發(fā)展過程中,應用程序系統(tǒng)的功能越來越豐富,系統(tǒng)模塊也變得非常復雜。在早期階段,總體體系結構不好,系統(tǒng)模塊和多個業(yè)務線之間的結合性很強,以便快速響應需求,代碼也沒有正確規(guī)定,在發(fā)布a系統(tǒng)的a模塊的代碼后,b系統(tǒng)的b模塊出現(xiàn)了問題,b系統(tǒng)的b模塊開發(fā)人員花了一整天的時間發(fā)現(xiàn)了問題,這是a系統(tǒng)的發(fā)布版本之一。因此,
14、在系統(tǒng)長期穩(wěn)定、壓力小的情況下,可能會突然停機或報告錯誤,進行大量的時間診斷,其他系統(tǒng)發(fā)布新版本,并因界面不兼容而引起。解決這些問題不僅浪費了開發(fā)者的大量時間,而且這些問題對在線業(yè)務的影響也很大。如何減少或干脆避免這些問題的發(fā)生?我認為在整個系統(tǒng)體系結構中必須考慮以下因素:回滾代碼版本。代碼回滾功能使您可以輕松地將出現(xiàn)問題的錯誤版本恢復到以前正確的版本。最簡單的方法是通過SVN實現(xiàn)。如果在發(fā)布新版本時出現(xiàn)意外錯誤或錯誤,則可以快速回滾到以前的版本??焖倩貪L功能是必須經(jīng)常發(fā)布的系統(tǒng)的必備功能,因為它不能保證所有新版本的完整性。分層接口和組件。接口和組件使系統(tǒng)模塊之間的抽象能夠在替換接口實現(xiàn)或組件
15、時可靠、無縫地切換系統(tǒng),而無需更改調(diào)用方的代碼。2010年,手機鳳凰網(wǎng)通過這種方式將代碼從TT服務器更改為自行開發(fā)的NoSQL存儲,或無縫遷移主存儲,無需停機。使用接口和組件還可以改進代碼重用,開發(fā)人員可以更可靠地開發(fā)接口實現(xiàn)類和組件。因此,必須在系統(tǒng)內(nèi)部盡可能地分層接口和組件。服務化。服務虛擬化需要將系統(tǒng)所需的特定功能分離為單獨的可靠可靠性服務,從而提高通過商定的協(xié)議進行交互的接口和組件的抽象級別。例如,系統(tǒng)的用戶登錄可以獨立于SSO服務,并將用戶IP尋址功能、文件上傳功能、圖片處理等分別作為單獨的服務處理。您可以部署用于抽象的服務集,以便在所有系統(tǒng)中使用。這將簡化和抽象服務和系統(tǒng)的功能,并
16、使維護和開發(fā)新功能更加容易。您可能認為,在系統(tǒng)發(fā)布新版本后,上傳功能、照片處理功能和登錄功能的操作將不再受到影響。自動化測試。自動化測試有助于發(fā)現(xiàn)人工發(fā)現(xiàn)的錯誤。開發(fā)人員在開發(fā)程序時盡可能多地使用單元測試。在代碼發(fā)布之前執(zhí)行自動單元測試測試,并且只有在整個單元測試通過后才允許發(fā)布。應用監(jiān)視。通過上述方法,雖然不能100%避免經(jīng)常發(fā)布代碼所產(chǎn)生的系統(tǒng)影響,但應盡快知道。與監(jiān)視底層操作系統(tǒng)、數(shù)據(jù)庫等(如系統(tǒng)操作和維護人員使用的Cacti)不同,必須對應用程序進行全面監(jiān)視監(jiān)視系統(tǒng)的I/o、系統(tǒng)服務接口的準確性和響應時間,而不是控制。諒解備忘錄:設計大規(guī)??蓴U展性服務時,需要做什么準備?您是否會考慮分
17、區(qū)、故障、自動化和異步等問題?孫麗:設計大規(guī)模系統(tǒng)的時候,我們首先要考慮滿足用戶的要求,如果不能滿足的話,這個系統(tǒng)就是廢品。其次是系統(tǒng)的可擴展性。我認為可擴展性大致可以從以下兩個方面看出來:功能和要求的可擴展性。功能和要求的可擴展性意味著,隨著業(yè)務的增長,您可以在現(xiàn)有系統(tǒng)中輕松添加和刪除某些功能,并快速響應需求更改。要使系統(tǒng)實現(xiàn)功能和需求的可擴展性,設計者不僅要深入了解需求,還要深入業(yè)務,深入了解業(yè)務,然后結合系統(tǒng)設計,考慮各種業(yè)務需求的可能變化和發(fā)展。性能的可擴展性。性能可擴展性是指能夠應對持續(xù)數(shù)據(jù)增長和不斷增長的訪問的系統(tǒng)。性能的可擴展性可以通過硬件的水平擴展或垂直擴展來實現(xiàn)。的(Scale-Out)。通過硬件升級進行縱向擴展很容易實現(xiàn),但能力有限,因此設計大型系統(tǒng)時,應采用增加系統(tǒng)的橫向擴展方案。水平擴展的最簡單方法是不保存系統(tǒng)??梢酝ㄟ^在負載平衡后端快速添加機器來擴展容量,而無需使用web服務等本地文件、會話等有狀態(tài)的模式。但是,最終數(shù)據(jù)庫往往是集中的,因此,根據(jù)應用程序方案,需要擴展數(shù)據(jù)分區(qū)、主從復制等。為了確保大規(guī)??蓴U展性服務的可靠性、高性能和高可用性,需要自動處理故障(如自動切換故障),以便進行全面
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026云南楚雄州南華興福村鎮(zhèn)銀行工作人員招聘2人備考考試試題附答案解析
- 2026甘肅省酒泉市體育中心招聘3人備考考試題庫附答案解析
- 2026上半年北大荒農(nóng)墾集團有限公司事業(yè)單位招聘112人備考考試題庫附答案解析
- 2026年中國科學院合肥腫瘤醫(yī)院血液透析中心醫(yī)護人員招聘7名參考考試題庫附答案解析
- 生產(chǎn)企業(yè)巡查制度范本
- 煙葉生產(chǎn)信息化管理制度
- 生產(chǎn)領用半成品規(guī)章制度
- 2026天津市和平區(qū)選聘區(qū)管國有企業(yè)管理人員6人備考考試題庫附答案解析
- 安全生產(chǎn)日報管理制度
- 安會生產(chǎn)會辦制度
- 08J02 彩色壓型鋼板外墻保溫隔熱建筑構造
- 光伏發(fā)電安全管理制度匯編
- 國際發(fā)展合作署面試輔導
- 電力設備檢測方案
- 2020中國藥典無水乙醇輔料標準解讀
- 工程造價英語核心詞匯手冊
- 【語文】南昌市小學四年級上冊期末試題(含答案)
- 5噸鹵制品污水處理方案
- 橫向課題申報書示范
- 《安全經(jīng)濟學》課件(共十一章)
- 礦熱爐日常安全培訓課件
評論
0/150
提交評論