java 分布式同步_Java Web分布式集群搭建(三)——Session同步

對于一個業務系統的Tomcat集群來說,必須保證同一個用戶訪問到任一臺服務器上都可以維持之前操作的身份。比如在服務器A進行了登陸,那么在服務器B中也要同步該用戶已登錄的狀態,這里就用到了Session的同步。

同步方式

sticky模式、復制模式、Terracotta模式(非Tomcat自帶)

sticky模式

把所有同一個session的請求,都發送到相同的節點,這樣就避免了Session的問題

復制模式

所有的節點都保證同一個Session,有一點點的改變都會進行廣播同步

實現方式:只要修改Tomcat的server.xml文件

修改Engine節點信息:

去掉 的注釋符

web.xml中增加

Terracotta模式

該方法是利用開源軟件Terracotta

Terracotta的基本原理是對于集群間共享的數據,當在一個節點發生變化的時候,Terracotta只把變化的部分發送給Terracotta服務器,然后由服務器把它轉發給真正需要這個數據的節點。

比較

sticky模式,失去了負載均衡的意義,把同一個人的請求始終分配到同一個服務器處理。

復制模式,容易引起流量洪災,每一次改變都要進行一次廣播,對網絡的影響很大。

Terracotta,比較適合的選擇,但是需要第三方開源軟件,配置比較繁瑣。

Session同步實例——Terracotta

1、下載Terracotta

http://d2zwv9pap9ylyd.cloudfront.net/terracotta-3.7.7.tar.gz

2、安裝

tar zxvf terracotta-3.4.1.tar.gz

mv terracotta-3.4.1 /usr/local/terracotta

3、配置Tomcat作為Terracotta客戶端

復制terracotta-session-1.3.7.jar和terracotta-toolkit-1.1-runtime-5.7.0.jar到Tomcat/lib目錄:CATALINA_HOME/lib

編輯 /var/lib/tomcat7/conf/context.xml文件

注意:className要根據Tomcat的版本進行修改。

4、配置Terracotta服務端

#拷貝配置文件例子

cp ./config-samples/tc-config-express-reference.xml ./tc-config.xml

#修改成自己的配置

vim ./tc-config.xml

注意:編輯的文件中注意修改:server和web-application

5、啟動Terracotta

啟動順序:管理 => 子節點

#進入目錄

cd /usr/local/terracotta

#復制tc-config.xml到bin目錄

mv tc-config.xml ./bin/

#配置java環境變量

vi ~/.bashrc

export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:$PATH

source ~/.bashrc

(主服務器)運行Terracotta(注意加 & 丟到后臺執行)

./start-tc-server.sh &

各個子節點,配置好context.xml后重啟服務器

(各個子服務)重啟Tomcat

service tomcat7 restart

6、關閉Terracotta

子節點關閉tomcat

管理節點執行 ./stop-tc-server.sh -n apache

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/395800.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395800.shtml
英文地址,請注明出處:http://en.pswp.cn/news/395800.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

移動應用程序和網頁應用程序_如何不完全破壞您的移動應用程序的用戶界面

