前沿拓展:
web應(yīng)用服務(wù)器
B
在CentOS與Ubuntu的實(shí)踐過(guò)程中,將概述兩個(gè)Linux發(fā)行版的主要功能,這將幫助您為您的VPS選擇正確適宜的**作系統(tǒng)。
通常我們?cè)谶x擇服務(wù)器**作系統(tǒng)的時(shí)候?qū)⒚媾R一個(gè)比較惱火的抉擇。因?yàn)橛写罅靠捎眠x項(xiàng),特別是如果你想使用Linux發(fā)行版。有很多選擇,其中非常出名的兩個(gè)便是像Ubuntu和CentOS。
無(wú)論您是專業(yè)人士還是初學(xué)者,通常都可以選擇兩種選擇??梢钥隙ǖ卣f(shuō),沒(méi)有直截了當(dāng)?shù)臎Q定。在本文中,我們打算比較CentOS與Ubuntu,以便在設(shè)置服務(wù)器時(shí)找出哪一個(gè)最適合。
在我們開(kāi)始闡述兩個(gè)匹配良好的對(duì)手之間的差異之前,讓我們第一看一下簡(jiǎn)短的概述。
。
當(dāng)我們開(kāi)發(fā)完應(yīng)用程序之后,該如何進(jìn)行應(yīng)用的部署呢?怎樣的部署才能夠保證服務(wù)器的處理時(shí)間較短?
下面我們討論單個(gè)tomcatweb應(yīng)用服務(wù)器和多個(gè)tomcatweb應(yīng)用服務(wù)器。
通過(guò)spring boot 創(chuàng)建web應(yīng)用有兩種方式:war包與jar包。在本文中以war包為例。
servlet解析web請(qǐng)求過(guò)程:
tomcat作為servlet容器的一種,管理著部署的多個(gè)web應(yīng)用。tomcat運(yùn)行架構(gòu)圖如下:
從上圖中可以看出:
所以由于每個(gè)web應(yīng)用只創(chuàng)建了一個(gè)servlet實(shí)例,所以需要線程安全問(wèn)題。(即servlet中包含靜態(tài)變量和成員變量的時(shí)候會(huì)出現(xiàn)線程安全的問(wèn)題。應(yīng)該使用局部變量。)
tomcat 并發(fā)模型
從單個(gè)tomcat運(yùn)行web應(yīng)用中可以看出:
java web通過(guò)封裝servlet屏蔽了服務(wù)細(xì)節(jié),使web開(kāi)發(fā)人員專注與業(yè)務(wù)邏輯的實(shí)現(xiàn)。這是j2ee能在web開(kāi)發(fā)中有一定地位的原因。
然而,由于servlet的創(chuàng)建和tomcat 多線程的并發(fā)處理全部交由tomcat來(lái)做,在這一個(gè)層次程序員無(wú)法做太多的事情,只能對(duì)tomcat和jvm進(jìn)行調(diào)優(yōu)。
萬(wàn)幸的是cpu不是系統(tǒng)性能的瓶頸。但是目前有很多的游戲已經(jīng)使用goroutine來(lái)實(shí)現(xiàn)了。因?yàn)間olang的協(xié)程可以開(kāi)上萬(wàn)個(gè),非常適合多線程的處理。
在一些大型網(wǎng)站中,對(duì)這部分性能調(diào)優(yōu)的解決方案有:
第二種方案就引入了多tomcat web應(yīng)用服務(wù)器。它的思路是:
在云計(jì)算尚未出現(xiàn)時(shí),負(fù)載均衡及容器的維護(hù)往往由內(nèi)部的技術(shù)部自行實(shí)現(xiàn),在云計(jì)算時(shí)代,由于K8S和Docker的出現(xiàn),使這類問(wèn)題解決更為容易。
K8S的彈性伸縮,把容器進(jìn)行拷貝**,并自動(dòng)負(fù)責(zé)負(fù)載均衡,可以大大簡(jiǎn)化其流程。
ps:在K8S上運(yùn)行的多個(gè)tomcat容器是相同的拷貝。
淘寶的例子
從傳統(tǒng)的意義上講,系統(tǒng)的性能瓶頸并不存在于cpu的計(jì)算能力,而在于I/O。
所以大型網(wǎng)站架構(gòu)上通常在思考如何降低I/O的時(shí)間。
最常用的降低I/O時(shí)間是使用reddis和memcached做緩存,關(guān)于這塊前輩的經(jīng)驗(yàn)摘引如下:
安全內(nèi)容博大精深,關(guān)于安全方面相關(guān)的一些基本的認(rèn)知鏈接如下:
web application security
另外,如果對(duì)于java 而言,可以使用一個(gè)apache的安全框架
shiro
此外還有一些諸如分布式文件存儲(chǔ)、加快服務(wù)器腳本運(yùn)算速度、頁(yè)面組件分離等都是提高服務(wù)器響應(yīng)的方法。
在web開(kāi)發(fā)中,cookie和seesion經(jīng)常用到。接下來(lái)進(jìn)行簡(jiǎn)單的說(shuō)明。cookie和session主要是用來(lái)保存數(shù)據(jù)及狀態(tài)。
cookie 和session 的區(qū)別:
建議:
cookie和session可以解決跨頁(yè)面?zhèn)鬟f數(shù)據(jù)的問(wèn)題。
前端跨頁(yè)面?zhèn)鬟f數(shù)據(jù)是一個(gè)比較繁瑣的問(wèn)題,依賴于瀏覽器的架構(gòu)和實(shí)現(xiàn)。cookie和session是一種通用的解決方案。
原創(chuàng)文章,作者:九賢生活小編,如若轉(zhuǎn)載,請(qǐng)注明出處:http://xiesong.cn/19558.html