Batay nan de yakozuna, oswa Cassandra vs HBase. Eksperyans ekip Sberbank

Sa a se pa menm yon blag, li sanble ke foto sa a an patikilye reflete pi egzak sans nan baz done sa yo, ak nan fen a li pral klè poukisa:

Batay nan de yakozuna, oswa Cassandra vs HBase. Eksperyans ekip Sberbank

Dapre DB-Engines Ranking, de baz done kolon NoSQL ki pi popilè yo se Cassandra (apwe sa CS) ak HBase (HB).

Batay nan de yakozuna, oswa Cassandra vs HBase. Eksperyans ekip Sberbank

Pa volonte sò a, ekip jesyon done chaje nou an nan Sberbank te deja давно epi travay kole kole ak HB. Pandan tan sa a, nou etidye fòs ak feblès li yo byen byen epi nou aprann kijan pou kwit li. Sepandan, prezans yon altènatif nan fòm CS toujou fòse nou toumante tèt nou yon ti kras ak dout: èske nou te fè bon chwa a? Anplis, rezilta yo konparezon, fèt pa DataStax, yo te di ke CS fasil bat HB ak prèske yon nòt kraze. Nan lòt men an, DataStax se yon pati ki enterese, epi ou pa ta dwe pran pawòl yo pou li. Nou te tou konfonn pa ti kantite enfòmasyon sou kondisyon tès yo, kidonk nou te deside chèche konnen poukont nou ki moun ki wa nan BigData NoSql, ak rezilta yo jwenn yo te tounen trè enteresan.

Sepandan, anvan ou ale nan rezilta tès yo fè, li nesesè dekri aspè enpòtan yo nan konfigirasyon anviwònman yo. Reyalite a se ke CS ka itilize nan yon mòd ki pèmèt pèt done. Moun sa yo. sa a se lè yon sèl sèvè (nœud) ki responsab done yo nan yon sèten kle, epi si pou kèk rezon li echwe, Lè sa a, valè a nan kle sa a pral pèdi. Pou anpil travay sa a pa kritik, men pou sektè bank la se eksepsyon an olye ke règ la. Nan ka nou an, li enpòtan pou gen plizyè kopi done pou depo serye.

Se poutèt sa, se sèlman mòd nan fonksyone CS nan mòd replikasyon trip te konsidere, i.e. Kreyasyon casespace te fèt ak paramèt sa yo:

CREATE KEYSPACE ks WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3};

Apre sa, gen de fason pou asire nivo konsistans ki nesesè yo. Règ jeneral:
NW + NR > RF

Ki vle di kantite konfimasyon ki soti nan nœuds lè w ap ekri (NW) plis kantite konfimasyon ki soti nan nœuds lè w ap li (NR) dwe pi gran pase faktè replikasyon an. Nan ka nou an, RF = 3, ki vle di opsyon sa yo apwopriye:
2 + 2 > 3
3 + 1 > 3

Piske li enpòtan anpil pou nou estoke done yo kòm serye ke posib, yo te chwazi konplo a 3 + 1. Anplis de sa, HB travay sou yon prensip menm jan an, i.e. yon konparezon konsa pral pi jis.

Li ta dwe remake ke DataStax te fè opoze a nan etid yo, yo mete RF = 1 pou tou de CS ak HB (pou lèt la pa chanje anviwònman yo HDFS). Sa a se yon aspè reyèlman enpòtan paske enpak la sou pèfòmans CS nan ka sa a se gwo. Pou egzanp, foto ki anba a montre ogmantasyon nan tan ki nesesè pou chaje done nan CS:

Batay nan de yakozuna, oswa Cassandra vs HBase. Eksperyans ekip Sberbank

Isit la nou wè sa ki annapre yo: plis fil konpetisyon ekri done, plis li pran. Sa a se natirèl, men li enpòtan ke degradasyon nan pèfòmans pou RF = 3 se siyifikativman pi wo. Nan lòt mo, si nou ekri 4 fil nan 5 tab chak (20 nan total), Lè sa a, RF = 3 pèdi apeprè 2 fwa (150 segonn pou RF = 3 kont 75 pou RF = 1). Men, si nou ogmante chaj la pa chaje done nan 8 tab ak 5 fil chak (40 nan total), Lè sa a, pèt la nan RF = 3 se deja 2,7 fwa (375 segonn kont 138).

Petèt sa a se an pati sekrè a nan tès la chaj siksè fèt pa DataStax pou CS, paske pou HB nan kanpe nou an chanje faktè a replikasyon soti nan 2 a 3 pa t 'gen okenn efè. Moun sa yo. Disk yo pa bouchon HB pou konfigirasyon nou an. Sepandan, gen anpil lòt enkonvenyans isit la, paske li ta dwe remake ke vèsyon nou an nan HB te yon ti kras patched ak tweaked, anviwònman yo konplètman diferan, elatriye. Li se tou vo anyen ke petèt mwen jis pa konnen ki jan yo prepare CS kòrèkteman e gen kèk fason pi efikas pou travay avèk li, e mwen espere ke nou pral jwenn nan kòmantè yo. Men, premye bagay an premye.

Tout tès yo te fèt sou yon gwoup pyès ki nan konpitè ki gen 4 sèvè, yo chak ak konfigirasyon sa a:

CPU: Xeon E5-2680 v4 @ 2.40GHz 64 fil.
Disk: 12 moso SATA HDD
vèsyon java: 1.8.0_111

CS vèsyon: 3.11.5

paramèt cassandra.ymlnimewo_tokens: 256
hinted_handoff_enabled: vre
hinted_handoff_throttle_in_kb: 1024
max_hints_delivery_threads: 2
hints_directory: /data10/cassandra/hints
hints_flush_period_in_ms: 10000
max_hints_file_size_in_mb: 128
batchlog_replay_throttle_in_kb: 1024
otantifikatè: AllowAllAuthenticator
otorizasyon: AllowAllAuthorizer
role_manager: CassandraRoleManager
roles_validity_in_ms: 2000
permissions_validity_in_ms: 2000
credentials_validity_in_ms: 2000
partitioner: org.apache.cassandra.dht.Murmur3Partitioner
done_file_directory:
- /data1/cassandra/data # chak anyè dataN se yon disk separe
- /data2/cassandra/data
- /data3/cassandra/data
- /data4/cassandra/data
- /data5/cassandra/data
- /data6/cassandra/data
- /data7/cassandra/data
- /data8/cassandra/data
commitlog_directory: /data9/cassandra/commitlog
cdc_enabled: fo
disk_failure_policy: sispann
commit_failure_policy: sispann
prepared_statements_cache_size_mb:
thrift_prepared_statements_cache_size_mb:
key_cache_size_in_mb:
key_cache_save_period: 14400
row_cache_size_in_mb: 0
row_cache_save_period: 0
counter_cache_size_in_mb:
counter_cache_save_period: 7200
saved_caches_directory: /data10/cassandra/saved_caches
commitlog_sync: peryodik
commitlog_sync_period_in_ms: 10000
commitlog_segment_size_in_mb: 32
seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
paramèt:
- grenn: "*,*"
concurrent_reads: 256 # eseye 64 - pa remake okenn diferans
concurrent_writes: 256 # eseye 64 - pa remake okenn diferans
concurrent_counter_writes: 256 # eseye 64 - pa remake okenn diferans
concurrent_materialized_view_writes: 32
memtable_heap_space_in_mb: 2048 # eseye 16 GB - li te pi dousman
memtable_allocation_type: tanpon_heap
index_summary_capacity_in_mb:
index_summary_resize_interval_in_minutes: 60
trickle_fsync: fo
trickle_fsync_interval_in_kb: 10240
pò_depo: 7000
ssl_storage_port: 7001
listen_address: *
adrès_difizyon: *
listen_on_broadcast_address: vre
internode_authenticator: org.apache.cassandra.auth.AllowAllInternodeAuthenticator
start_native_transport: vre
pò_natif_transpò: 9042
start_rpc: vre
rpc_address: *
rpc_port: 9160
rpc_keepalive: vre
rpc_server_type: senkronize
thrift_framed_transport_size_in_mb: 15
incremental_backups: fo
snapshot_before_compaction: fo
auto_snapshot: vre
column_index_size_in_kb: 64
column_index_cache_size_in_kb: 2
konpaktè_konkouran: 4
compaction_throughput_mb_per_sec: 1600
sstable_preemptive_open_interval_in_mb: 50
read_request_timeout_in_ms: 100000
range_request_timeout_in_ms: 200000
write_request_timeout_in_ms: 40000
counter_write_request_timeout_in_ms: 100000
cas_contention_timeout_in_ms: 20000
truncate_request_timeout_in_ms: 60000
request_timeout_in_ms: 200000
slow_query_log_timeout_in_ms: 500
cross_node_timeout: fo
endpoint_snitch: GossipingPropertyFileSnitch
dynamic_snitch_update_interval_in_ms: 100
dynamic_snitch_reset_interval_in_ms: 600000
dynamic_snitch_badness_threshold: 0.1
request_scheduler: org.apache.cassandra.scheduler.NoScheduler
server_encryption_options:
internode_encryption: okenn
client_encryption_options:
pèmèt: fo
internode_compression: dc
inter_dc_tcp_nodelay: fo
tracetype_query_ttl: 86400
tracetype_repair_ttl: 604800
enable_user_defined_functions: fo
enable_scripted_user_defined_functions: fo
windows_timer_interval: 1
transparent_data_encryption_options:
pèmèt: fo
tombstone_warn_threshold: 1000
tombstone_failure_threshold: 100000
lot_size_warn_threshold_in_kb: 200
batch_size_fail_threshold_in_kb: 250
unlogged_batch_across_partitions_warn_threshold: 10
compaction_large_partition_warning_threshold_mb: 100
gc_warn_threshold_in_ms: 1000
back_pressure_enabled: fo
enable_materialized_views: vre
enable_sasi_indexes: vre

Anviwònman GC:

### Anviwònman CMS-XX:+UseParNewGC
-XX:+Sèvi akConcMarkSweepGC
-XX:+CMSParallelRemarkEnabled
-XX:SurvivorRatio=8
-XX:MaxTenuringThreshold=1
-XX:CMSInitiatingOccupancyFraction=75
-XX:+Itilize CMSInitiatingOccupancyOnly
-XX:CMSWaitDuration=10000
-XX:+CMSParallelInitialMarkEnabled
-XX:+CMSEdenChunksRecordAlways
-XX:+CMSClassUnloadingEnabled

Memwa jvm.options yo te atribye ba 16Gb (nou te eseye tou 32 Gb, pa gen okenn diferans remake).

Tablo yo te kreye ak kòmandman an:

CREATE TABLE ks.t1 (id bigint PRIMARY KEY, title text) WITH compression = {'sstable_compression': 'LZ4Compressor', 'chunk_length_kb': 64};

Vèsyon HB: 1.2.0-cdh5.14.2 (nan klas org.apache.hadoop.hbase.regionserver.HRegion nou eskli MetricsRegion ki te mennen nan GC lè kantite rejyon yo te plis pase 1000 sou RegionServer)

Paramèt HBase ki pa defozookeeper.session.timeout: 120000
hbase.rpc.timeout: 2 minit (yo)
hbase.client.scanner.timeout.period: 2 minit (yo)
hbase.master.handler.count: 10
hbase.regionserver.lease.period, hbase.client.scanner.timeout.period: 2 minit (yo)
hbase.regionserver.handler.count: 160
hbase.regionserver.metahandler.count: 30
hbase.regionserver.logroll.period: 4 èdtan (yo)
hbase.regionserver.maxlogs: 200
hbase.hregion.memstore.flush.size: 1 GiB
hbase.hregion.memstore.block.multiplier: 6
hbase.hstore.compactionThreshold: 5
hbase.hstore.blockingStoreFiles: 200
hbase.hregion.majorcompaction: 1 jou (yo)
HBase Service Advanced Configuration Snippet (Valv Sekirite) pou hbase-site.xml:
hbase.regionserver.wal.codecorg.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec
hbase.master.namespace.init.timeout3600000
hbase.regionserver.optionalcacheflushinterval18000000
hbase.regionserver.thread.compaction.large12
hbase.regionserver.wal.enablecompressiontrue
hbase.hstore.compaction.max.size1073741824
hbase.server.compactchecker.interval.multiplier200
Opsyon Java Konfigirasyon pou HBase RegionServer:
-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:ReservedCodeCacheSize=256m
hbase.snapshot.master.timeoutMillis: 2 minit (yo)
hbase.snapshot.region.timeout: 2 minit (yo)
hbase.snapshot.master.timeout.millis: 2 minit (yo)
HBase REST Server Max Log Size: 100 MiB
HBase REST Server Maximum File Backups: 5
HBase Thrift Server Max Log Size: 100 MiB
HBase Thrift Server Maksimòm Sovgad dosye Log: 5
Mèt Max Log Size: 100 MiB
Mèt maksimòm sovgad dosye jounal: 5
RegionServer Max Log Size: 100 MiB
RegionServer maksimòm sovgad dosye jounal: 5
Fenèt Deteksyon Mèt Aktif HBase: 4 minit (yo)
dfs.client.hedged.read.threadpool.size: 40
dfs.client.hedged.read.threshold.millis: 10 milisgond (yo)
hbase.rest.threads.min: 8
hbase.rest.threads.max: 150
Maksimòm deskriptè dosye pwosesis: 180000
hbase.thrift.minWorkerThreads: 200
hbase.master.executor.openregion.threads: 30
hbase.master.executor.closeregion.threads: 30
hbase.master.executor.serverops.threads: 60
hbase.regionserver.thread.compaction.small: 6
hbase.ipc.server.read.threadpool.size: 20
Rejyon Mover Threads: 6
Kliyan Java Gwosè pil an octets: 1 GiB
HBase REST Sèvè Gwoup Default: 3 GiB
HBase Thrift Sèvè Gwoup Default: 3 GiB
Gwosè pil Java HBase Master an byte: 16 GiB
Gwosè pil Java HBase RegionServer an byte: 32 GiB

