SVN后臺(tái)認(rèn)證、日志及模型存儲(chǔ)模塊改造方案_第1頁(yè)
SVN后臺(tái)認(rèn)證、日志及模型存儲(chǔ)模塊改造方案_第2頁(yè)
SVN后臺(tái)認(rèn)證、日志及模型存儲(chǔ)模塊改造方案_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、權(quán)限認(rèn)證模塊1.1.目前實(shí)現(xiàn)方式;目前的權(quán)限認(rèn)證模塊的認(rèn)證流程如下:1)服務(wù)端接收到客戶(hù)端請(qǐng)求后,先和系統(tǒng)備份用戶(hù)名/密碼進(jìn)行校驗(yàn),如果是系統(tǒng)備 份用戶(hù)則通過(guò)認(rèn)證。2)否則先到緩存中查找該用戶(hù)是否已經(jīng)認(rèn)證過(guò),如果已經(jīng)認(rèn)證過(guò),取出原來(lái)認(rèn)證的用 戶(hù)名和session跟當(dāng)前登錄用戶(hù)和session進(jìn)行比對(duì),如果用戶(hù)和session相同,則 認(rèn)證通過(guò)3)如果session不同,則連接數(shù)據(jù)庫(kù)查詢(xún)用戶(hù)名和session,如果和數(shù)據(jù)庫(kù)中的session 匹配成功,則把用戶(hù)名和session記錄到緩存中。不管有沒(méi)有認(rèn)證通過(guò),本次數(shù)據(jù) 庫(kù)連接在查詢(xún)后斷開(kāi)。這里認(rèn)證過(guò)程不使用數(shù)據(jù)庫(kù)長(zhǎng)連接的原因有兩個(gè):第一個(gè)是如果

2、在apache當(dāng)前的SVN 認(rèn)證模塊中管理數(shù)據(jù)庫(kù)長(zhǎng)連接,當(dāng)進(jìn)程退出時(shí)目前暫時(shí)沒(méi)有找到優(yōu)雅的斷開(kāi)連接方式, 只能由進(jìn)程退出直接強(qiáng)制斷開(kāi)。第二個(gè)是因?yàn)楫?dāng)前的認(rèn)證方式中只有當(dāng)用戶(hù)重新登錄 studio端或者切換用戶(hù)時(shí)才需要重新連接數(shù)據(jù)庫(kù),由于是非業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫(kù)連接的頻率 很低,使用短連接方式可以在空閑時(shí)節(jié)省數(shù)據(jù)庫(kù)資源,因?yàn)閍pache啟動(dòng)后以多進(jìn)程方 式運(yùn)行,每個(gè)進(jìn)程至少必須有一個(gè)數(shù)據(jù)庫(kù)連接。1.2.改造點(diǎn)1)可以把數(shù)據(jù)庫(kù)連接由目前的短連接方式變?yōu)殚L(zhǎng)連接方式,進(jìn)一步提升數(shù)據(jù)庫(kù)查詢(xún)效 率。2)為了減少對(duì)第三方庫(kù)的編譯依賴(lài),把數(shù)據(jù)庫(kù)底層庫(kù)由libsql改為現(xiàn)有基礎(chǔ)C開(kāi)發(fā)庫(kù) 的 libdci 庫(kù)。日志處理

3、模塊2.1.目前實(shí)現(xiàn)方式;日志處理模塊目前的處理流程如下:1)利用svn的鉤子程序記錄下commit,lock,unlock等svn操作事件,并把事件記錄到 本地文件中,然后向消息隊(duì)列發(fā)送文件名消息。2)日志處理進(jìn)程從消息隊(duì)列中取出要處理的事件消息,讀取對(duì)應(yīng)的文件,并調(diào)用svn 本地管理命令獲取當(dāng)次svn操作的相關(guān)信息,然后傳遞給存儲(chǔ)過(guò)程,由存儲(chǔ)過(guò)程完 成日志記錄工作。操作日志的處理順序由消息隊(duì)列來(lái)保證。22改造點(diǎn)目前的日志處理過(guò)程中,對(duì)于消息隊(duì)列的持久化存儲(chǔ)沒(méi)有考慮到,當(dāng)日志處理進(jìn)程沒(méi)有 正常工作時(shí),或者處理效率很低時(shí),隊(duì)列可能因?yàn)橄⒁褲M(mǎn),導(dǎo)致鉤子程序不能正常寫(xiě) 消息而阻塞。1)把目前的阻

