1. 程式人生 > >叢集環境下開發需要注意哪些地方?

叢集環境下開發需要注意哪些地方?

昨天有人問了我一個問題,一臺tomcat部署的應用,如果佈置到兩個tomcata中,編碼需要注意哪些,當時沒能回答上來,後來想想這就應該是一個叢集環境啊,叢集需要注意什麼呢,下來在網上看了一些資料,總結一下吧

1.Session,我們經常用session來封裝使用者的登入資訊,那麼如果叢集環境下一臺機器session中有,一臺沒用回發生什麼樣的情況呢?幸好各個應用伺服器都有在叢集環境下session複製的配置。如何配置請查閱對應的文件。另外web開發經常用到Webwork,strut2,flex等技術,他們都對sesson的封裝。他們是否也能複製呢?還要測試才行,當然理論上是可以的,呵呵!還有有的時候session要儲存到什麼位置?也是個問題a)記憶體,b)檔案 c)資料庫。根據實際情況來選擇吧。
2.Cache,Cache我們經常使用(我這裡只說物件級快取),如:將一些經常用到的資料快取到記憶體中。這種情況下和session有些類似。有的人例項化了一個包含HashMap的一個單例的物件,用來快取資料,單機環境沒什麼問題,可是如果是叢集環境呢?會怎樣?所有我們引用分散式快取或者集中式快取,分散式快取有很多種如ehcache,jbosscache,oscache等,集中式快取比較典型的就是 memcached。選擇分散式還是集中式根據專案的需要來定了。這裡就不說了。
3. 執行緒、定時器,如:單機環境下我們寫一個單執行緒,如用來像其他系統上傳數 據(這個資料部允許多次上傳),如果程式釋出在叢集環境下回發生什麼情況?呵呵。變成多執行緒了。多個計算機內的單執行緒同時上傳資料。所以這個時候考慮的地方就很多了!!是選擇故障轉移還是負載均衡都是考慮的範圍。定時器也雷同。可以參考spring quartz 叢集解決方案。
4.JDBC,JDBC注意的是資料庫叢集的情況,如weblogic叢集架構圖所示,編 寫程式時,獲得JDBC連結可以這樣寫, 
Connectioin con = null;
try{
  Class.forName("oracle.jdbc.driver.OracleDriver");//JVM載入驅動類 
  String url = "jdbc:oracle:thin:@(description =(address = (protocol = tcp)(host = 192.168.1.2)
  (port = 1521))(address=(protocol = tcp)(host = 192.168.1.3)(port=1521))(load_balance=yes)
  (connect_data =(service_name = twjk)))";
  String url ="jdbc:oracle:thin:@(description=(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.8)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.9)(PORT =  1521))(load_balance=yes)(failover=yes))(connect_data=(service_name= racdb)))";
  con =  DriverManager.getConnection(url, "twjkdev","twjk");
  } catch (Exception e) {  
  // TODO 自動生成 catch 塊 
  e.printStackTrace(); 
  }                           
  return con; 
  在伺服器中配置資料來源是不同的伺服器配置也不一樣。       如在websphere中,配置資料來源的URL選項可以加入如下程式碼  
  jdbc:oracle:thin:@(description=(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.8)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.9)(PORT =  1521))(load_balance=yes)(failover=yes))(connect_data=(service_name= racdb))) 
 程式自己選擇使用的JDBC連結 。     在weblogic中是使用多資料來源的方式來實現的,伺服器有負載均衡和故障轉移兩項選擇。

 這些是網上普遍提到的,當做筆記和大家分享一下,如有其它問題,也請各位看官能總結交流一下

相關推薦

叢集環境開發需要注意哪些地方

昨天有人問了我一個問題,一臺tomcat部署的應用,如果佈置到兩個tomcata中,編碼需要注意哪些,當時沒能回答上來,後來想想這就應該是一個叢集環境啊,叢集需要注意什麼呢,下來在網上看了一些資料,總結一下吧 1.Session,我們經常用session來封裝使用者的登入資

一個優秀的雲原生架構需要注意哪些地方

本文整理自**騰訊雲容器產品,容器解決方案架構團隊的陳浪交**在 Techo 開發者大會雲原生專題的分享內容——一個優秀的雲原生架構需要注意哪些地方。本文將會給大家分享**雲原生架構的特點和以及實踐過程中的一些注意事項**。 從CNCF給出的雲原生官方的定義可以看出,雲原生架構其實是一種方法論,沒有對開發語

【高併發】高併發環境構建快取服務需要注意哪些問題?我和阿里P9聊了很久!

## 寫在前面 > 週末,跟阿里的一個朋友(去年晉升為P9了)聊了很久,聊的內容幾乎全是技術,當然了,兩個技術男聊得最多的話題當然就是技術了。從基礎到架構,從演算法到AI,無所不談。中間又穿插著不少天馬行空的想象,雖然現在看起來不太實際,但是隨著技術的進步,相信五年、十年之後都會實現的。 > &

Unity開發時遇到的各種需要注意地方

前言: 最近在做東西的時候突然想到,自己以前做過的專案有很多地方需要注意的,然而並沒有記錄下來,導致下次還會出現這樣的問題。於是就有了這個想法,把之前各種各樣奇奇怪怪的問題都記錄下來,解決方案也寫下了。 一是加深記憶,二是萬一又遇到了好歹也有個參考;   正文: 1、T

型別轉換有哪些需要注意地方

型別轉換的語法:T(x)。 其中T叫做目標型別,x叫做源值,可以是一個變數,也可以是一個代表值的常量,還可以是一個單值的表示式。x的型別叫做源型別。 Go語言規範中規定了哪些從源型別到目標型別的轉換是合法的,編譯器會幫我們檢查出這些不合法的錯誤轉換,這些我們不需要關心。我們需要關心的是那些Go語言編譯器很難檢

