2013年3月28日 星期四

gemfire 碎碎念...

Gemfire...如果把他丟進wiki...你會得到一個遊戲...
但是丟到Java...就是...囧rz...

其實這個現在是vmware底下的一個產品~
前身是gemstone公司做的~ 後來被vmware買走~
聽了一些課~ 搞了一個POC~
簡單的認知就是一個以Java為Base(可跨平台Win/linux), 可以做為In Memory DB/Grid, 分散式可擴充的運算或儲存的一個實作架構...
(在儲存處理的部分~ 是以RAM為主~ 也可配置Disk使用~ 當然這邊就是靠設定在做... )
另外因為是以Memory為主, 所以在I/O上有很大的優勢~~是新名詞Fast Data的一環...
(之前一堆人喊 Big Data...現在還要Fast...是想逼死我們這些苦命工程師喔QQ)

官網在這
https://www.vmware.com/products/application-platform/vfabric-gemfire/overview.html

說到很囧的原因是...
這東西~ 在台灣沒人用過阿阿阿阿阿.....
目前就大陸那邊有個代理gemfire的~ 台灣vmware大概今年才會開始在台灣努力一下...
目前偶公司是想當代理還是SI技術支援之類的~不管他...反正就公司政策啦...

前提就是~ 只有業務說得像真的一樣的~ PPT演講~
外國人來上一天的實機安裝(用啥spring的ide...完全不知道在幹麻~光ide就不會用了一_一)
靠著官網...下載試用...
還有官方文件就是一本九百多頁但是完全不會變重的pdf...user guild...
就這麼的莫名其妙的...靠文件, 靠Java, 有看跟沒有懂的shell, log, 加上一點直覺...
也莫名其妙的做了一點成果(至少會動啦一_一")
(提一下spring, 原來他們也被vmware買走了~vmware買了不少有open source的公司阿~)

雖然大陸人後來有來幫我們上課~ (其實還蠻有用的~ 直接把架構跟做法拿給他們看跟討論...改一下就很有進步)...不過是真的晚了點(前面自己奮鬥了兩個半月Q__Q..你們早點來教不就簡單多了)


在設計理念的前提下~ 偶是把他當一個大型的memory pool來看~
反正就是可以多台叢集~ 把多台的RAM連起來一樣~~~資料交換與儲存都在memory中~ 最後只把對其他系統交換的結果寫出檔案或寫進DB裡...
後來再加進grid的概念下來做分散式運算~


使用後的心得是~ 在硬體上~ gemfire就是個以memory儲存為主的架構~ 所以RAM一定要大!!
至少配8G以上吧~ 測試區有4G的~ 很容易就被打爆到out of memory...
CPU也不要太差~ 因為他很多是用Thread的方式在進行...CPU高處理快~ Queue住的Thread就會比較少...Thread太多排隊要做~ 也是會撐爆RAM的...

OS要求很簡單~ 就盡量使用64位元的吧~ 主要是64位元~ 可定義的RAM才比較大~ 比較好用...平台要省錢就是用linex系列...

軟體環境只要JDK...大家都知道7有問題(被商業化就爛尾了XD)...所以好習慣請使用6以上即可...我都是另外用SUN JDK...預設open jdk常常有怪問題...

至於選用server版或桌面版都可以~ 話說偶看到linux那些桌面版反而都不會用Orz...雖然很痛恨黑白畫面~ 但是有畫面更不會用.../默...所以管理上比較習慣是主機都全灌server版, 然後配一台win的做所有putty/client GUI/跳版管理...


有一點比較麻煩的是~ 傳統儲存都是DB或是File..之類的~ 存在memory...就想成是一堆資料流~ 並沒有被實體化~ 說真的寫了什麼進去都常搞不清楚XD...初期還寫了一套DB儲存的備案(因為怕gemfire做不出來開天窗就GG了)...可以看看資料在不同程序下的變化~
不過gemfire也是有一些管理工具啦~ 不過有其他的安裝跟設定~ 當初沒有研究就...
還有些工具需要授權碼才能開啟功能~ 也是個麻煩的地方...
(台灣其實也沒有正式代理~ 那個碼你有錢也買不到...反正就跟原廠凹一個來用就對了XD)

另外是運算概念的不同~ 主要差別在分散式的概念~ 以前多筆就是一個LOOP下去~ 一直跑跑完就是了~ 現在是分散到不同機器去跑~ "總量"的統計變成困難~ 還有運算的結束時間點判定困難~ 都是一些在效能比較時會碰到的問題~

延伸出來的就是~ 不同Thread同時去讀/寫同一個資料的問題~ 在DB中有良好的trsation機制來看...但是在這邊就要自行處理~ 還有"多台主機"同時access"同一份資料"的議題也算是新的...(聽說DB叢集是每一台都有一份一模一樣的資料~ 所以都只會ACCESS自己主機的資料~ 不過在gemfire裡面~ 資料是分散儲存的~ 資料碰撞的問題會更明顯)

有一部分是設定的部分~ 他提供的XML設定項目多的...看user guild還不是全部的哩~~~
如果搞懂設定~ 的確可以使用到很多很方便的功能!!...少寫很多處理的程式~~
不過設定歸設定~ 設定後是不是真的如你所想的運作~ 嗯哼~ 要有測或出事了才知道Orz...


還有一個常比較的是~ 要快的話~ DB資料可以做trigger...gemfire也大多是利用這個特性來達到分散運算(就是省client-server資料傳輸)~ 所以變成DB的預存程序會來跟他做比較~ 上課討論中~ 大家也都是吵預存程序的問題還蠻多的XD...
偶想了很久~真要說gemfire在這裡的優點就是~ 容易外掛功能~ 像...web service處理之類的~ DB能發web service去介接外部API和功能嗎
另外就是DB程序人員的凋零XD...現在畢業出來有多少人是主攻DB設計的~ 另外不同加的DB提供的function也不一樣~ 管理也不同~ 是一個比較封閉的平台..吧O_o

那gemfire能取代DB/File嗎~ 基本上還是不太行~ 雖然RAM可以串連變大~ 但是簡單的說~ 要搞到1T的ram...和1T的硬碟那個比較簡單=___=|||...所以偶覺得他的定位是比較偏向Fast data...利用memory加速I/O..以及分散式運算...可彈性擴充延展做為一個middle ware...
而且有速度要求的系統並也不是很多~ 以CP值和管理維護來說~ 依據系統提供服務的特性來選用架構是還是比較正確的~

沒有留言: