elasticsearch-jdbc填坑記

引言

最近公司準(zhǔn)備使用elasticsearch(es)诫睬,將數(shù)據(jù)庫(kù)的記錄同步到es中舷暮,往外提供查詢(xún)的功能态罪,而同步工具在選擇上有主要幾種:
1:elasticsearch-jdbc:作者蠻努力的,源源不斷的更新下面,Java寫(xiě)的
2:elasticsearch-river:太監(jiān)了复颈,已經(jīng)兩三年沒(méi)更新了
3:Go-mysql-elastic:國(guó)人寫(xiě)的,還未穩(wěn)定
4:logstash-input-jdbc:Ruby寫(xiě)的沥割,且是官方推薦
由于本人是寫(xiě)Java出身耗啦,所以盡量選擇Java的同步工具,所以Go机杜、Ruby就沒(méi)有做更多考慮帜讲,而river的話,也是好久沒(méi)更新了叉庐,所以最終選擇下來(lái)準(zhǔn)備使用elasticsearch-jdbc舒帮,說(shuō)干就干,咋就擼起袖子開(kāi)干了

調(diào)研及安裝

elasticsearch-jdbc的安裝不復(fù)雜陡叠,把zip包拉下來(lái)玩郊,放到一個(gè)環(huán)境跑起來(lái)就行了,具體可以去度娘及Google都行

問(wèn)題

環(huán)境跑起來(lái)后枉阵,就看看功能是不是滿(mǎn)足要求译红,還不錯(cuò),除了物理刪除支持不是很好外兴溜,其他的增量數(shù)據(jù)侦厚,全量數(shù)據(jù)都能進(jìn)行同步,但是問(wèn)題來(lái)了拙徽,用jconsole連上環(huán)境卻發(fā)現(xiàn)刨沦,這個(gè)線程數(shù)源源不斷的增加,如下:

Paste_Image.png

我們知道線程其實(shí)是很消耗系統(tǒng)資源的,內(nèi)存膘怕,Cpu等等想诅,如果這個(gè)線程數(shù)量一致增加,那最終是OOM的結(jié)果岛心,這樣的結(jié)果是不能進(jìn)行生產(chǎn)上運(yùn)行的来破,最終我們要解決這個(gè)問(wèn)題的,故苦逼的排查開(kāi)始了:
1:查文檔忘古,翻看issue徘禁,我擦,還真有同道中人髓堪,有一個(gè)國(guó)人用中文提了一個(gè)問(wèn)題送朱,和我碰到的問(wèn)題是一樣的娘荡;

Paste_Image.png

作者也回復(fù)了,這個(gè)issue會(huì)在最新的版本中修復(fù)掉骤菠,但是他最新版本發(fā)布是啥時(shí)候它改,不知道啊,只能自己排查了商乎。
2:用jstack來(lái)看了當(dāng)前線程的狀態(tài)央拖,發(fā)現(xiàn)是wait-condition,wait。其他詳細(xì)信息沒(méi)有了鹉戚,我們知道線程的狀態(tài)一般出現(xiàn)wait-condition都是因?yàn)榫W(wǎng)絡(luò)請(qǐng)求過(guò)去了鲜戒,但是卻一直沒(méi)有返回,或者寫(xiě)文件未關(guān)閉抹凳,只能是拉源碼自己看了
3:elasticsearch-jdbc的源碼還是比較精簡(jiǎn)的遏餐,其就是一個(gè)source,slink赢底,其中source是從RDMS里面讀取數(shù)據(jù)失都,而slink是將數(shù)據(jù)寫(xiě)入到Es中,而這兩個(gè)都是會(huì)有網(wǎng)絡(luò)請(qǐng)求的數(shù)據(jù)幸冻,于是開(kāi)始注代碼
把source的讀取注釋掉粹庞,如下:

Paste_Image.png

這個(gè)是嵌入了source的拉取和slink的推送(不太清楚作者的命名是怎么想的),只要把beforeFetch(),fetch()注釋掉洽损,source就不起作用了庞溜。
把a(bǔ)fterFetch()注釋掉,slink就不起作用了碑定,然而發(fā)現(xiàn)沒(méi)什么用流码,線程數(shù)還是源源不斷的增加
4:只能啃代碼了
elasticsearch-jdbc的增量同步的思路是提交一個(gè)Cron表達(dá)式或者時(shí)間間隔,然后每次都是創(chuàng)建一個(gè)同步對(duì)象來(lái)進(jìn)行同步的延刘,如下:

