自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淘寶架構(gòu)師談Java應(yīng)用運(yùn)維

運(yùn)維 系統(tǒng)運(yùn)維
對(duì)于互聯(lián)網(wǎng)產(chǎn)品或長期運(yùn)行的產(chǎn)品而言,運(yùn)維工作非常重要,尤其是在產(chǎn)品復(fù)雜了以后,在這篇blog中就來說下Java應(yīng)用的運(yùn)維工作(ps:雖然看起來各種語言做的系統(tǒng)的運(yùn)維工作都差不多,但細(xì)節(jié)上還是會(huì)有很多不同,so本文還是只講Java的)。

編者按:本文作者BlueDavy是淘寶架構(gòu)師,專注Java、OSGi模塊化等技術(shù)。

對(duì)于互聯(lián)網(wǎng)產(chǎn)品或長期運(yùn)行的產(chǎn)品而言,運(yùn)維工作非常重要,尤其是在產(chǎn)品復(fù)雜了以后,在這篇blog中就來說下Java應(yīng)用的運(yùn)維工作(ps:雖然看起來各種語言做的系統(tǒng)的運(yùn)維工作都差不多,但細(xì)節(jié)上還是會(huì)有很多不同,so本文還是只講Java的)。

苦逼的碼農(nóng)按照需求開發(fā)好了一個(gè)全新的Java Web應(yīng)用,該發(fā)布上線給用戶用了,要把一個(gè)Java Web應(yīng)用發(fā)布上線,首先需要搭建運(yùn)行的環(huán)境,運(yùn)行的環(huán)境需要有JDK、APPServer,在已經(jīng)裝好了os的機(jī)器上裝上JDK和APPServer,開發(fā)好的Java Web應(yīng)用可以用maven直接打成war或ear,將這個(gè)打好的包scp或其他方式到目標(biāo)機(jī)器上,準(zhǔn)備妥當(dāng),就差啟動(dòng)了。

通常APPServer都帶有啟動(dòng)腳本,在做好了上述準(zhǔn)備后,直接運(yùn)行啟動(dòng)腳本,通常就OK了(maybe需要修改appserver的一些配置文件,例如修改監(jiān)聽端口等)。

應(yīng)用啟動(dòng)后,有一個(gè)問題需要解決,就是如何確認(rèn)應(yīng)用啟動(dòng)后成功與否,對(duì)于Java web應(yīng)用通??梢苑乓粋€(gè)jsp文件,在這個(gè)文件里做一些必要的檢查,以確保應(yīng)用啟動(dòng)是正常的,例如通常Java web應(yīng)用會(huì)基于spring之類的框架來寫,為了確保spring的BeanFactory初始成功,可以在jsp文件里去獲取下spring里的bean調(diào)用下。

應(yīng)用完成了啟動(dòng)后,這個(gè)階段的工作就算完成了,這個(gè)階段完成后積累了一個(gè)應(yīng)用啟動(dòng)的腳本,用來啟動(dòng)應(yīng)用服務(wù)器以及在啟動(dòng)完畢了后檢驗(yàn)應(yīng)用是否啟動(dòng)成功。

只要不是一個(gè)一次性的應(yīng)用,就必然會(huì)涉及修改的問題,修改完了后就得重新發(fā)布,對(duì)于Java Web應(yīng)用,在修改完了后重新打應(yīng)用的包,然后scp覆蓋到目標(biāo)機(jī)器上,重啟,就可完成修改,但顯然,每次修改完代碼后都這么操作實(shí)在是痛苦不堪,于是喜歡“偷懶”的同學(xué)會(huì)專門搞臺(tái)發(fā)布用的機(jī)器(或者就是運(yùn)行應(yīng)用的那臺(tái)機(jī)器),然后寫個(gè)腳本,每次需要發(fā)布時(shí)就通過腳本自動(dòng)的將發(fā)布需要做的所有事情自動(dòng)做好,:),這下以后發(fā)布爽多了。

相應(yīng)的這個(gè)時(shí)候通常還要支持回滾,即應(yīng)用發(fā)布失敗后自動(dòng)的回滾到前一版本的功能,也可以折騰到腳本里。

但如果只是為了修改個(gè)頁面,就得這么折騰,顯然還是麻煩了點(diǎn)(主要是經(jīng)常重啟,用戶受不了),于是需要支持僅更新頁面的發(fā)布方式,為了支持這種方式,通常就要求打出的war/ear是解開了的,這樣才比較方便直接覆蓋頁面,繼續(xù)“偷懶”的本性,寫些腳本,支持將需要發(fā)布的頁面文件從svn或git下載,然后打成一個(gè)tgz或其他壓縮包,scp到目標(biāo)服務(wù)器,解包覆蓋完成頁面的更新(當(dāng)然,對(duì)于編譯jsp的運(yùn)行方式這種發(fā)布方法就沒法玩了)。

經(jīng)過這個(gè)階段的折騰,就積累了兩個(gè)腳本,一個(gè)用來發(fā)布應(yīng)用包,一個(gè)用來發(fā)布頁面。