4、塞式寫(xiě)隊(duì)列改成非阻塞式,并對(duì)svn的操作事件文件進(jìn)行編號(hào),每天的 編號(hào)從199999999,一天至少支持1億次的svn操作。如果寫(xiě)隊(duì)列失敗,只需要 把事件文件寫(xiě)到本地成功即可。事件文件命令規(guī)則為yyyymmdd_Seq操作類(lèi)型, 例如:20121220_00000001_commit;2)日志進(jìn)程在接收到消息隊(duì)列的通知時(shí),到事件文件的存儲(chǔ)目錄中找出所有事件文件, 按文件編號(hào)進(jìn)行排序,以保證svn操作的日志按順序正確處理。3)事件文件處理完成后,如果是commit事件,則移動(dòng)到模型轉(zhuǎn)換存儲(chǔ)模塊的輸入目 錄,否則移動(dòng)到備份目錄。如果處理失敗則移動(dòng)到錯(cuò)誤備份目錄。4)消息隊(duì)列只作為svn操作的通知,

5、在某些情況下操作系統(tǒng)退出重啟后,只要事件文 件存在就可以保證svn日志能被正常處理,而消息隊(duì)列本身不需要進(jìn)行持久化存儲(chǔ)。5)目前的日志記錄過(guò)程是由oracle存儲(chǔ)過(guò)程完成,不方便遷移到其他數(shù)據(jù)庫(kù),可以把 日志記錄的操作改由日志進(jìn)程來(lái)完成。6)為了減少對(duì)第三方庫(kù)的編譯依賴(lài),把數(shù)據(jù)庫(kù)底層庫(kù)由libsql改為現(xiàn)有基礎(chǔ)C開(kāi)發(fā)庫(kù) 的 libdci 庫(kù)。模型轉(zhuǎn)換存儲(chǔ)模塊3.1.目前實(shí)現(xiàn)方式目前的模型轉(zhuǎn)換存儲(chǔ)過(guò)程由web服務(wù)器端來(lái)完成3.2.改造點(diǎn)把目前的模型轉(zhuǎn)換存儲(chǔ)過(guò)程遷到svn端的后臺(tái)C+日志處理進(jìn)程中處理,以多線程方式 對(duì)同一次svn操作提交的文件進(jìn)行轉(zhuǎn)換存儲(chǔ)。處理流程如下:娜北,j颯程池1把丈件列X分無(wú)給發(fā)程池中的戲七住線程*1斷史作 刑表散是折L1經(jīng) 樸酈宜MM處理完成信杏1.1叫正件精配T備浦中把擴(kuò)I文件到銷(xiāo)觀備份II錄處th 忤送成 文發(fā)-I.一J_!流程概要描述:1)日志處理進(jìn)程在處理完日志事件文件后,把事件文件轉(zhuǎn)移到另一個(gè)目錄下,并向模 型轉(zhuǎn)換管理線程發(fā)送通知。2)轉(zhuǎn)換管理線程收到通知后到事件文件目錄中提取所有的事件文件,并按編號(hào)進(jìn)行排 序,然后根據(jù)事件文件查找本次svn操作的文件列表,把文件列表發(fā)送給轉(zhuǎn)換工作 線程。3)當(dāng)所有的轉(zhuǎn)換工作線程執(zhí)行完成后,通知轉(zhuǎn)換管理線程,轉(zhuǎn)換管理線程把事件文件 移動(dòng)到備份目錄下,然后繼續(xù)提取一個(gè)事

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論