问题1:为什么我只配置了从节点的地址,也可以插入数据啊,不是说只有主节点才行写入数据的吗?
链接地址只配置一个从节点,但是还是可以写入数据,原因是驱动里面做了一些操作,会去自动找到副本集的主节点,进行数据插入。
问题2:那我怎么验证读取的操作是优先读取从节点的呢?
将节点停到只剩下2个,这个时候就不会去选举主节点,2个都是从节点,然后设置client.setReadPreference(ReadPreference.primary());
所有操作都操作主节点,这个时候再去写入数据,是写入不进去的,由此证明写入操作只有主节点才可以。读取数据也是不行的。
然后又设置client.setReadPreference(ReadPreference.secondary());从节点读取数据,再去读取是可以的。由此证明设置操作优先级是有效的 。
或者配置5个节点,1个主节点,2个从节点,2个仲裁节点,将2个从节点停掉,那么此时设置client.setReadPreference(ReadPreference.secondary());从节点读取数据
数据是读取不到的,因为从节点都已经停掉了,仲裁节点是不存储数据的,由此证明设置操作优先级是有效的 。