天天看點

tomcat和memcached

一、tomcat運作環境

        tomcat是JAVA虛拟機上的運作的一個程式,是以在安裝tomcat之前需要安裝JAVA的運作環境,tomcat是用來接收并相應使用者的請求

JVM:将所有系統上的不同接口全部轉換成統一的程式設計接口,進而實作一次編譯到處運作

JRE:包含一些庫檔案和啟動代碼的工具環境,包含JVM

JDK:完整的基本環境,包含調試工具

JSP:根據用戶端的不同,将代碼在伺服器段執行并将結果傳回給用戶端

軟體包安裝

            yum安裝,直接根據依賴關系安裝所需要的jsp和servlet兩個所需要的元件

            官方下載下傳二進制包,直接解壓即可使用,預設在/usr/java/目錄下

二、tomcat的安裝

            yum安裝,CD光牒倉庫就有,是以直接安裝即可

            官方下載下傳軟體包,在官方下載下傳,需要将所有者和所有組更改為root,其中temp,work,logs,将屬主和屬組更改為tomcat,conf目錄需要有讀寫權限,目錄下的檔案需要有讀權限,

三、tomcat配置說明

各個配置檔案作用相關說明

            server.xml:主配置檔案,主要用來設定server,connector,service,engine,host,context等相關元件的配置

            web.xml:部署描述檔案,每個應用隻有在部署後才可以被通路,他的部署方式一般有web.xml進行定義,其存放位置為WEB-INF目錄中

            context.xml:每個應用都有專用的配置檔案,其存放位置為META-INF目錄下

            tomcat-user.xml:使用者認證使用者名和密碼,啟動時裝入記憶體,在啟動後,在使用使用者名和密碼直接從記憶體中查找,不會在檔案中查找即隻要更改使用者名就需要重新啟動服務方可生效

            catalina.policy:目前使用-security選項啟動tomcat時,用于tomcat設定安全政策

            catalina.properties:java屬性的定義檔案,用于設定類加載器路徑,以及JVM調優相關參數

            logging.properties:日志系統相關配置

server.xml配置檔案各主要元件相關說明

tomcat和memcached

server:類,伺服器程序

service:connector和engine之間建立關聯的相關元件

connector:連接配接器,用來接受使用者請求,也可以用來建構相應封包,所支援的協定有http,https,ajp(tomcat獨有協定需要搭配httpd服務實作)

engine:引擎,用來運作jsp代碼,也可以稱之為容器

host:虛拟主機,用來在同一個service中建構多個可被通路的url位址

context:在同一個host中建構多個uri目錄,預設如果不更換原有的目錄,則不需要指定就可以被通路

JSP應用組織結構

        index.jsp:首頁

        WEB-INF:目前應用的私有資源路徑,通常存儲web.xml和context.xml配置檔案

        META-INF:作用類似于WEB-INF

        classes:類檔案,目前應用所提供的類,被打包成jar格式的檔案

        lib:類檔案,

四、tomcat基于httpd的反向代理

這裡是基于httpd2.4版本實作的反向代理

準備工作:在配置檔案中指定servername需要在hosts檔案中指定對應的IP位址才可以解析,或者DNS可以解析

步驟1

步驟2

        在後端tomcat上配置一台tomcat,并且添加一個host配置即可

五、tomcat會話基于httpd的cookie的會話粘性

步驟2配置兩台tomcat,并将預設的頁面中增加一個context,并指向應該指定的虛拟主機,否則會出現不能綁定用戶端的現象

六、tomcat會話叢集

tomcat和memcached

        tomcat根據廣播的形式,将用戶端的cookie資訊共享個在同一個多點傳播域中的每一台tomcat伺服器,但是這種方法不适合于太大的網絡拓撲,廣播域越大,所占的網絡IO和磁盤IO也就越大,并且在實作該會話叢集時,建議不要講會話粘性關閉,因為開啟會話粘性,cookie同步隻會是一個方向的同步,而沒有會話粘性,則會随機方向的同步

實作:

步驟1:在nginx反向代理伺服器上設定,隻要是請求.jsp檔案的全部負載均衡并且代理到後端伺服器上

步驟2:在兩台tomcat上都需要配置的配置

server.xml配置檔案中的配置

還需要添加的配置,

         1.需要在應用專用web.xml中添加<distributable />,不是在預設的web.xml

2.需要在serser.xml配置檔案中Engine中添加 jvmRoute

3.需要保證叢集節點同步,

4.還可以做會話綁定即可,目的是實作一個使用者會話始終是從一個伺服器中同步其他伺服器,而不是從各個方向同步

六、memcached介紹

        web應用的資料全部都是存儲到RDBMS資料庫中,而随着業務的增長,查詢等各項速度都會急速下降,memcached是将資料緩存到記憶體中,減少使用者對資料庫的通路次數,進而減少資料庫的通路壓力

memcached的特征

    1.協定簡單

    2.基于libevent的事件處理

    3.内置記憶體存儲方式,是以意味着資料會有丢失的風險

    4.memcached不互相通訊的分布式,memcached不能互相通訊,故不能進行資料同步,每一台memcached都是獨立的存在

memcached需要依賴于前端的應用應用程式伺服器,需要前端的應用程式支援

優點:能夠提高通路速度,加速使用者通路,一般适用于對資料不是特别要求準确和不是特别注重安全的資料

缺點:通路資料不準确,在緩存命中率較低時,不會增加通路速度反而會降低通路速度,因為每次一在通路資料庫之前都需要自己去memcached緩存伺服器中檢視是否有緩存。

應用程式通過添加memcached緩存工作過程

應用伺服器首先去memcached緩存伺服器中檢視是否有緩存,若有,直接相應用戶端,若無,則應用伺服器自己去資料庫中檢視結果,然後在将本次查到的資料緩存到memcached緩存伺服器中,在下次通路才可以提高速度

七、會話伺服器

配置拓撲圖

tomcat和memcached

需要連接配接tomcat到memcached則需要相對應的連接配接器,倉庫預設沒有,需要第三方軟體https://github.com/magro/memcached-session-manager下載下傳相對應的版本

使用sticky sessions + kryo則下載下傳以下全部包到 java放jar檔案的目錄下

 msm-kryo-serializer, kryo-serializers-0.34+, kryo-3.x, minlog, reflectasm, asm-5.x, objenesis-2.x

在tomcat的server.xml配置檔案中添加以下配置段

memcached伺服器隻需要開啟服務即可

檢視緩存指令memdump --server='192.168.1.153:11211'