棋牌游戏服务器-数据同步和持久化
涉及的角色:
1 业务服务器
2 数据服务器
3 redis
4 canal
5 mysql
其中业务服务器是多组的,负责游戏的业务逻辑,是数据的生产者和消费者。
产生和更新的数据会将请求发送给数据服务器,由数据服务器顺序写入。
数据的读取,分两种情况:
1 优先通过RedisClient从Redis中读取
2 如果reidis中不存在,则发送读取请求给数据服务器
数据服务器主要由四部分组成。
1 数据的持久化,所有的业务服务器的数据的写操作请求通过这部分顺序写入到mysql数据库。
2 CanalClient,接收到cannal server的更新,将数据更新到Redis中
3 RedisClient,被CanalClient调用,更新Redis缓存
4 如果数据在Redis缓存中没有,则直接从数据库中读取,并更新到Redis缓存中(更新的时候,再尝试从Redis中寻找,如果存在,则以存在的数据为准)
基础类图比较简单:
数据更新的时序图:
读取数据(Redis缓存中存在)
读取数据(Redis缓存中不存在)
参考:
1 http://blog.****.net/youxijishu/article/details/56309530
2 https://github.com/alibaba/canal