+ZooKeeper
maxClientCnxns: 601
maxSessionTimeout: 120000
Kreye tab:
hbase org.apache.hadoop.hbase.util.RegionSplitter ns:t1 UniformSplit -c 64 -f cf
alter 'ns:t1', {NAME => 'cf', DATA_BLOCK_ENCODING => 'FAST_DIFF', COMPRESSION => 'GZ'}

Gen yon pwen enpòtan isit la - deskripsyon DataStax la pa di konbyen rejyon yo te itilize pou kreye tab HB yo, byenke sa enpòtan anpil pou gwo volim. Se poutèt sa, pou tès yo, kantite = 64 te chwazi, ki pèmèt estoke jiska 640 GB, i.e. tab gwosè mwayen.

Nan moman tès la, HBase te gen 22 mil tab ak 67 mil rejyon (sa a ta letal pou vèsyon 1.2.0 si se pa patch la mansyone pi wo a).

Koulye a, pou kòd la. Depi li pa t klè ki konfigirasyon yo te pi avantaje pou yon baz done patikilye, tès yo te fèt nan divès konbinezon. Moun sa yo. nan kèk tès, 4 tab yo te chaje ansanm (tout 4 nœuds yo te itilize pou koneksyon). Nan lòt tès nou te travay ak 8 tab diferan. Nan kèk ka, gwosè pakèt la te 100, nan lòt 200 (paramèt pakèt - gade kòd anba a). Gwosè done pou valè se 10 bytes oswa 100 bytes (dataSize). An total, 5 milyon dosye yo te ekri ak li nan chak tab chak fwa. An menm tan an, 5 fil yo te ekri/li sou chak tab (nimewo fil - thNum), chak nan yo te itilize pwòp seri kle li yo (konte = 1 milyon dola):

if (opType.equals("insert")) {
    for (Long key = count * thNum; key < count * (thNum + 1); key += 0) {
        StringBuilder sb = new StringBuilder("BEGIN BATCH ");
        for (int i = 0; i < batch; i++) {
            String value = RandomStringUtils.random(dataSize, true, true);
            sb.append("INSERT INTO ")
                    .append(tableName)
                    .append("(id, title) ")
                    .append("VALUES (")
                    .append(key)
                    .append(", '")
                    .append(value)
                    .append("');");
            key++;
        }
        sb.append("APPLY BATCH;");
        final String query = sb.toString();
        session.execute(query);
    }
} else {
    for (Long key = count * thNum; key < count * (thNum + 1); key += 0) {
        StringBuilder sb = new StringBuilder("SELECT * FROM ").append(tableName).append(" WHERE id IN (");
        for (int i = 0; i < batch; i++) {
            sb = sb.append(key);
            if (i+1 < batch)
                sb.append(",");
            key++;
        }
        sb = sb.append(");");
        final String query = sb.toString();
        ResultSet rs = session.execute(query);
    }
}

An konsekans, fonksyonalite menm jan an te bay pou HB:

