一种分布式系统下的全量缓存方案及系统技术方案

技术编号:29312016 阅读:19 留言:0更新日期:2021-07-17 02:22
本发明专利技术提供了一种分布式系统下的全量缓存方案,所述方案包括以下步骤:步骤S1、用户登录前台站点,系统根据用户的登录名读取redis数据,判断是否存在该用户数据;步骤S2、根据用户的登录名经hash算法得到hash值;提供两个redis集群来提供读取服务,通过得到的hash值来判断用户名存储在哪个redis集群上;步骤S3、通过数据同步将用户数据写入本机的Binlog文件中,与主数据库建立连接,实现主从同步;步骤S4、主数据库创建用户表user_tb用于存储用户信息,管理员通过管理后台修改用户信息,更新user_tb表数据;本发明专利技术能够对业务操作进行水平切分。平切分。平切分。

A full cache scheme and system in distributed system

【技术实现步骤摘要】
一种分布式系统下的全量缓存方案及系统


[0001]本专利技术涉及,特别是一种分布式系统下的全量缓存方案及系统。

技术介绍

[0002]系统引入缓存,为数据库抗压是互联网高性能系统常见的方案。可是引入缓存后虽然带来了性能的提升,但是也一并带来了其他新的系统问题,例如数据库数据更新后缓存如何及时更新,如何保证缓存中间件的高可用,系统改造侵入性过大,得在业务代码上同时操作缓存和数据库,加大了系统复杂度和研发成本。

技术实现思路