Paste_Image.png

而JDBCImporter是每一次調(diào)度都會(huì)進(jìn)行一次新建漫试,所以相當(dāng)于每一次進(jìn)行同步該對(duì)象都是新的。仔細(xì)看了JDBCImporter的代碼

Paste_Image.png

仔細(xì)看看prepare()方法

Paste_Image.png

executorService由于JDBCImporter的新創(chuàng)建調(diào)度碘赖,又會(huì)進(jìn)行重新一次設(shè)置驾荣,最終的結(jié)果就是每一次調(diào)度executorService都是最新的,而同步完成后崖疤,卻沒(méi)有釋放掉該線程池,最終修改也比較簡(jiǎn)單。

Paste_Image.png

在finally中典勇,把這個(gè)新建的線程池關(guān)閉掉劫哼,并且設(shè)置為null值,讓他等待Gc就行了割笙。修改完重新打包部署阐虚,觀察下線程數(shù),不再繼續(xù)增加了

Paste_Image.png

最終代碼上傳在:
https://github.com/linking12/YuGong

總結(jié)

盡管java的gc讓程序員不再關(guān)注對(duì)象的消亡戴已,但是對(duì)線程池這類(lèi)的一些公共資源的一些維護(hù)還是需要慎重
另外就是想表達(dá)的是:我們使用任何一個(gè)開(kāi)源項(xiàng)目還是首先的了解下他的一些設(shè)計(jì)思路蓖救,最好是閱讀一遍源碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市弓千,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖宫静,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異券时,居然都是意外死亡孤里,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)橘洞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)捌袜,“玉大人,你說(shuō)我怎么就攤上這事炸枣÷驳龋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵适肠,是天一觀的道長(zhǎng)霍衫。 經(jīng)常有香客問(wèn)我,道長(zhǎng)迂猴,這世上最難降的妖魔是什么慕淡? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮沸毁,結(jié)果婚禮上峰髓,老公的妹妹穿的比我還像新娘。我一直安慰自己息尺,他們只是感情好携兵,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著搂誉,像睡著了一般徐紧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上炭懊,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天并级,我揣著相機(jī)與錄音,去河邊找鬼侮腹。 笑死嘲碧,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的父阻。 我是一名探鬼主播愈涩,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼望抽,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了履婉?” 一聲冷哼從身側(cè)響起煤篙,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎毁腿,沒(méi)想到半個(gè)月后辑奈,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡狸棍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年身害,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片草戈。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡塌鸯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出唐片,到底是詐尸還是另有隱情丙猬,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布费韭,位于F島的核電站茧球,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏星持。R本人自食惡果不足惜抢埋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望督暂。 院中可真熱鬧揪垄,春花似錦、人聲如沸逻翁。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)八回。三九已至酷愧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缠诅,已是汗流浹背溶浴。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留管引,地道東北人士败。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像汉匙,于是被迫代替她去往敵國(guó)和親拱烁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,133評(píng)論 25 707
  • 歡迎訪問(wèn)我的博客查看原文:http://wangnan.tech 注:文本整理自《ELKstack權(quán)威指南》 架構(gòu)...
    GhostStories閱讀 19,838評(píng)論 0 31
  • 1 高考的成績(jī)公布了,我的成績(jī)不是很理想伤锚,我為此大哭了一場(chǎng)擅笔,好幾個(gè)星期都沒(méi)有出家門(mén)。那時(shí)的我感覺(jué)像被整個(gè)世界...
    昔日醉相別閱讀 1,577評(píng)論 6 29
  • 空氣污染對(duì)柑橘生長(zhǎng)有不利影響屯援,同時(shí)也影響果實(shí)的食用安全性猛们。柑橘對(duì)空氣中的二氧化硫、氯化物和一些有機(jī)化學(xué)污染物敏感狞洋。...
    牛舟舟閱讀 1,566評(píng)論 0 0