摘要:因?yàn)槭歉卟僮鳎跃€程池大小最好為數(shù)量的倍。柔性判斷,如果插入延遲過(guò)高,或者插入數(shù)據(jù)庫(kù)線程過(guò)多,都會(huì)引起系統(tǒng)異常。
一 業(yè)務(wù)場(chǎng)景
公司年終要辦一個(gè)搶購(gòu)活動(dòng),搶購(gòu)活動(dòng)維護(hù)有一份名單(txt文件),只有名單中的用戶(hù)可以參加搶購(gòu)活動(dòng),所以需要把名單導(dǎo)入到內(nèi)存數(shù)據(jù)庫(kù)中,以便于檢驗(yàn)用戶(hù)是否有資格。
原先的設(shè)計(jì)分為兩步,第一步先把文件導(dǎo)入到數(shù)據(jù)庫(kù)中,而后第二步操作將數(shù)據(jù)庫(kù)中的數(shù)據(jù)同步到redis中。
二 存在問(wèn)題當(dāng)數(shù)據(jù)n百萬(wàn)的時(shí)候是能夠滿(mǎn)足需求的,但是當(dāng)這個(gè)白名單數(shù)量到達(dá)n千萬(wàn)的時(shí)候,第二步基本就無(wú)法操作了,從數(shù)據(jù)庫(kù)中同步到redis,即使分頁(yè)每次都要一個(gè)全表掃描(因?yàn)闆](méi)做索引,而且即使有索引也只能有限的提高),速度非常慢,要1-2小時(shí)。
三 解決方案在第一步同步到數(shù)據(jù)庫(kù)中時(shí),需要對(duì)每一行的txt進(jìn)行掃描,進(jìn)行一些業(yè)務(wù)處理,然后存入白名單數(shù)據(jù)表,而這一步的時(shí)候完全就可以存入redis了,所以刪除第二步,在入庫(kù)的同時(shí)存入到redis即可。將時(shí)間減少了1-2小時(shí)
四 優(yōu)化后來(lái)細(xì)思下,數(shù)據(jù)為何要存到數(shù)據(jù)庫(kù)中?存到數(shù)據(jù)庫(kù)中是為了什么呢?難道是為了校驗(yàn)?1500W數(shù)據(jù)你要校驗(yàn)到什么時(shí)候,而且假設(shè)存到數(shù)據(jù)庫(kù)丟數(shù)據(jù)了,哪又如何來(lái)校驗(yàn)?zāi)兀克裕詈玫姆椒ㄊ侵苯佑梦募鎯?chǔ)。
文件存儲(chǔ)有個(gè)問(wèn)題是還需要掛載另外一個(gè)文件盤(pán),帶來(lái)系統(tǒng)運(yùn)維的復(fù)雜性。那么,干脆直接用源文件,直接做插入即可。
五 分塊插入首先將文件進(jìn)行分塊,將分塊后的文件發(fā)送到各個(gè)微服務(wù)。文件上傳時(shí)會(huì)直接讀到內(nèi)存,如果虛擬機(jī)的分配的內(nèi)存不夠,服務(wù)會(huì)崩潰掉,所以如果1500w文件直接上傳,要么將java虛擬機(jī)空間設(shè)置的足夠大,要么在前端就進(jìn)行分片。
每個(gè)微服務(wù)再分線程進(jìn)行處理。因?yàn)槭歉逫O操作,所以線程池大小最好為CPU數(shù)量的2倍。
柔性判斷,如果插入redis延遲過(guò)高,或者插入數(shù)據(jù)庫(kù)線程過(guò)多,都會(huì)引起系統(tǒng)異常。這里可以用Guava的retry包來(lái)判斷線程的返回值,如果返回值是延遲過(guò)高或者線程過(guò)多,均啥都不做,直接返回,否則進(jìn)行redis或者數(shù)據(jù)庫(kù)操作。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/71151.html
摘要:月日,正式發(fā)布版。性能方面重點(diǎn)優(yōu)化了負(fù)載均衡調(diào)度策略和流程。另外的速度也得到顯著的提升。于年月在創(chuàng)建,同年月發(fā)布版本,而后于年月發(fā)布版,月發(fā)布版,并在年月發(fā)布版。 6 月 16 日,TiDB 正式發(fā)布 RC3 版。該版本對(duì) MySQL 兼容性、SQL 優(yōu)化器、系統(tǒng)穩(wěn)定性、性能做了大量的工作。性能方面重點(diǎn)優(yōu)化了負(fù)載均衡調(diào)度策略和流程。功能方面進(jìn)一步完善權(quán)限管理功能,用戶(hù)可以按照 MyS...
摘要:特點(diǎn)有聚合運(yùn)算相關(guān)算法,時(shí)序數(shù)據(jù)庫(kù)相對(duì)于關(guān)系型數(shù)據(jù)庫(kù)沒(méi)有特別復(fù)雜的查詢(xún),最常見(jiàn)的使用類(lèi)型是寬表使用,在此基礎(chǔ)上做一些聚合算法插值查詢(xún)。 首先簡(jiǎn)單介紹一下網(wǎng)易杭州研究院情況簡(jiǎn)介,如下圖所示: showImg(https://segmentfault.com/img/bVbni6K?w=720&h=285); 我們公司主要從事平臺(tái)技術(shù)開(kāi)發(fā)和建設(shè)方面,工作的重點(diǎn)方向主要在解決用戶(hù)在數(shù)據(jù)治理中...
閱讀 1864·2023-04-25 14:28
閱讀 1897·2021-11-19 09:40
閱讀 2801·2021-11-17 09:33
閱讀 1389·2021-11-02 14:48
閱讀 1715·2019-08-29 16:36
閱讀 3337·2019-08-29 16:09
閱讀 2922·2019-08-29 14:17
閱讀 2385·2019-08-29 14:07