[0003]为克服上述问题,本专利技术的目的是提供一种能够对业务操作进行水平切分的分布式系统下的全量缓存方案。
[0004]本专利技术采用以下方案实现:一种分布式系统下的全量缓存方案,所述方案包括以下步骤:步骤S1、用户登录前台站点,系统根据用户的登录名读取redis数据,判断是否存在该用户数据;步骤S2、根据用户的登录名经hash算法得到hash值;提供两个redis集群来提供读取服务,通过得到的hash值来判断用户名存储在哪个redis集群上;步骤S3、通过数据同步将用户数据写入本机的Binlog文件中,与主数据库建立连接,实现主从同步;步骤S4、主数据库创建用户表user_tb用于存储用户信息,管理员通过管理后台修改用户信息,更新user_tb表数据。
[0005]进一步的,所述步骤S1进一步具体为:当用户登录前台站点,系统根据登录名计算得到用户信息的redis存储集群,读取redis数据,判断是否存在用户数据,是,则直接返回;否,则额外提供一个单次降级方案,根据登录名从数据库的user_tb里读取信息,如果存在则存入redis中;如果不存在,则存入null值至redis中,返回空数据,下次该用户登录也是从redis里得到null值,不会再读取数据库。
[0006]进一步的,所述步骤S2进一步具体为:提供两个redis集群来提供读取服务,分别为redisA集群和redisB集群,根据用户的登录名经hash算法得到hash值,将得到的hash值除2取模,得到的值为1,则判断用户信息存储在redisB集群上,若得到的hash值为0,则判断用户信息存储在redisA集群上。
[0007]进一步的,所述步骤S3进一步具体为:Binlog是MySQL数据库的主从数据同步方案,根据Binlog的特性,启动一个作业任务,订阅Binlog,解析出变更的数据,遍历日志文件中带有更新标识update的数据,得到修改后的数据,根据用户名里的redis集群节点获取算法,存入数据至redis相应的集群中。
[0008]进一步的,所述步骤S4进一步具体为:通过应用MySQL数据库中实现数据同步的
Binlog机制来实现数据同步,数据库创建用户表user_tb用于存储用户信息,管理员通过管理后台修改用户信息,直接更新user_tb表数据。
[0009]本专利技术还提供了一种分布式系统下的全量缓存系统,包括数据读取模块、缓存模块、数据同步模块和数据库模块;所述数据读取模块,即用户登录前台站点,系统根据用户的登录名读取redis数据,判断是否存在该用户数据;所述缓存模块,即根据用户的登录名经hash算法得到hash值;提供两个redis集群来提供读取服务,通过得到的hash值来判断用户名存储在哪个redis集群上;所述数据同步模块,即通过数据同步将用户数据写入本机的Binlog文件中,与主数据库建立连接,实现主从同步;所述数据库模块,即主数据库创建用户表user_tb用于存储用户信息,管理员通过管理后台修改用户信息,更新user_tb表数据。
[0010]进一步的,所述数据读取模块进一步具体为:当用户登录前台站点,系统根据登录名计算得到用户信息的redis存储集群,读取redis数据,判断是否存在用户数据,是,则直接返回;否,则额外提供一个单次降级方案,根据登录名从数据库的user_tb里读取信息,如果存在则存入redis中;如果不存在,则存入null值至redis中,返回空数据,下次该用户登录也是从redis里得到null值,不会再读取数据库。
[0011]进一步的,所述缓存模块进一步具体为:提供两个redis集群来提供读取服务,分别为redisA集群和redisB集群,根据用户的登录名经hash算法得到hash值,将得到的hash值除2取模,得到的值为1,则判断用户信息存储在redisB集群上,若得到的hash值为0,则判断用户信息存储在redisA集群上。
[0012]进一步的,所述数据同步模块进一步具体为:Binlog是MySQL数据库的主从数据同步方案,根据Binlog的特性,启动一个作业任务,订阅Binlog,解析出变更的数据,遍历日志文件中带有更新标识update的数据,得到修改后的数据,根据用户名里的redis集群节点获取算法,存入数据至redis相应的集群中。
[0013]进一步的,所述数据库模块进一步具体为:通过应用MySQL数据库中实现数据同步的Binlog机制来实现数据同步,数据库创建用户表user_tb用于存储用户信息,管理员通过管理后台修改用户信息,直接更新user_tb表数据。
[0014]本专利技术的有益效果在于:本专利技术提供了一种能够解决更新实时性问题的全量缓存的完整架构方案,此方案提供高性能和高可用的能力,对系统的入侵性小,可以满足互联网的业务场景里对于读服务的性能和容灾指标的要求。
附图说明
[0015]图1是本专利技术的方法流程示意图。
[0016]图2是本专利技术的系统原理框图。
具体实施方式
[0017]下面结合附图对本专利技术做进一步说明。
[0018]请参阅图1所示,本专利技术的一种分布式系统下的全量缓存方案,所述方案包括以下步骤:步骤S1、用户登录前台站点,系统根据用户的登录名读取redis数据,判断是否存在该用户数据;
步骤S2、根据用户的登录名经hash算法得到hash值;提供两个redis集群来提供读取服务,通过得到的hash值来判断用户名存储在哪个redis集群上;步骤S3、通过数据同步将用户数据写入本机的Binlog文件中,与主数据库建立连接,实现主从同步;步骤S4、主数据库创建用户表user_tb用于存储用户信息,管理员通过管理后台修改用户信息,更新user_tb表数据。
[0019]下面通过一具体实施例对本专利技术作进一步说明:本专利举例互联网网站上,大量用户访问网站,如何提供高效的用户信息读服务来说明此专利。
[0020]模块1:缓存模块为满足大流量高并发的场景,提供2个redis集群来提供更高性能的读服务。那么一个用户访问站点,读取用户信息时,如何判断用户信息是存储在哪个redis集群上呢?根据用户登录场景,采用用户名来作为判断的依据。假设登录用户名是'yewei',根据hash算法得到hash值1895090497,代码如下:法得到hash值1895090497,代码如下:得到的值进行除2取模,得到值是1,那'yewei'的用户信息存储在redisB本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式系统下的全量缓存方案,其特征在于,所述方案包括以下步骤:步骤S1、用户登录前台站点,系统根据用户的登录名读取redis数据,判断是否存在该用户数据;步骤S2、根据用户的登录名经hash算法得到hash值;提供两个redis集群来提供读取服务,通过得到的hash值来判断用户名存储在哪个redis集群上;步骤S3、通过数据同步将用户数据写入本机的Binlog文件中,与主数据库建立连接,实现主从同步;步骤S4、主数据库创建用户表user_tb用于存储用户信息,管理员通过管理后台修改用户信息,更新user_tb表数据。2.根据权利要求1所述的一种分布式系统下的全量缓存方案,其特征在于:所述步骤S1进一步具体为:当用户登录前台站点,系统根据登录名计算得到用户信息的redis存储集群,读取redis数据,判断是否存在用户数据,是,则直接返回;否,则额外提供一个单次降级方案,根据登录名从数据库的user_tb里读取信息,如果存在则存入redis中;如果不存在,则存入null值至redis中,返回空数据,下次该用户登录也是从redis里得到null值,不会再读取数据库。3.根据权利要求1所述的一种分布式系统下的全量缓存方案,其特征在于:所述步骤S2进一步具体为:提供两个redis集群来提供读取服务,分别为redisA集群和redisB集群,根据用户的登录名经hash算法得到hash值,将得到的hash值除2取模,得到的值为1,则判断用户信息存储在redisB集群上,若得到的hash值为0,则判断用户信息存储在redisA集群上。4.根据权利要求1所述的一种分布式系统下的全量缓存方案,其特征在于:所述步骤S3进一步具体为:Binlog是MySQL数据库的主从数据同步方案,根据Binlog的特性,启动一个作业任务,订阅Binlog,解析出变更的数据,遍历日志文件中带有更新标识update的数据,得到修改后的数据,根据用户名里的redis集群节点获取算法,存入数据至redis相应的集群中。5.根据权利要求1所述的一种分布式系统下的全量缓存方案,其特征在于:所述步骤S4进一步具体为:通过应用MySQL数据库中实现数据同步的Binlog机制来实现数据同步,数据库创建用户表user_tb用于存储用户信息,管理员通过管理后台修改用户信息,直接更新user_tb表数据。6.一种分布式系统下的全量缓存系统,其特征在于:包括...

【专利技术属性】
技术研发人员:刘德建叶伟陈宏展
申请(专利权)人:福建天晴在线互动科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1