微服務架構的監控需要注意哪些方面?

微服務架構在帶來靈活性、擴充套件性、伸縮性以及高可用性等優點的同時,其複雜性也給運維工作中最重要的監控環節帶來了很大的挑戰,從使用者的角度看,微服務架構下的監控應該注意哪些方面? 微服務架構雖然誕生的時間並不長,卻因為適應現今網際網路的高速發展和敏捷、DevOps 等文化而受到很多企業的推崇。微服務架構在帶

pthreads v3一些坑和需要注意地方

一、子執行緒無法訪問父執行緒的全域性變數,但父執行緒可以訪問子執行緒的變數 <?php class Task extends Thread { public $data; public function run() { global $n

python學習 ( 一 ) :安裝基礎和安裝環境需要注意地方

常用:使用workon 時要在envs下使用 1. pip使用報錯 ‘pip’ 不是內部或外部命令,也不是可執行的程式或批處理檔案。 解決方法: 將python的環境新增到pathon中例如:Python27\Scripts 2.使用豆瓣原來安裝dj

記錄串列埠使用需要注意地方

1.串列埠使用有時候讀取不了串列埠。不要一直去檢查驅動問題,偶爾看看你的板子上面是否有一個小開關,把串列埠功能關閉了。 2.另外,當串口占用之時,採用USB轉TTL型別的下載器就下載不了程式了。因為串列埠已經佔用了TX和Rx引腳,那麼當然下載器下載不了程式了。

機房存在哪些安全隱患?需要排查哪些地方

機房配電櫃 安裝 機房配電箱 前言:機房配電櫃、配電箱經常會出現一些問題,而大多數問題的根源都是在安裝過程中操作不當,導致問題頻發產生嚴重的後果,其實配電櫃、配電箱的安裝有多“禁忌”以及不好的地方需要註意,了解配電櫃、配電箱的安裝規範及使用安全事項是一名合格電工技師應具備的基本技能。下面看看配電箱

Maven_生產環境開發對Maven的需求

手動 不同 保存 拆分 多個 需要 開發 復制 strong 目前技術開發時存在的問題:   一個項目就是一個工程     如果一個項目非常龐大,就不適合繼續使用package來劃分模塊。最好是每一個模塊對應一個工程,利於分工協作。     借助Maven就可以將一個項目拆

叢集環境module載入模組與作業提交

叢集上已安裝了軟體,卻無法呼叫,許可權不足的情況下,往往管理賬戶會開放一個埠,讓我能夠只用module命令來載入相關軟體。 module使用 管理賬戶modules的安裝 sudo yum install -y environment-modules mo

詳解關於Vue2.0路由開啟keep-alive時需要注意地方

Vue2.0 做應用必有的需求就是頁面資料需要做快取,不用每次進入頁面都要把資料重新請求一遍,每次頁面切換都有段等待資料相應時間,這個使用者體驗可想有多麼蛋疼,所以頁面快取是必要的,啥時候需要更新頁面資料呢?可以監聽狀態變化,或者是手動下拉重新整理重新請求資料,醬紫,我想使用者體驗會做的更好。 keep-a

android studio快捷鍵需要注意地方

1:程式碼自動補齊:推薦使用none的形式: Editor—>General—>Code Completion:None 2:自動提示需要實現的方法快捷鍵設定: keymap—>Main Menu—>Code—>Implement Methods 3:設

使用el-radio-group需要注意地方

<template> <el-radio-group v-model="radio2"> <el-radio :label="3">備選項</el-radio> <el-radio :label="6">備選項</el

前端開發需要學習哪些

遇到很多新手,都會問,如果要學習web前端開發,需要學習什麼?難不難?多久能入門?怎麼能快速建一個網站?工資能拿到多少?還有些讓我推薦一些培訓機構什麼的要去學習。我建議是自學,實在是覺得自己沒有這個能力,確實是需要一個老師的話,那你還是自己做主找個老師吧!為什麼要自學呢,現在的老師水平都可以說是參差

springboot~rabbitmq自己通過UI手動釋出佇列需要注意地方

springboot裡釋出佇列訊息 為了相容性和可讀性更好,我們一般使用json字串做為資料載體。 public void decreaseCallMonitor(CallMonitorInfo callMonitorInfo) throws Exception { try {

Vue2.0 路由開啟 keep-alive 時需要注意地方

Vue2.0 做應用必有的需求就是頁面資料需要做快取,不用每次進入頁面都要把資料重新請求一遍,每次頁面切換都有段等待資料相應時間,這個使用者體驗可想有多麼蛋疼,所以頁面快取是必要的,啥時候需要更新頁面資料呢?可以監聽狀態變化,或者是手動下拉重新整理重新請求資料,醬紫,我想使用者體驗會做的更

Redis叢集環境的-RedLock(真分散式鎖) 實踐

在不同程序需要互斥地訪問共享資源時,分散式鎖是一種非常有用的技術手段。 有很多三方庫和文章描述如何用Redis實現一個分散式鎖管理器,但是這些庫實現的方式差別很大,而且很多簡單的實現其實只需採用稍微增加一點複雜的設計就可以獲得更好的可靠性。 這篇文章的目的就是嘗試提出一種官方權威的用Redis實現分散式鎖管理

學習web前端開發需要掌握哪些技能?

一.首先告訴大家前端工程師主要做什麼? Web 前端開發是從網頁製作演變而來的,網際網路的演變程序,網站的前端也由此發生了翻天覆地的變化。網頁不再只是承載單一的文字和圖片,各種富媒體讓網頁的內容更加生動,網頁上軟體化的互動形式為使用者提供了更好的使用體驗,這些都是基於前端技術實現的。無論