baidu / tera

An Internet-Scale Database.
BSD 3-Clause "New" or "Revised" License
1.88k stars 437 forks source link

tera client客户端连接问题 #1340

Open songlong opened 4 years ago

songlong commented 4 years ago

想问一下 1、若部署1000个tablenode,client sdk是直连tableserver的么,这个是长连接么? 在这种情况下,如果有上千个client该怎么办呢?

或者说存在大量连接时,得使用tera proxy?

2、client sdk如何发现故障节点,并踢出该节点,如果是通过zk发现,会不会导致时延上的丢数据?

songlong commented 4 years ago

或者说存在大量连接时,得使用tera proxy?

Ye-Tian-Zero commented 4 years ago
  1. 是直连,是长链接。
  2. m 个 client,n 个 tabletserver,极端情况下,每个 tabletserver 维护 m 条链接,每个 client 维护 n 条链接,整体 overhead 不高,m,n 数量级通常不超过 k 级别
  3. 踢节点不是 sdk 做的,是 master 做的,zk 掉节点是其中一种场景,master 和 ts 之间本身有心跳
  4. 踢节点影响的是 Availability,会读失败(client 本身有重试机制),但不会丢数据
songlong commented 4 years ago

大概用hadoop3.1.2版本测了耳 3个zookeeper,datanode节点55个,namenode2个,jdk堆栈都分配了3G,最大不超过5G,gc1模式 1、读写设为60ms超时,batch_size为1,最大qps仅有3000-7000左右,写qps同样也不高,不会超过3000 2、当读写同时存在的时候,读写性能下降异常厉害 3、开启persist_cache时,会有bug,load升得太高,大概是因为读写失败。 4、tabletserver节点升高,并不能提高读写qps 我的结论感觉还是hdfs这个存储,严重影响了读写性能