Configuration conf = getConf();
HTable table = new HTable(conf, keyspace + ":" + tableName);
table.setAutoFlush(false, false);
List<Get> lGet = new ArrayList<>();
List<Put> lPut = new ArrayList<>();
byte[] cf = Bytes.toBytes("cf");
byte[] qf = Bytes.toBytes("value");
if (opType.equals("insert")) {
    for (Long key = count * thNum; key < count * (thNum + 1); key += 0) {
        lPut.clear();
        for (int i = 0; i < batch; i++) {
            Put p = new Put(makeHbaseRowKey(key));
            String value = RandomStringUtils.random(dataSize, true, true);
            p.addColumn(cf, qf, value.getBytes());
            lPut.add(p);
            key++;
        }
        table.put(lPut);
        table.flushCommits();
    }
} else {
    for (Long key = count * thNum; key < count * (thNum + 1); key += 0) {
        lGet.clear();
        for (int i = 0; i < batch; i++) {
            Get g = new Get(makeHbaseRowKey(key));
            lGet.add(g);
            key++;
        }
        Result[] rs = table.get(lGet);
    }
}

Depi nan HB kliyan an dwe pran swen distribisyon an inifòm nan done, fonksyon kle nan sèl te sanble sa a:

public static byte[] makeHbaseRowKey(long key) {
    byte[] nonSaltedRowKey = Bytes.toBytes(key);
    CRC32 crc32 = new CRC32();
    crc32.update(nonSaltedRowKey);
    long crc32Value = crc32.getValue();
    byte[] salt = Arrays.copyOfRange(Bytes.toBytes(crc32Value), 5, 7);
    return ArrayUtils.addAll(salt, nonSaltedRowKey);
}

Koulye a, pati ki pi enteresan an - rezilta yo:

Batay nan de yakozuna, oswa Cassandra vs HBase. Eksperyans ekip Sberbank

Menm bagay la nan fòm graf:

Batay nan de yakozuna, oswa Cassandra vs HBase. Eksperyans ekip Sberbank

Avantaj HB a tèlman etone ke gen yon sispèk ke gen kèk kalite bouchon nan konfigirasyon CS la. Sepandan, Googling ak rechèch pou paramèt ki pi evidan (tankou concurrent_writes oswa memtable_heap_space_in_mb) pa t 'akselere bagay sa yo. An menm tan an, mòso bwa yo pwòp epi yo pa sèmante nan anyen.

Done yo te distribye respire atravè nœuds yo, estatistik ki soti nan tout nœuds yo te apeprè menm bagay la.

Sa a se sa estatistik tab yo sanble nan youn nan nœuds yoEspas kle: ks
Li konte: 9383707
Li Latansi: 0.04287025042448576 ms
Konte ekri: 15462012
Latans ekri: 0.1350068438699957 ms
Flushes annatant: 0
Tablo: t1
SSTable konte: 16
Espas itilize (viv): 148.59 MiB
Espas itilize (total): 148.59 MiB
Espas ki itilize pa snapshots (total): 0 byte
Off memwa pil yo itilize (total): 5.17 MiB
Rapò konpresyon SSTable: 0.5720989576459437
Kantite patisyon (estimasyon): 3970323
Konte selil memtab: 0
Gwosè done memtab: 0 octets
Memtable nan pil memwa itilize: 0 byte
Kantite switch memtab: 5
Kantite lekti lokal yo: 2346045
Latans lekti lokal: NaN ms
Kantite ekri lokal yo: 3865503
Latans ekri lokal: NaN ms
Kouch annatant: 0
Pousantaj repare: 0.0
Bloom filtre fo pozitif: 25
Bloom filtre fo rapò: 0.00000
Espas filtre Bloom itilize: 4.57 MiB
Bloom filtre sou memwa pil yo itilize: 4.57 MiB
Rezime endèks sou memwa pil yo itilize: 590.02 KiB
Konpresyon metadata sou memwa pil yo itilize: 19.45 KiB
Minimòm byte konpakte patisyon: 36
Compacte patisyon maksimòm byte: 42
konpakte patisyon vle di byte: 42
Mwayèn selil vivan pou chak tranch (senk dènye minit): NaN
Maksimòm selil vivan pou chak tranch (senk dènye minit): 0
Mwayèn wòch pou chak tranch (senk dènye minit): NaN
Maksimòm wòch tonb pou chak tranch (0 dènye minit): XNUMX
Mitasyon tonbe: 0 bytes

Yon tantativ pou redwi gwosè pakèt la (menm voye li endividyèlman) pa te gen okenn efè, li te vin pi mal sèlman. Li posib ke an reyalite sa a se reyèlman pèfòmans maksimòm pou CS, depi rezilta yo jwenn pou CS yo sanble ak sa yo jwenn pou DataStax - apeprè dè santèn de milye de operasyon pou chak segonn. Anplis de sa, si nou gade nan itilizasyon resous, nou pral wè ke CS itilize pi plis CPU ak disk:

Batay nan de yakozuna, oswa Cassandra vs HBase. Eksperyans ekip Sberbank
Figi a montre itilizasyon pandan kouri nan tout tès yo nan yon ranje pou tou de baz done.

Konsènan avantaj lekti pwisan HB a. Isit la ou ka wè ke pou tou de baz done, itilizasyon disk pandan lekti trè ba (tès li yo se pati final la nan sik tès la pou chak baz done, pou egzanp pou CS sa a soti nan 15:20 a 15:40). Nan ka a nan HB, rezon ki fè yo klè - pi fò nan done yo pandye nan memwa, nan memstore a, ak kèk se kachèt nan blockcache. Kòm pou CS, li pa trè klè ki jan li fonksyone, men resiklaj ki gen kapasite tou pa vizib, men jis nan ka, yo te fè yon tantativ pou pèmèt kachèt row_cache_size_in_mb = 2048 epi mete kachèt = {'keys': 'ALL', 'rows_per_partition': '2000000'}, men sa te fè li menm yon ti kras pi mal.

Li se tou vo mansyone yon lòt fwa ankò yon pwen enpòtan sou kantite rejyon yo nan HB. Nan ka nou an, valè a te espesifye kòm 64. Si ou diminye li epi fè li egal a, pou egzanp, 4, Lè sa a, lè li, vitès la gout pa 2 fwa. Rezon ki fè la se ke memstore pral ranpli pi vit ak dosye yo pral koule pi souvan epi lè li lekti, plis dosye ap bezwen trete, ki se yon operasyon olye konplike pou HB. Nan kondisyon reyèl, sa a ka trete pa panse atravè yon estrateji presplitting ak konpaksyon an patikilye, nou itilize yon sèvis piblik pwòp tèt ou-ekri ki kolekte fatra ak konprese HFiles toujou ap nan background nan. Li se byen posib ke pou tès DataStax yo te asiyen sèlman 1 rejyon pou chak tab (ki pa kòrèk) e sa ta yon ti jan klarifye poukisa HB te tèlman enferyè nan tès lekti yo.

Konklizyon preliminè sa yo soti nan sa a. Sipoze ke pa gen okenn gwo erè te fè pandan tès la, Lè sa a, Cassandra sanble ak yon kolos ak pye ajil. Plis jisteman, pandan ke li balanse sou yon sèl janm, tankou nan foto a nan kòmansman atik la, li montre rezilta relativman bon, men nan yon batay nan menm kondisyon yo li pèdi kareman. An menm tan an, pran an kont itilizasyon CPU ki ba sou pyès ki nan konpitè nou an, nou te aprann plante de RegionServer HB pou chak lame epi kidonk double pèfòmans lan. Moun sa yo. Lè w pran an kont itilizasyon resous yo, sitiyasyon an pou CS se menm plis deplorab.

Natirèlman, tès sa yo se byen sentetik ak kantite done ki te itilize isit la se relativman modès. Li posib ke si nou chanje nan teraoctet, sitiyasyon an ta diferan, men pandan ke pou HB nou ka chaje terabytes, pou CS sa a te tounen pwoblèm. Li souvan jete yon OperationTimedOutException menm ak komèsan sa yo, byenke paramèt yo pou tann pou yon repons yo te deja ogmante plizyè fwa konpare ak sa yo defo.

Mwen espere ke atravè efò konjwen nou pral jwenn blokaj yo nan CS epi si nou ka akselere li, Lè sa a, nan fen pòs la mwen pral definitivman ajoute enfòmasyon sou rezilta final yo.

UPD: Gras a konsèy kanmarad yo, mwen te rive akselere lekti a. Te:
159 ops (644 tab, 4 kouran, pakèt 5).
Te ajoute:
.withLoadBalancingPolicy(nouvo TokenAwarePolicy(DCAwareRoundRobinPolicy.builder().build()))
Apre sa, mwen te jwe otou ak kantite fil. Rezilta a se sa ki annapre yo:
4 tab, 100 fil, pakèt = 1 (moso pa moso): 301 ops
4 tab, 100 fil, pakèt = 10: 447 ops
4 tab, 100 fil, pakèt = 100: 625 ops

Apre sa, mwen pral aplike lòt konsèy akor, kouri yon sik tès konplè epi ajoute rezilta yo nan fen pòs la.

Sous: www.habr.com

Add nouvo kòmantè