移動應用程序和網頁應用程序by Luke Konior盧克科尼爾(Luke Konior) 如何不完全破壞您的移動應用程序的用戶界面 (How to not utterly ruin your mobile app’s user interface) There’s no single universal formula for designing a great user interface (if you discover…

logging記錄日志

日志是一個系統的重要組成部分,用以記錄用戶操作、系統運行狀態和錯誤信息。日志記錄的好壞直接關系到系統出現問題時定位的速度。logging模塊Python2.3版本開始成為Python標準庫的一部分。 日志級別 在最簡單的使用中,我們直接導入logging模塊&#xff…

C#編程之接口

1.定義 接口是把公共方法和屬性組合起來,以封裝特定功能的一個集合。(一旦定義了接口,就可以在類中實現它。這樣類就可以支持接口所指定的所有屬性和成員) 注意1:接口不能單獨存在。不能像實例化一個類那樣實例化一個接…

supervisor守護進程

2019獨角獸企業重金招聘Python工程師標準>>> supervisor 是一個client/server系統,把不是守護進程的進程變成守護進程,并監控和控制類 Unix 操作系統上的進程。 upervisor就是用Python開發的一套通用的進程管理程序,能將一個普通的命令行進程變為后臺dae…

神經網絡算法 java 源代碼_神經網絡算法與實現 ——基于Java語言 代碼實例

【實例簡介】Neural Network Programming with Java_ISBN 978-7-115-46093-6【實例截圖】【核心代碼】NeuralNetworkProgrammingwithJava_code└── Neural Network Programming with Java_code├── Chapter1│ ├── HiddenLayer.java│ ├── InputLayer.java│ ├…

javascript面試_在編碼面試中需要注意的3個JavaScript問題

javascript面試JavaScript is the official language of all modern web browsers. As such, JavaScript questions come up in all sorts of developer interviews.JavaScript是所有現代Web瀏覽器的官方語言。 因此,各種開發人員訪談中都會出現JavaScript問題。 T…

【學習筆記】深入理解js原型和閉包(11)——執行上下文棧

繼續上文的內容。 執行全局代碼時,會產生一個執行上下文環境,每次調用函數都又會產生執行上下文環境。當函數調用完成時,這個上下文環境以及其中的數據都會被消除,再重新回到全局上下文環境。處于活動狀態的執行上下文環境只有一個…

Java基礎--訪問權限控制符

今天我們來探討一下訪問權限控制符。 使用場景一:攻城獅A編寫了ClassA,但是他不想所有的攻城獅都可以使用該類,應該怎么辦? 使用場景二:攻城獅A編寫了ClassA,里面有func1方法和func2方法,但是他…

css繪制正方體_設計師僅使用CSS繪制了8個標志性X戰警

css繪制正方體Here are three links worth your time:這是三個值得您花費時間的鏈接: A designer drew 8 iconic X-Men using nothing but CSS (1 minute interactive) 一位設計師僅用CSS繪制了8個標志性的X戰警( 互動時間為1分鐘 ) Raspberry Pi just turned 5. H…

Dubbo簡單介紹及實例

1、概念 Dubbo是一個分布式服務框架,以及阿里巴巴內部的SOA服務化治理方案的核心框架。其功能主要包含:高性能NIO通訊及多協議集成。服務動態尋址與路由。軟負載均衡與容錯,依賴分析與降級等。 說通俗點,就是首先將程序組件化成一…

Oracle 10.2.0.5升級至11.2.0.4

參照MOS 官方文檔Complete Checklist for Manual Upgrade to Oracle Database 11gR2 (11.2) (Doc ID 837570.1)一、升級前的準備1、復制utlu112i.sql腳本從11G數據庫復制$ORACLE_HOME/rdbms/admin/utlu112i.sql 腳本至10g 數據庫臨時目錄,準備執行如果不在10g數據庫…

脫殼_詳細_使用的方法_01

ZC: 如何確定被調試程序已經來到了 未加殼的程序中? ZC:  視頻中是使用判斷集中語言的特征 ZC:  我的方法:上面的方式 ESP平衡 1、第1課 (1)、單步跟蹤(原則:向下的跳轉>正常F8,向上的跳轉>F4跳過(或者用F2…

android 函數式編程_Android開發人員的函數式編程-第1部分

android 函數式編程by Anup Cowkur通過安納普考庫(Anup Cowkur) Android開發人員的函數式編程-第1部分 (Functional Programming for Android Developers — Part 1) Lately, I’ve been spending a lot of time learning Elixir, an awesome functional programming language…

java編程 內存_Java編程技術之淺析JVM內存

JVMJVM->Java Virtual Machine:Java虛擬機,是一種用于計算設備的規范,它是一個虛構出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現的。基本認知:1.JVM是用于運行Java代碼的假象計算機,主要有一套字節碼指令…

bzoj1116: [POI2008]CLO

傳送門:http://www.lydsy.com/JudgeOnline/problem.php?id1116 題目大意:Byteotia城市有n個 towns m條雙向roads. 每條 road 連接 兩個不同的 towns ,沒有重復的road. 你要把其中一些road變成單向邊使得:每個town都有且只有一個入度 題解&am…

java排序算法大全_各種排序算法的分析及java實現

排序一直以來都是讓我很頭疼的事,以前上《數據結構》打醬油去了,整個學期下來才勉強能寫出個冒泡排序。由于要找工作了,也知道排序算法的重要性(據說是面試必問的知識點),所以又花了點時間重新研究了一下。排序大的分類可以分為兩…

Cocos2d-x 3.0 簡捷的物理引擎

Cocos2d-x 3.0 開發(九)使用Physicals取代Box2D和chipmunk http://www.cocos2d-x.org/docs/manual/framework/native/physics/physics-integration/zh -- 官網Demo 水墨魚的專欄 http://www.cocos2d-x.org/docs/catalog/zh --- 官方 搭“server” 須要哪…

google i/o_Google I / O 2017最有希望的突破

google i/oby Aravind Putrevu通過Aravind Putrevu Google I / O 2017最有希望的突破 (The most promising breakthroughs from Google I/O 2017) Google I/O is one of the biggest developer conferences. This year was particularly exciting. There were two keynotes: o…

java clex 中的 IloLPMatrix

最近看 cplex 在 java 的 callback,發現它給的 callback 例子中,都是用 IloLPMatrix 這個類放約束條件,在 IloLPMatrix 中, 每個約束條件存儲在 IloRange 中。 使用 IloLPMatrix 的好處是,這個類可以方便查看模型中的求…

6/12 Sprint2 看板和燃盡圖

轉載于:https://www.cnblogs.com/queenjuan/p/5578551.html