Skip to content

CN Store Server United Store

himulawang edited this page Oct 21, 2014 · 1 revision

United Store

联合Store是一套完整的服务端数据缓存方案。

该方案以MariaDB为数据基准,Redis为缓存。为提高数据读取效率,减小MariaDB的读取压力而存在。

原理

当获取数据时,先从Redis中读取,如果Redis不存在,再去MariaDB中获取。以此减少MariaDB的读压力。

写入数据时,先写入MariaDB,再写入Redis。这样Redis中数据丢失,MariaDB中的数据永远正确,避免数据不一致问题。

配置

使用该解决方案,只需在orm.dart中配置storeOrder即可:

storeOrder的顺序为读取顺序,当写入时,是从后往前执行。

Map orm = {
    'User': {
        'Model': {
            'pk': [0],
            'column': [
                'id',
                'name',
                'email',
                'country',
                'city',
            ],
            'toAddFilter': [0],
            'toSetFilter': [0],
            'toFullFilter': [],
            'toAbbFilter': [],
            'toListFilter': [],
        },
        'ModelStore': {
            'storeOrder': [
                {
                    'type': 'redis',
                    'readWriteSeparate': false,
                    'sharding': true,
                    'shardMethod': 'CRC32', // CRC32 & Consistent Hashing
                    'master': 'GameCache',
                    'slave': 'GameCacheSlave',
                    'expire': 86400,
                    'mode': 'Atom', // TODO 'Atom' mode use hash type store model, 'Block' mode compress model to string type
                    'abb': 'u',
                },
                {
                    'type': 'mariaDB',
                    'readWriteSeparate': false,
                    'sharding': true,
                    'shardMethod': 'CRC32',
                    'master': 'GameDB',
                    'slave': 'GameDBSlave',
                    'table': 'User',
                },
            ],
        },
    },
};