在应用的用户访问量比较低的时候,一个数据库的读写能力是完全能够胜任的。但是在用户访问量增大的时候,数据库I/O就会成为瓶颈,解决数据库I/O瓶颈可以有两种方式:
半同步复制:主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到relay log中才返回给客户端。 并发复制:指的是从库开启多个线程,并行读取relay log中不同库的日志,然后并行重放不同库的日志。
由于主从同步是异步的,存在不一致的情况,因此会产生一些问题。
用户注册成功后,需要进行登录操作,注册是写 操作,登录是读操作,如果此时从库还没有用户的注册信息,那么用户登录会失败。 解决方法: 这个问题可以在业务层进行处理,注册成功之后,马上登录的,访问主库; 这个问题也可以在访问从库失败之后,访问主库进行验证;
用户修改密码成功后,需要进行登录操作,修改是写 操作,登录是读操作,如果此时从库还没有更新用户的信息,那么用户登录会失败。 解决方法:
此时从库的数据没有更新,如果用户登录会出现失败。可以在业务逻辑层进行处理,当用户密码修改后,在缓存中新增一条Id记录,记录用户的最新信息,并设置过期时间,每次请求的时候,先从缓存读取信息,如果没有在缓存读到,则到从库读取。