




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
傳統(tǒng)企業(yè)核心系統(tǒng)架構(gòu)優(yōu)化行動指南
【摘要】很多企業(yè)的核心系統(tǒng)隨著業(yè)務(wù)的快速發(fā)展,一段時間后會出現(xiàn)運行緩慢、運行卡頓等非正常情況。對于這類性能問題的解決大多受系統(tǒng)本身架構(gòu)限制,除了對資源進行優(yōu)化外,大多處于被動狀態(tài)。資金和技術(shù)雄厚的傳統(tǒng)企業(yè)可以采取比較激進的做法,進行服務(wù)化重構(gòu),或升級系統(tǒng)的當(dāng)前版本,但激進的做法往往面臨的高風(fēng)險,本文將結(jié)合實際優(yōu)化過案例,從整體解決方案的角度剖析該類問題的優(yōu)化經(jīng)驗及技巧。很多傳統(tǒng)企業(yè)的核心應(yīng)用系統(tǒng)大多是單體應(yīng)用:1-2臺APP應(yīng)用,后端1個數(shù)據(jù)庫實例,如下圖:稍微好一點的可能會有一臺單獨的服務(wù)器用來部署報表類應(yīng)用(報表業(yè)務(wù)與應(yīng)用實現(xiàn)應(yīng)用層面的解耦),但數(shù)據(jù)方面大多還是與APP共用統(tǒng)一數(shù)據(jù)庫,如下圖:這實際上是由于企業(yè)的業(yè)務(wù)實際情況和行業(yè)屬性導(dǎo)致的,該類核心應(yīng)用系統(tǒng)大多為外采的、成熟的商業(yè)產(chǎn)品(迭代較慢,1~2年可能才有新版本推出),可以滿足企業(yè)的正常業(yè)務(wù)系統(tǒng),但大多會隨著企業(yè)自身業(yè)務(wù)的快速發(fā)展,一段時間后會出現(xiàn)系統(tǒng)運行緩慢、運行卡頓等非正常情況。相信很多傳統(tǒng)企業(yè)的IT工程師都會面臨該類問題(就我本人隨機與幾家不同區(qū)域的傳統(tǒng)企業(yè)信息負(fù)責(zé)人溝通后,全部面臨或是曾經(jīng)面臨過),對于這類性能問題的解決大多受系統(tǒng)本身架構(gòu)限制,除了對資源進行優(yōu)化外,大多處于被動狀態(tài)。另外對該類應(yīng)用系統(tǒng)的性能問題進行分析后,大多的問題點也都集中在了數(shù)據(jù)庫層面,誠然,即使中大型傳統(tǒng)企業(yè)的核心系統(tǒng)其使用人數(shù)和并發(fā)量也基本上處于一個較低的值,單體應(yīng)用、一臺Tomcat可以滿足應(yīng)用層面的并發(fā)(有一些情況除外,另外,據(jù)簡單訪談,使用Tomcat的也相對少一點)。當(dāng)然,資金和技術(shù)雄厚的傳統(tǒng)企業(yè)可以采取比較激進的做法,即對現(xiàn)有核心系統(tǒng)進行服務(wù)化重構(gòu),或是冒高風(fēng)險、花大價錢升級系統(tǒng)的當(dāng)前版本(因為傳統(tǒng)企業(yè)信息化建設(shè)相對閉塞滯后,同時也處于求穩(wěn)的出發(fā)點,系統(tǒng)版本幾年不更新很常見),激進的做法往往面臨的高風(fēng)險,也見過太多傳統(tǒng)企業(yè)在所謂互聯(lián)網(wǎng)轉(zhuǎn)型和核心系統(tǒng)重構(gòu)方面全面失敗的案例。結(jié)合實際優(yōu)化過的幾個企業(yè)案例,從整體解決方案的角度剖析一下該類問題的優(yōu)化經(jīng)驗及技巧??偟膩碚f,可以分為技術(shù)優(yōu)化和業(yè)務(wù)優(yōu)化。其中技術(shù)優(yōu)化包括硬件升級、參數(shù)類優(yōu)化;業(yè)務(wù)優(yōu)化是指結(jié)合業(yè)務(wù)細(xì)節(jié),對數(shù)據(jù)庫的sql、程序代碼以及架構(gòu)等方面進行優(yōu)化工作,具體如下。
一、技術(shù)優(yōu)化技術(shù)優(yōu)化可以分為對硬件進行升級和對各類操作系統(tǒng)、中間件等進行參數(shù)優(yōu)化兩類。其中在系統(tǒng)部署上線前,就應(yīng)該對系統(tǒng)響應(yīng)的用戶量、并發(fā)量、數(shù)據(jù)量等進行評估,選擇適合的硬件配置、操作系統(tǒng)、中間件等并對其進行相應(yīng)的安全加固和參數(shù)優(yōu)化。實際上當(dāng)系統(tǒng)出現(xiàn)性能問題時,大多第一時間想到的是對硬件進行升級,如:增加內(nèi)存、升級存儲(如HDD升級到SSD等)、升級網(wǎng)絡(luò)交換機擴大帶寬、升級服務(wù)器等。這是一種簡單有效但不治本的方法,甚至在治標(biāo)方面也難以得到持久,因為系統(tǒng)的性能問題在硬件和應(yīng)用之間,還有操作系統(tǒng)、中間件等,需要與之相互配套,之前也遇到過32位操作系統(tǒng)跑64G內(nèi)存的情況(實則真的有一些老舊的應(yīng)用真實地運行在32位操作系統(tǒng)上)。在對硬件資源進行升級的同時,還應(yīng)配套對操作系統(tǒng)、中間件、數(shù)據(jù)庫等的參數(shù)進行優(yōu)化,確保最大化、最合理地使用硬件資源,從而做到在吞吐量、并發(fā)量以及響應(yīng)速度、處理速度等方面得到顯著的提升。參數(shù)類優(yōu)化整體可以分為如下:(1)OS級別的優(yōu)化:包括操作系統(tǒng)類型選擇(Windows/Linux)、內(nèi)核更新升級(如需)、內(nèi)核參數(shù)、網(wǎng)絡(luò)參數(shù)、安全參數(shù)等(如:系統(tǒng)打開文件最大數(shù)、最大進程數(shù)、關(guān)閉路由包轉(zhuǎn)發(fā)、處理無源路由包、優(yōu)化消息隊列長度、設(shè)置最大內(nèi)存共享大小、Timewait數(shù)量、優(yōu)化swap、最小化安裝操作系統(tǒng)關(guān)閉無用軟件服務(wù)和端口等),另外OS級別的優(yōu)化還可以根據(jù)業(yè)務(wù)類型將日志類、備份類的存儲硬盤與業(yè)務(wù)盤隔離劃分,降低讀寫壓力,提高存儲的IOPS。(2)中間件參數(shù)優(yōu)化:主要是應(yīng)用系統(tǒng)所運行的中間件環(huán)境,如Weblogic、Tomcat等。選型方面在這里不對Weblogic和Tomcat進行詳細(xì)對比,但大多情況下,可以使用Tomcat對Weblogic進行替代(切身經(jīng)驗,一般更換起來不難),省錢,維護且方便。以Tomcat為例,主要參數(shù)優(yōu)化有:對線程池、最大線程數(shù)、JVM、連接器方式(bio、nio和apr,三種方式性能有差別,一般來說apr的性能相對最優(yōu))、日志優(yōu)化(減少debug日志輸出等)、日志切割(日志如未優(yōu)化切割,單文件較大,超過10幾G時,寫入讀取會降低)等。(3)數(shù)據(jù)庫參數(shù)優(yōu)化:在OS參數(shù)優(yōu)化的前提下,對數(shù)據(jù)庫參數(shù)進行優(yōu)化,主要包括(以O(shè)racle為例)sga、pga、shared_pool_size、db_cache_size、sort_area_size、processes、session等。另外還需要對密碼大小寫、密碼失效次數(shù)、動靜態(tài)監(jiān)聽、數(shù)據(jù)庫備份等方面進行相應(yīng)的優(yōu)化設(shè)置。實際上,技術(shù)方面的優(yōu)化多在系統(tǒng)部署上線前進行的,與業(yè)務(wù)方面關(guān)系不是很大,切多為通用的最佳實踐,按照相應(yīng)的官方手冊文檔結(jié)合自身實際經(jīng)驗,大多可以調(diào)整優(yōu)化為一個相對不錯的環(huán)境。但在日常工作中,當(dāng)出現(xiàn)性能問題的時候,很多人會選擇優(yōu)化硬件升級而忽略參數(shù)方面優(yōu)化,導(dǎo)致硬件升級的成效不大,這一點是要額外注意的,需要通過操作系統(tǒng)、中間件和數(shù)據(jù)庫等方面的參數(shù)優(yōu)化,最大化、最合理的挖掘和使用硬件資源,為應(yīng)用系統(tǒng)和數(shù)據(jù)提供最佳、最優(yōu)運行環(huán)境。
二、業(yè)務(wù)優(yōu)化業(yè)務(wù)優(yōu)化是指在業(yè)務(wù)人員和業(yè)務(wù)場景的配合下,提供相關(guān)技術(shù)手段對應(yīng)用系統(tǒng)、數(shù)據(jù)庫等進行優(yōu)化,整個優(yōu)化過程與業(yè)務(wù)邏輯規(guī)則聯(lián)系密不可分。大致可以有:sql優(yōu)化、代碼優(yōu)化、架構(gòu)優(yōu)化等幾個方面。1、sql優(yōu)化sql方面的優(yōu)化除了監(jiān)控數(shù)據(jù)庫運行緩慢的sql對其進行索引優(yōu)化外,還包括sql改寫、hint函數(shù)等方面的優(yōu)化。對sql進行監(jiān)控(慢查詢、AWR等)和優(yōu)化索引(索引的添加、重建或刪除等,索引的類型選擇等)可以獨立持續(xù)進行,但也要避免單表索引太多(單標(biāo)超過5個)、索引類型濫用(B-tree索引和位圖索引)、索引失效未及時重建等情況。另外可以在開發(fā)的配合下,對慢sql進行優(yōu)化改寫、拆分以及hint函數(shù)(特別是并發(fā)函數(shù)/*+parallel(t,4)*/,但也注意不要濫用)的調(diào)試,這一塊實際上在運行時間較久的傳統(tǒng)企業(yè)核心系統(tǒng)上比較難以實現(xiàn),正如對于運行的系統(tǒng),對數(shù)據(jù)庫的庫、表設(shè)計方面的優(yōu)化設(shè)計已難以實現(xiàn)。所以,大多sql層面的優(yōu)化在索引優(yōu)化處即截停。2、代碼優(yōu)化代碼優(yōu)化主要指在系統(tǒng)研發(fā)人員的主導(dǎo)配合下進行,包括兩個方面的優(yōu)化:一個是配合上述sql優(yōu)化對代碼中的sql進行優(yōu)化改寫,提高sql執(zhí)行的效率,獲得優(yōu)化收益;另外一個是對代碼中的邏輯架構(gòu)進行優(yōu)化,包括復(fù)雜邏輯架構(gòu)拆分、串行業(yè)務(wù)并行執(zhí)行、代碼類型簡潔等等。代碼層面的優(yōu)化如數(shù)據(jù)庫的庫表設(shè)計優(yōu)化一樣,就多數(shù)傳統(tǒng)企業(yè)來說,在系統(tǒng)產(chǎn)品進行部署上線后,改變較難。3、架構(gòu)優(yōu)化架構(gòu)優(yōu)化包括兩方面:業(yè)務(wù)架構(gòu)優(yōu)化和系統(tǒng)架構(gòu)優(yōu)化,是標(biāo)本兼治的方法,但也正如前面所言,對于業(yè)務(wù)量和業(yè)務(wù)方向變化不大、且無明顯可帶來贏利創(chuàng)新的大多傳統(tǒng)企業(yè)而言,架構(gòu)優(yōu)化應(yīng)該是一種較為激進的做法,激進之處在于對傳統(tǒng)企業(yè)的業(yè)務(wù)架構(gòu)和系統(tǒng)架構(gòu)進行了全面的推翻重構(gòu),尤其是在業(yè)務(wù)人員尚能接受系統(tǒng)緩慢、卡頓的前提下,對業(yè)務(wù)和系統(tǒng)進行大規(guī)模的優(yōu)化和重構(gòu),大多會帶來不穩(wěn)定的因素。如果剝離業(yè)務(wù)優(yōu)化只是對系統(tǒng)架構(gòu)方面進行優(yōu)化,特別是盲目推崇微服務(wù)對傳統(tǒng)企業(yè)進行重構(gòu)變革的,大多可能會以失敗告終??赡苁怯捎谧陨韼状喂ぷ鹘?jīng)驗和所處行業(yè)有關(guān),對系統(tǒng)的架構(gòu)優(yōu)化、重構(gòu)和升級多以保守、謹(jǐn)慎的態(tài)度,見過太多傳統(tǒng)企業(yè)欲憑借IT進行業(yè)務(wù)重構(gòu),最終業(yè)務(wù)和技術(shù)雙失敗的案例。業(yè)務(wù)和系統(tǒng)是圍繞企業(yè)健康發(fā)展相輔相成的兩個緊密元素,任何一個方面的超速發(fā)展,都將對另一個方面造成重大的影響。本著嚴(yán)謹(jǐn)?shù)膽B(tài)度,如果要對架構(gòu)(包括業(yè)務(wù)架構(gòu)和系統(tǒng)架構(gòu))進行優(yōu)化,那么有如下幾個問題建議優(yōu)先考慮清楚:(1)此次架構(gòu)優(yōu)化或重構(gòu)的目的是什么,要獲得一個什么樣的收益。即建議結(jié)果為導(dǎo)向,結(jié)果指導(dǎo)思路和方法。(2)為完成此次架構(gòu)的優(yōu)化或重構(gòu),達到預(yù)定目標(biāo),優(yōu)化或重構(gòu)的方案是什么,需要投入的成本是多少,時間成本、人力成本、學(xué)習(xí)成本等。(3)結(jié)合IT發(fā)展規(guī)律和生命周期,此次架構(gòu)的優(yōu)化或是重構(gòu),可以滿足企業(yè)多久的發(fā)展需要。(4)結(jié)合投入成本和預(yù)定目標(biāo),是否有一個科學(xué)、合理,對企業(yè)有益的投入產(chǎn)出比。其實架構(gòu)的優(yōu)化重構(gòu)也不是很難,在牛逼的業(yè)務(wù)專家配合下,理清各個業(yè)務(wù)邏輯和相互之間關(guān)系,再由研發(fā)工程師根據(jù)積木式的業(yè)務(wù)塊進行服務(wù)化改造,為進一步降耦、提高系統(tǒng)并發(fā),輔之以緩存、消息隊列、前后端分離和動靜分離等常規(guī)手段進行,一套分布式、服務(wù)化的架構(gòu)也就基本完成了對經(jīng)典單體應(yīng)用的重構(gòu),如果后續(xù)業(yè)務(wù)變化較頻繁,系統(tǒng)更新發(fā)布頻率較高,還可以進一步完善微服務(wù)基礎(chǔ)設(shè)施,如:配置中心、鏈路監(jiān)控、基于Jenkins的持續(xù)發(fā)布以及容器化等。綜上所述,就大多傳統(tǒng)企業(yè)核心系統(tǒng)優(yōu)化的業(yè)務(wù)優(yōu)化方面而言,除了在慢sql上加加索引外,其代碼優(yōu)化、架構(gòu)優(yōu)化等相對較為復(fù)雜、可執(zhí)行性較低,且存在一定風(fēng)險。實則,還有一種基于數(shù)據(jù)庫方面的優(yōu)化辦法,該方法是在一定業(yè)務(wù)規(guī)則條件下,持續(xù)地保持生產(chǎn)數(shù)據(jù)“瘦身”,不斷壓縮生產(chǎn)數(shù)據(jù)庫的數(shù)據(jù)量,達到在小數(shù)據(jù)量下的快速查詢響應(yīng),具體如下:對數(shù)據(jù)庫進行兩步拆分,第一步實現(xiàn)數(shù)據(jù)庫的主備同步(Oracle可使用DG,Mysql可使用Replication),主庫實現(xiàn)讀寫(R+W)功能,備庫或從庫主要實現(xiàn)讀的功能;第二步通過ETL的方式,將主庫中的歷史數(shù)據(jù)、可按時間或按業(yè)務(wù)規(guī)則進行歸檔的數(shù)據(jù)抽取至數(shù)據(jù)歷史庫中。通過兩步實現(xiàn)數(shù)據(jù)庫的讀寫分離和數(shù)據(jù)歸檔,將主庫的數(shù)據(jù)量減少降低,實現(xiàn)數(shù)據(jù)“瘦身”,兩個方面來有效地提升數(shù)據(jù)庫的響應(yīng)速度。在落地實施方面,正如前面介紹的,第一步搭建數(shù)據(jù)庫的同步備庫,相應(yīng)搭建部署方式可以參考附件;第二步實施需要分為三步:ETL的部署,抽取規(guī)則執(zhí)行,ETL定時執(zhí)行。相信在業(yè)務(wù)規(guī)則配合下,可以快速的完成數(shù)據(jù)的抽取和數(shù)據(jù)處理,將原來龐大的主庫在較短時間內(nèi)瘦身成敏捷的小庫,在業(yè)務(wù)量發(fā)展較為穩(wěn)定的情況下,可以使得系統(tǒng)快速運行2-3年。在上述基礎(chǔ)上,還可以對數(shù)據(jù)庫方面在做文章,如將主庫改造為Cluster集群(Oracle為RAC,MySQL為Cluster)的方式,實現(xiàn)讀寫負(fù)載均衡,在集群的基礎(chǔ)上搭建同步備庫,實現(xiàn)讀寫分離,特別是mysql的情況下,可以充分利用數(shù)據(jù)庫中間件進行讀寫分離、負(fù)載均衡等,同時也可以在數(shù)據(jù)庫層面進行分庫分表。歷史庫也可以再次剝離歷史數(shù)據(jù),形成歷史庫的歷史庫。具體架構(gòu)可參考如下:基于數(shù)據(jù)瘦身的優(yōu)化思路,其優(yōu)化演進路線可參考如下:該優(yōu)化思路主要在一定業(yè)務(wù)規(guī)則下,對主數(shù)據(jù)庫的數(shù)據(jù)進行持續(xù)的數(shù)據(jù)瘦身,同時結(jié)合數(shù)據(jù)庫的主備同步實現(xiàn)數(shù)據(jù)的讀寫分離,有效地減緩主庫的讀寫壓力,進而達到系統(tǒng)優(yōu)化的目標(biāo)。嚴(yán)格來說,這也不是一種治根的方法,但就優(yōu)化過的幾起案例來看,行之有效,其實一家傳統(tǒng)企業(yè)基于該模式,系統(tǒng)正常運行已經(jīng)超過3年(前提是其業(yè)務(wù)未有大的增長)。
三、總結(jié)系統(tǒng)優(yōu)化從來都是一個持續(xù)漸進的過程,而且往往難以衡量,有的時候一個sql索引的添加,系統(tǒng)就變得飛速,也有的時候用盡一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 批發(fā)業(yè)務(wù)中的版權(quán)合作與版權(quán)輸出考核試卷
- 其他調(diào)味品發(fā)酵制品制造考核試卷
- 智能照明在博物館展品照明中的應(yīng)用考核試卷
- 企業(yè)知識管理與知識分享考核試卷
- 年金保險投資渠道選擇考核試卷
- 有機肥料在育苗中的應(yīng)用考核試卷
- 冰球場冰面修整與保養(yǎng)考核試卷
- 智能無人機飛行控制系統(tǒng)考核試卷
- 小學(xué)生簡單律動課件圖片
- 廣州鋪位租賃合同范本
- 售后服務(wù)部部門組織架構(gòu)
- 2024年江蘇食品藥品職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫附答案
- 《實變函數(shù)》電子教案
- 旅游景觀文化與賞析 知到智慧樹網(wǎng)課答案
- 2024-貸款受托支付合同模板
- 柴油發(fā)電機基礎(chǔ)知識教案
- 2024年蘇州衛(wèi)生職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫及答案解析
- 十萬個為什么測試題及答案四年級
- 攝影基礎(chǔ)基本知識講座
- JTG 5110-2023 公路養(yǎng)護技術(shù)標(biāo)準(zhǔn)
- 2022年蘇州工業(yè)職業(yè)技術(shù)學(xué)院單招數(shù)學(xué)模擬試題(附答案解析)
評論
0/150
提交評論