鍍金池/ 問(wèn)答/數(shù)據(jù)分析&挖掘  Java  網(wǎng)絡(luò)安全/ 分布式任務(wù)的混亂,求教治理思路

分布式任務(wù)的混亂,求教治理思路

情況如下:

1000臺(tái)云服務(wù)器(ecs)
1臺(tái)MySQL(rds)

每臺(tái)云服務(wù)器上都部署了一個(gè)Java應(yīng)用,他們都連接同一個(gè)mysql數(shù)據(jù)庫(kù)。
每個(gè)Java應(yīng)用里面有100個(gè)定時(shí)任務(wù)和10個(gè)定時(shí)執(zhí)行的爬蟲(chóng)任務(wù),做數(shù)據(jù)采集后再入庫(kù)。

困境:
沒(méi)法看到定時(shí)任務(wù)的執(zhí)行狀況。 如果某個(gè)定時(shí)任務(wù)執(zhí)行出錯(cuò),必須要到這臺(tái)服務(wù)器上看log文件。
操作大批量數(shù)據(jù)時(shí),長(zhǎng)期占用mysql連接導(dǎo)致cpu 99%。

我想要:
1、每個(gè)java應(yīng)用不單獨(dú)連接數(shù)據(jù)庫(kù),全部通過(guò)連接一個(gè)rpc服務(wù)操作數(shù)據(jù)庫(kù)。 那么這是一個(gè)已經(jīng)完成已久的項(xiàng)目(是一個(gè)分布式的任務(wù)處理系統(tǒng)。只不過(guò)master是由mysql來(lái)充當(dāng)?shù)模惺裁春玫挠挚焖俚奶鎿Q方式嗎?(或者我這種想法也不可行,有更好的方式推薦嗎?)

2、可以在一個(gè)統(tǒng)一的地方管理定時(shí)任務(wù)和爬蟲(chóng)。 如果某個(gè)定時(shí)任務(wù)執(zhí)行失敗,用戶可以在web端界面手動(dòng)執(zhí)行這個(gè)任務(wù)。失敗或出現(xiàn)異常,異常信息要反饋到web界面上。(這一點(diǎn)我也有點(diǎn)疑惑,如果通過(guò)rpc或者h(yuǎn)ttp方式去調(diào)用遠(yuǎn)程的任務(wù),當(dāng)一個(gè)任務(wù)執(zhí)行時(shí)間太久,必定會(huì)超時(shí)。 那么是否需要一個(gè)異步回調(diào)的機(jī)制?)

3、在這個(gè)系統(tǒng)里面還有爬蟲(chóng)任務(wù),我想把爬蟲(chóng)回來(lái)的原始數(shù)據(jù)和解析數(shù)據(jù)這一步分開(kāi)處理。 就是這1000臺(tái)服務(wù)器上的爬蟲(chóng)將數(shù)據(jù)爬回來(lái)后(page source)不直接處理,先存起來(lái)。然后在由另外一個(gè)程序統(tǒng)一解析處理。 我用什么方式存儲(chǔ)比較好。(目前想到mongodb,但aliyun的mongodb好貴)

回答
編輯回答
解夏

為啥要用1000臺(tái)服務(wù)器,是為了IP分散么?如果是這個(gè)目的建議改用代理池

2018年2月23日 19:11