采用docker-cmpose 部署
version: '3.1'
services:
pd0:
image: pingcap/pd:latest
ports:
- "2379:2379"
- "2380:2380"
volumes:
- ~/data:/data
command:
- --name=pd0
- --client-urls=http://0.0.0.0:2379
- --peer-urls=http://0.0.0.0:2380
# pd0 需要写到hosts
- --advertise-client-urls=http://pd0:2379
- --advertise-peer-urls=http://pd0:2380
- --data-dir=/data/pd0
- --log-file=/data/logs/pd0.log
restart: on-failure
tikv0:
image: pingcap/tikv:latest
ports:
- "20160:20160"
volumes:
- ~/data:/data
command:
- --addr=0.0.0.0:20160
- --advertise-addr=127.0.0.1:20160
- --data-dir=/data/tikv0
- --pd=pd0:2379
- --log-file=/data/logs/tikv0.log
depends_on:
- "pd0"
restart: on-failure
以下是代码
// github.com/pingcap/tidb/store/tikv.NewRawKVClient
var cli, _ = lib.NewRawKVClient()
func KeyValueQuery(key []byte) {
// 第一次能查询到,第二次及以后查询不到值
cli.Get(key)
// 第一次方法调用即使get多次也可以获取
cli.Get(key)
// 即使我每次请求都新建一个client也只有第一次能够获取到value
var cli, _ = lib.NewRawKVClient()
cli.Get(key) // 第一次获取到value 后续请求不可以
}
连接日志:
[2020/05/18 20:46:24.579 +08:00] [INFO] [client.go:141] ["[pd] create pd client with endpoints"] [pd-address="[127.0.0.1:2379]"]
[2020/05/18 20:46:24.581 +08:00] [INFO] [base_client.go:226] ["[pd] update member urls"] [old-urls="[http://127.0.0.1:2379]"] [new-urls="[http://pd0:2379]"]
[2020/05/18 20:46:24.581 +08:00] [INFO] [base_client.go:242] ["[pd] switch leader"] [new-leader=http://pd0:2379] [old-leader=]
[2020/05/18 20:46:24.581 +08:00] [INFO] [base_client.go:92] ["[pd] init cluster id"] [cluster-id=6828030869354985468]
耗时明显下降
//有结果
[INFO] 2020/05/18 21:04 200 3.293903ms 127.0.0.1 POST /key-value/single-prefix/batch
// 无结果,同一个key
[INFO] 2020/05/18 21:04 200 1.157425ms 127.0.0.1 POST /key-value/single-prefix/batch
// 无结果,同一个key
[INFO] 2020/05/18 21:04 200 768.36µs 127.0.0.1 POST /key-value/single-prefix/batch
重启我的(应用)服务后又可以查询一次
请问应该怎么使用这个api?