我今天又重新测试了一下读写分离的问题
proxy api查询到slots信息
"slots": [
{
"id": 0,
"backend_addr": "10.100.90.21:6370",
"backend_addr_group_id": 1,
"forward_method": 1,
"replica_groups": [
[
"10.100.90.20:6370"
],
[
"10.100.90.21:6370"
]
]
}
这表示我确实开启了读写分离。
压测工具
redis-benchmark
测试1 get测试
压测语句
bin/redis-benchmark -p 19000 -n 10000000000 -r 10000000000 -c 100 -t get -k 1
现象
上次测试是只向master进行路由,而此次get测试只向slave进行路由。
我将slow log设成0
CONFIG SET slowlog-log-slower-than 0
然后抓sql,master上只有ping和哨兵的订阅信息。
slave上几乎全是get的语句。
测试2 set测试
压测语句
bin/redis-benchmark -p 19000 -n 10000000000 -r 10000000000 -c 100 -t set -k 1
现象
只向master进行路由。 这个表现是正常的没问题的。
疑问
我两天的此时,一天全部的的请求都路由到了master(get和set)。今天的测试则全部的get路由到slave,全部的set都路由到master。
我想确认一个问题
是否原本实现的负载均衡就是我第二次测试的现象,即所有读发往从,所有写发往主。还是所有写发往主,然后所有的读在主从之间轮询。我想确认一下具体是哪一种实现?