每次發(fā)布應(yīng)用包的時(shí)候都會(huì)有短暫的不可用,這樣總折騰下去用戶受不了(如果哪天這唯一的一臺(tái)服務(wù)器掛掉的話,就更糟糕了),于是就把應(yīng)用的機(jī)器數(shù)從一臺(tái)變成兩臺(tái),通常這里對(duì)應(yīng)用是有些技術(shù)要求的,這篇blog中只談運(yùn)維,通常情況下從部署在一臺(tái)變成兩臺(tái)后,要做這些事:

1、可能會(huì)增加一臺(tái)機(jī)器用來部署nginx/apache來做負(fù)載均衡,這個(gè)規(guī)模的情況下應(yīng)該很少有會(huì)采用lb設(shè)備或lvs的(某些國企除外…),于是就得折騰下這臺(tái)機(jī)器的環(huán)境等了;

2、增加了一臺(tái)應(yīng)用的機(jī)器后,就得又來搭建一次應(yīng)用的運(yùn)行環(huán)境了,通常這個(gè)時(shí)候“偷懶”的本性會(huì)發(fā)作,干脆折騰個(gè)腳本吧,來支持從另外一臺(tái)運(yùn)行的應(yīng)用機(jī)器clone運(yùn)行環(huán)境,做的更好點(diǎn)的話,就會(huì)把應(yīng)用的運(yùn)行環(huán)境記錄在某個(gè)地方、然后把應(yīng)用運(yùn)行需要的軟件也放在某個(gè)地方(例如yum),這樣,當(dāng)要搭建應(yīng)用的運(yùn)行環(huán)境時(shí),就可通過記錄的信息以及yum源等直接完成運(yùn)行環(huán)境的搭建。

3、但這樣還沒完,為了避免發(fā)布的時(shí)候應(yīng)用完全不能用,除了技術(shù)上要做的那點(diǎn)事外,在發(fā)布應(yīng)用時(shí)就會(huì)多加一步,就是要先發(fā)一臺(tái),再發(fā)另外一臺(tái),由于之前有發(fā)布腳本,通常這也不是問題,:)。

經(jīng)過這個(gè)階段,就又積累了兩個(gè)腳本,一個(gè)用來管理負(fù)載均衡的那臺(tái)機(jī)器,另一個(gè)腳本用來搭建應(yīng)用的運(yùn)行環(huán)境。

隨著應(yīng)用越來越受歡迎,通常應(yīng)用的機(jī)器就得繼續(xù)加了,這個(gè)時(shí)候?qū)\(yùn)維工作又會(huì)帶來新的挑戰(zhàn),主要還是在發(fā)布上,這個(gè)時(shí)候應(yīng)用部署在了一堆的機(jī)器上了,每次發(fā)布的時(shí)候手工輸入一堆的機(jī)器地址來發(fā)布顯然很麻煩,于是需要有個(gè)地方來記錄應(yīng)用有哪些機(jī)器(還記得我們之前搞了個(gè)地方來記錄應(yīng)用的運(yùn)行環(huán)境信息吧,可以放一起),除了要解決這個(gè)問題外,還需要解決的一個(gè)問題是這個(gè)時(shí)候通常對(duì)應(yīng)用的發(fā)布方式會(huì)有了多種要求,例如分批發(fā)布(先發(fā)5臺(tái),再發(fā)10臺(tái),再全部發(fā),或一半一半發(fā)等),更高級(jí)的話會(huì)有beta發(fā)布、灰度發(fā)布等要求,這個(gè)具體可以見facebook的大牛@魏小亮 寫的《代碼和產(chǎn)品發(fā)布的幾種方式》,這個(gè)時(shí)候顯然,之前寫的那個(gè)簡單的發(fā)布腳本就無法支持了,于是得搞個(gè)更為復(fù)雜的腳本來支持這多種的發(fā)布方式(有些還需要應(yīng)用架構(gòu)上做配合改造才能實(shí)現(xiàn)),做的更好的就是提供一個(gè)web版本的發(fā)布系統(tǒng),來更為方便的進(jìn)行發(fā)布以及發(fā)布過程的管理。

經(jīng)過這個(gè)階段后,通??梢哉垓v出一個(gè)web版的應(yīng)用運(yùn)維系統(tǒng)了,包括應(yīng)用信息的登記(依賴的運(yùn)行環(huán)境、運(yùn)行的機(jī)器地址)、應(yīng)用的發(fā)布、頁面的發(fā)布、增加應(yīng)用的機(jī)器、下線應(yīng)用的機(jī)器。

