kubewharf / kubebrain

A High Performance Metadata System for Kubernetes
Apache License 2.0
764 stars 79 forks source link

Provide more detail on reproducing the benchmark result #12

Closed tomasliu-agora closed 1 year ago

tomasliu-agora commented 2 years ago

What would you like to be added?

What etcd version the benchmark is using? 3.5.x or 3.4.x go-ycsb doesn't support etcd protocol on the master branch, so is the benchmark using a non-release version? Is there any Tikv tuning or it is all default setting? What is the version of Tikv in the benchmark report?

Why is this needed?

We need to reproduce the benchmark result to determine whether or not to replace etcd to kubebrain.

divanodestiny commented 2 years ago
  1. We use etcd 3.4.x and defragment it before test to make it without too many fragments inpacting on Writing.
  2. We implement the protocal with etcd client and kubebrain client to test, we may file an PR to do that soon. We use etcd Txn API to do revision comparing just like it's used by APIServer,but not the common write. Writing in our benchmark is Insert,because Update should get the previous revision first through Get
  3. TiKV is run with default setting.
  4. TiKV 5.1
tomasliu-agora commented 2 years ago

2. get

Thanks, I will try to reproduce it by myself.

Is there any plan on fully implement the ETCD Protocol?

There are Txn, Watch and Range, but the rest is not implemented.

If I am planning to do so, is there any suggestion?

charleszheng44 commented 2 years ago
  1. get

Thanks, I will try to reproduce it by myself.

Is there any plan on fully implement the ETCD Protocol?

There are Txn, Watch and Range, but the rest is not implemented.

If I am planning to do so, is there any suggestion?

@tomasliu-agora thanks for filing the issue.

Yes, we would love to fully implement the ETCD protocol, but several features may need to be added to the TiKV, like TTL. For more details, please check the issue https://github.com/tikv/tikv/issues/12920 submitted by @divanodestiny

divanodestiny commented 2 years ago

If I am planning to do so, is there any suggestion?

If you want to support common put or common delete, just implement it by WriteBatch without CAS RevisionKey but Put RevisionKey, and expose the method to out side.

KubeBrain support TTL just for events now,and do not support fully support for lease. If you want to implement that, you should make a proposal to discuss about that.

There are Txn, Watch and Range, but the rest is not implemented.

We implement KubeBrain for matching the requirement of APIServer. So we don't implement all etcd3 API now.

@tomasliu-agora Why do you want to do that? Do you want to use it in any other case? Can you explain your requirement in detail?

xuchen-xiaoying commented 1 year ago

@tomasliu-agora is there any further concern? if none, I will close this issue.