通常繼續(xù)發(fā)展下去,會(huì)出現(xiàn)一些新的狀況,主要是會(huì)開始多元化,有了很多個(gè)應(yīng)用,這個(gè)時(shí)候原來的web版應(yīng)用運(yùn)維系統(tǒng)就要支持多應(yīng)用了,這里主要會(huì)帶來的問題是為了降低運(yùn)維的復(fù)雜性,需要做一些通用性的工作,例如通用的啟動(dòng)腳本等,這個(gè)時(shí)候會(huì)產(chǎn)生一些要求,例如統(tǒng)一的應(yīng)用名等,另外會(huì)帶來的問題就是開發(fā)、運(yùn)維的人多了,這個(gè)時(shí)候權(quán)限上就需要有些控制了,例如某些賬號(hào)可以操作某些應(yīng)用等,這個(gè)時(shí)候通常需要增加一套權(quán)限系統(tǒng),集成到之前的運(yùn)維系統(tǒng)。

應(yīng)用多了后,還會(huì)帶來的問題是應(yīng)用部署的規(guī)范性(同時(shí)也是為了降低運(yùn)維的復(fù)雜性),因?yàn)槊總€(gè)應(yīng)用可能都會(huì)有一些特殊的配置,這個(gè)時(shí)候***是能夠通過搭建運(yùn)行環(huán)境以及權(quán)限控制來保證一個(gè)應(yīng)用部署后的目錄控制。

經(jīng)過上面的一些發(fā)展過程后,Java應(yīng)用的運(yùn)維工作基本就可以比較自動(dòng)的去完成了,但通常其實(shí)應(yīng)用運(yùn)維除了上面的工作外,還有一件更重要的事,就是保障應(yīng)用的穩(wěn)定,應(yīng)用運(yùn)維人員需要能夠排查大部分的應(yīng)用故障問題,而不是交由后面的開發(fā)人員來解決,通常這個(gè)時(shí)候需要一套自動(dòng)的故障處理系統(tǒng),感興趣的同學(xué)可以參與下facebook的FBAR。

發(fā)展到更大后,還可能會(huì)碰到例如一個(gè)負(fù)載設(shè)備無法支撐整個(gè)網(wǎng)絡(luò)的請(qǐng)求,需要?jiǎng)澐講lan,這個(gè)時(shí)候在做應(yīng)用機(jī)器的擴(kuò)容時(shí)就需要考慮vlan因素了,還有可能會(huì)碰到機(jī)器利用率不夠高,需要引入虛擬機(jī),更高級(jí)的就是引入彈性計(jì)算,這些對(duì)運(yùn)維體系都會(huì)產(chǎn)生較大的沖擊,:)。

從上面對(duì)一個(gè)Java應(yīng)用運(yùn)維的演變描述可以看到,大方向上來說是朝自動(dòng)化、web化、智能化發(fā)展,但最最重要的都是如何和現(xiàn)有運(yùn)行體系無縫的結(jié)合,而且這里談到的還僅僅是Java應(yīng)用運(yùn)維的工作(還沒提到開發(fā)人員其實(shí)也要仔細(xì)考慮自己寫的產(chǎn)品的可運(yùn)維性如何),而一個(gè)運(yùn)維的體系還要包括機(jī)房、網(wǎng)絡(luò)、硬件、安全等,就更加的復(fù)雜和且需要體系化的考慮,。

原文:http://blog.bluedavy.com/?p=363 

【編輯推薦】

  1. 《Linux運(yùn)維趨勢》第16期:CDN緩存系統(tǒng)概述
  2. 資深架構(gòu)師Theo談統(tǒng)計(jì)學(xué),業(yè)務(wù)與運(yùn)維工程師的成長
  3. 變被動(dòng)為主動(dòng):IT運(yùn)維如何反擊黑客
責(zé)任編輯:yangsai 來源: BlueDavy的博客
相關(guān)推薦

2012-10-25 17:48:15

Fourinone云計(jì)算架構(gòu)師峰會(huì)

2012-08-15 14:58:01

運(yùn)維架構(gòu)師

2011-11-01 09:02:26

系統(tǒng)架構(gòu)師

2011-10-31 09:22:07

系統(tǒng)架構(gòu)

2011-12-07 23:10:59

Velocity運(yùn)維工程師統(tǒng)計(jì)

2011-10-27 09:08:59

系統(tǒng)架構(gòu)師

2011-11-02 09:01:30

系統(tǒng)架構(gòu)師

2011-10-18 09:25:04

系統(tǒng)架構(gòu)師

2013-08-27 11:07:28

自動(dòng)化運(yùn)維運(yùn)維架構(gòu)師小米

2011-03-11 15:38:08

Java

2016-09-23 10:05:11

運(yùn)維架構(gòu)師前景

2015-12-23 10:50:24

運(yùn)維OPS運(yùn)維架構(gòu)師

2011-10-20 09:06:36

系統(tǒng)架構(gòu)師

2011-10-24 09:26:42

系統(tǒng)架構(gòu)師

2011-10-19 09:20:44

2011-10-21 09:04:57

系統(tǒng)架構(gòu)師

2012-05-15 10:23:35

架構(gòu)師運(yùn)維安全

2010-08-05 13:51:13

軟件架構(gòu)師

2011-10-25 08:59:28

系統(tǒng)架構(gòu)師

2011-10-26 09:43:13

系統(tǒng)架構(gòu)師
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)