CN113127521A - 一种分布式系统下的全量缓存方案及系统 - Google Patents
一种分布式系统下的全量缓存方案及系统 Download PDFInfo
- Publication number
- CN113127521A CN113127521A CN202110544605.7A CN202110544605A CN113127521A CN 113127521 A CN113127521 A CN 113127521A CN 202110544605 A CN202110544605 A CN 202110544605A CN 113127521 A CN113127521 A CN 113127521A
- Authority
- CN
- China
- Prior art keywords
- user
- data
- redis
- database
- cluster
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供了一种分布式系统下的全量缓存方案,所述方案包括以下步骤:步骤S1、用户登录前台站点,系统根据用户的登录名读取redis数据,判断是否存在该用户数据;步骤S2、根据用户的登录名经hash算法得到hash值;提供两个redis集群来提供读取服务,通过得到的hash值来判断用户名存储在哪个redis集群上;步骤S3、通过数据同步将用户数据写入本机的Binlog文件中,与主数据库建立连接,实现主从同步;步骤S4、主数据库创建用户表user_tb用于存储用户信息,管理员通过管理后台修改用户信息,更新user_tb表数据;本发明能够对业务操作进行水平切分。
Description
技术领域
本发明涉及,特别是一种分布式系统下的全量缓存方案及系统。
背景技术
系统引入缓存,为数据库抗压是互联网高性能系统常见的方案。可是引入缓存后虽然带来了性能的提升,但是也一并带来了其他新的系统问题,例如数据库数据更新后缓存如何及时更新,如何保证缓存中间件的高可用,系统改造侵入性过大,得在业务代码上同时操作缓存和数据库,加大了系统复杂度和研发成本。
发明内容
为克服上述问题,本发明的目的是提供一种能够对业务操作进行水平切分的分布式系统下的全量缓存方案。
本发明采用以下方案实现:一种分布式系统下的全量缓存方案,所述方案包括以下步骤:
步骤S1、用户登录前台站点,系统根据用户的登录名读取redis数据,判断是否存在该用户数据;
步骤S2、根据用户的登录名经hash算法得到hash值;提供两个redis集群来提供读取服务,通过得到的hash值来判断用户名存储在哪个redis集群上;
步骤S3、通过数据同步将用户数据写入本机的Binlog文件中,与主数据库建立连接,实现主从同步;
步骤S4、主数据库创建用户表user_tb用于存储用户信息,管理员通过管理后台修改用户信息,更新user_tb表数据。
进一步的,所述步骤S1进一步具体为:当用户登录前台站点,系统根据登录名计算得到用户信息的redis存储集群,读取redis数据,判断是否存在用户数据,是,则直接返回;否,则额外提供一个单次降级方案,根据登录名从数据库的user_tb里读取信息,如果存在则存入redis中;如果不存在,则存入null值至redis中,返回空数据,下次该用户登录也是从redis里得到null值,不会再读取数据库。
进一步的,所述步骤S2进一步具体为:提供两个redis集群来提供读取服务,分别为redisA集群和redisB集群,根据用户的登录名经hash算法得到hash值,将得到的hash值除2取模,得到的值为1,则判断用户信息存储在redisB集群上,若得到的hash值为0,则判断用户信息存储在redisA集群上。
进一步的,所述步骤S3进一步具体为:Binlog是MySQL数据库的主从数据同步方案,根据Binlog的特性,启动一个作业任务,订阅Binlog,解析出变更的数据,遍历日志文件中带有更新标识update的数据,得到修改后的数据,根据用户名里的redis集群节点获取算法,存入数据至redis相应的集群中。
进一步的,所述步骤S4进一步具体为:通过应用MySQL数据库中实现数据同步的Binlog机制来实现数据同步,数据库创建用户表user_tb用于存储用户信息,管理员通过管理后台修改用户信息,直接更新user_tb表数据。
本发明还提供了一种分布式系统下的全量缓存系统,包括数据读取模块、缓存模块、数据同步模块和数据库模块;所述数据读取模块,即用户登录前台站点,系统根据用户的登录名读取redis数据,判断是否存在该用户数据;所述缓存模块,即根据用户的登录名经hash算法得到hash值;提供两个redis集群来提供读取服务,通过得到的hash值来判断用户名存储在哪个redis集群上;所述数据同步模块,即通过数据同步将用户数据写入本机的Binlog文件中,与主数据库建立连接,实现主从同步;所述数据库模块,即主数据库创建用户表user_tb用于存储用户信息,管理员通过管理后台修改用户信息,更新user_tb表数据。
进一步的,所述数据读取模块进一步具体为:当用户登录前台站点,系统根据登录名计算得到用户信息的redis存储集群,读取redis数据,判断是否存在用户数据,是,则直接返回;否,则额外提供一个单次降级方案,根据登录名从数据库的user_tb里读取信息,如果存在则存入redis中;如果不存在,则存入null值至redis中,返回空数据,下次该用户登录也是从redis里得到null值,不会再读取数据库。
进一步的,所述缓存模块进一步具体为:提供两个redis集群来提供读取服务,分别为redisA集群和redisB集群,根据用户的登录名经hash算法得到hash值,将得到的hash值除2取模,得到的值为1,则判断用户信息存储在redisB集群上,若得到的hash值为0,则判断用户信息存储在redisA集群上。
进一步的,所述数据同步模块进一步具体为:Binlog是MySQL数据库的主从数据同步方案,根据Binlog的特性,启动一个作业任务,订阅Binlog,解析出变更的数据,遍历日志文件中带有更新标识update的数据,得到修改后的数据,根据用户名里的redis集群节点获取算法,存入数据至redis相应的集群中。
进一步的,所述数据库模块进一步具体为:通过应用MySQL数据库中实现数据同步的Binlog机制来实现数据同步,数据库创建用户表user_tb用于存储用户信息,管理员通过管理后台修改用户信息,直接更新user_tb表数据。
本发明的有益效果在于:本发明提供了一种能够解决更新实时性问题的全量缓存的完整架构方案,此方案提供高性能和高可用的能力,对系统的入侵性小,可以满足互联网的业务场景里对于读服务的性能和容灾指标的要求。
附图说明
图1是本发明的方法流程示意图。
图2是本发明的系统原理框图。
具体实施方式
下面结合附图对本发明做进一步说明。
请参阅图1所示,本发明的一种分布式系统下的全量缓存方案,所述方案包括以下步骤:
步骤S1、用户登录前台站点,系统根据用户的登录名读取redis数据,判断是否存在该用户数据;
步骤S2、根据用户的登录名经hash算法得到hash值;提供两个redis集群来提供读取服务,通过得到的hash值来判断用户名存储在哪个redis集群上;
步骤S3、通过数据同步将用户数据写入本机的Binlog文件中,与主数据库建立连接,实现主从同步;
步骤S4、主数据库创建用户表user_tb用于存储用户信息,管理员通过管理后台修改用户信息,更新user_tb表数据。
下面通过一具体实施例对本发明作进一步说明:
本专利举例互联网网站上,大量用户访问网站,如何提供高效的用户信息读服务来说明此专利。
模块1:缓存模块
为满足大流量高并发的场景,提供2个redis集群来提供更高性能的读服务。那么一个用户访问站点,读取用户信息时,如何判断用户信息是存储在哪个redis集群上呢?根据用户登录场景,采用用户名来作为判断的依据。假设登录用户名是'yewei',根据hash算法得到hash值1895090497,代码如下:
得到的值进行除2取模,得到值是1,那'yewei'的用户信息存储在redisB集群上,如果登录的用户名是'dengluming',得到hash值1101960788,除2取模得到值是0,那'dengluming'的用户信息存储在redisA集群上。
模块2:数据库模块
数据库选用主流关系型数据库MySQL,更重要的是需要应用MySQL的数据同步的Binlog机制来实现数据同步,这个会在模块3讲解。数据库创建用户表user_tb用于存储用户信息,管理员通过管理后台修改用户信息,直接更新user_tb表数据。
模块3:数据同步模块
Binlog是MySQL数据库的主从数据同步方案。主数据库会将所有的变更按一定格式写入它本机的Binlog文件中。在主从同步时,从数据库会和主数据库建立连接,通过特定的协议串行地读取主数据库的Binlog文件,并在从库进行Binlog的回放,进而完成主从复制。根据Binlog的特性,启动一个作业任务,订阅Binlog,解析出变更的数据,遍历日志文件中带有更新标识update的数据,得到修改后的数据,根据用户名模块1里的redis集群节点获取算法,存入数据至redis相应的集群中。
模块4:数据读取模块
当用户登录前台站点,系统根据登录名计算得到用户信息的redis存储集群,读取redis数据,如果存在则直接返回;如果不存在此用户数据,我们额外提供一个单次降级方案,根据登录名从数据库的user_tb里读取信息,如果存在则存入redis中;如果不存在,则存入null值至redis中,返回空数据,下次该用户登录也是从redis里得到null值,不会再读取数据库。正常数据都会通过数据同步模块同步至redis中,此降级是为了给系统提供一个兜底方案,仅读取一次数据库,如果数据不存在则之后不会主动读取数据库,直到数据同步模块同步数据至redis中。
总之,本发明首先为满足大流量的并发场景,提供2个redis缓存集群来为系统提供缓存服务,对业务操作进行水平切分,根据业务key来进行取模;通过订阅MySQL数据库的Binlog,来实时获取数据库的变更动态,解析Binlog,实时同步数据至redis;最后业务数据读取模块优先根据业务key从redis里读取数据,如果数据不存在redis里,那么进行单次降级读取数据库,再存入redis缓存中,作为兜底。
请参阅图2所示,本发明还提供了一种分布式系统下的全量缓存系统,包括数据读取模块、缓存模块、数据同步模块和数据库模块;所述数据读取模块,即用户登录前台站点,系统根据用户的登录名读取redis数据,判断是否存在该用户数据;所述缓存模块,即根据用户的登录名经hash算法得到hash值;提供两个redis集群来提供读取服务,通过得到的hash值来判断用户名存储在哪个redis集群上;所述数据同步模块,即通过数据同步将用户数据写入本机的Binlog文件中,与主数据库建立连接,实现主从同步;所述数据库模块,即主数据库创建用户表user_tb用于存储用户信息,管理员通过管理后台修改用户信息,更新user_tb表数据。
所述数据读取模块进一步具体为:当用户登录前台站点,系统根据登录名计算得到用户信息的redis存储集群,读取redis数据,判断是否存在用户数据,是,则直接返回;否,则额外提供一个单次降级方案,根据登录名从数据库的user_tb里读取信息,如果存在则存入redis中;如果不存在,则存入null值至redis中,返回空数据,下次该用户登录也是从redis里得到null值,不会再读取数据库。
所述缓存模块进一步具体为:提供两个redis集群来提供读取服务,分别为redisA集群和redisB集群,根据用户的登录名经hash算法得到hash值,将得到的hash值除2取模,得到的值为1,则判断用户信息存储在redisB集群上,若得到的hash值为0,则判断用户信息存储在redisA集群上。
所述数据同步模块进一步具体为:Binlog是MySQL数据库的主从数据同步方案,根据Binlog的特性,启动一个作业任务,订阅Binlog,解析出变更的数据,遍历日志文件中带有更新标识update的数据,得到修改后的数据,根据用户名里的redis集群节点获取算法,存入数据至redis相应的集群中。
所述数据库模块进一步具体为:通过应用MySQL数据库中实现数据同步的Binlog机制来实现数据同步,数据库创建用户表user_tb用于存储用户信息,管理员通过管理后台修改用户信息,直接更新user_tb表数据。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
Claims (10)
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.一种分布式系统下的全量缓存系统,其特征在于:包括数据读取模块、缓存模块、数据同步模块和数据库模块;所述数据读取模块,即用户登录前台站点,系统根据用户的登录名读取redis数据,判断是否存在该用户数据;所述缓存模块,即根据用户的登录名经hash算法得到hash值;提供两个redis集群来提供读取服务,通过得到的hash值来判断用户名存储在哪个redis集群上;所述数据同步模块,即通过数据同步将用户数据写入本机的Binlog文件中,与主数据库建立连接,实现主从同步;所述数据库模块,即主数据库创建用户表user_tb用于存储用户信息,管理员通过管理后台修改用户信息,更新user_tb表数据。
7.根据权利要求7所述的一种分布式系统下的全量缓存系统,其特征在于:所述数据读取模块进一步具体为:当用户登录前台站点,系统根据登录名计算得到用户信息的redis存储集群,读取redis数据,判断是否存在用户数据,是,则直接返回;否,则额外提供一个单次降级方案,根据登录名从数据库的user_tb里读取信息,如果存在则存入redis中;如果不存在,则存入null值至redis中,返回空数据,下次该用户登录也是从redis里得到null值,不会再读取数据库。
8.根据权利要求7所述的一种分布式系统下的全量缓存系统,其特征在于:所述缓存模块进一步具体为:提供两个redis集群来提供读取服务,分别为redisA集群和redisB集群,根据用户的登录名经hash算法得到hash值,将得到的hash值除2取模,得到的值为1,则判断用户信息存储在redisB集群上,若得到的hash值为0,则判断用户信息存储在redisA集群上。
9.根据权利要求7所述的一种分布式系统下的全量缓存系统,其特征在于:所述数据同步模块进一步具体为:Binlog是MySQL数据库的主从数据同步方案,根据Binlog的特性,启动一个作业任务,订阅Binlog,解析出变更的数据,遍历日志文件中带有更新标识update的数据,得到修改后的数据,根据用户名里的redis集群节点获取算法,存入数据至redis相应的集群中。
10.根据权利要求7所述的一种分布式系统下的全量缓存系统,其特征在于:所述数据库模块进一步具体为:通过应用MySQL数据库中实现数据同步的Binlog机制来实现数据同步,数据库创建用户表user_tb用于存储用户信息,管理员通过管理后台修改用户信息,直接更新user_tb表数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110544605.7A CN113127521B (zh) | 2021-05-19 | 2021-05-19 | 一种分布式系统下的全量缓存方案及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110544605.7A CN113127521B (zh) | 2021-05-19 | 2021-05-19 | 一种分布式系统下的全量缓存方案及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113127521A true CN113127521A (zh) | 2021-07-16 |
CN113127521B CN113127521B (zh) | 2023-04-28 |
Family
ID=76782522
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110544605.7A Active CN113127521B (zh) | 2021-05-19 | 2021-05-19 | 一种分布式系统下的全量缓存方案及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113127521B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104361030A (zh) * | 2014-10-24 | 2015-02-18 | 西安未来国际信息股份有限公司 | 一种具有任务分发功能的分布式缓存架构及缓存方法 |
CN106341492A (zh) * | 2016-10-19 | 2017-01-18 | 杭州赛客网络科技有限公司 | 基于云通讯服务的分布式内存数据存储和读取方法 |
CN107423303A (zh) * | 2016-05-24 | 2017-12-01 | 北京京东尚科信息技术有限公司 | 数据同步的方法和系统 |
CN108196796A (zh) * | 2017-12-29 | 2018-06-22 | 暴风集团股份有限公司 | 一种数据处理的方法、装置、电子设备、程序和介质 |
US20210042174A1 (en) * | 2019-08-11 | 2021-02-11 | Paypal, Inc. | Distributed queueing over a redis cluster |
CN112364061A (zh) * | 2020-11-18 | 2021-02-12 | 浪潮云信息技术股份公司 | 一种基于mysql高并发访问数据库的方法 |
-
2021
- 2021-05-19 CN CN202110544605.7A patent/CN113127521B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104361030A (zh) * | 2014-10-24 | 2015-02-18 | 西安未来国际信息股份有限公司 | 一种具有任务分发功能的分布式缓存架构及缓存方法 |
CN107423303A (zh) * | 2016-05-24 | 2017-12-01 | 北京京东尚科信息技术有限公司 | 数据同步的方法和系统 |
CN106341492A (zh) * | 2016-10-19 | 2017-01-18 | 杭州赛客网络科技有限公司 | 基于云通讯服务的分布式内存数据存储和读取方法 |
CN108196796A (zh) * | 2017-12-29 | 2018-06-22 | 暴风集团股份有限公司 | 一种数据处理的方法、装置、电子设备、程序和介质 |
US20210042174A1 (en) * | 2019-08-11 | 2021-02-11 | Paypal, Inc. | Distributed queueing over a redis cluster |
CN112364061A (zh) * | 2020-11-18 | 2021-02-12 | 浪潮云信息技术股份公司 | 一种基于mysql高并发访问数据库的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113127521B (zh) | 2023-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10248356B2 (en) | Using scratch extents to facilitate copying operations in an append-only storage system | |
US9305002B2 (en) | Method and apparatus for eventually consistent delete in a distributed data store | |
CN106815218B (zh) | 数据库访问方法、装置和数据库系统 | |
US11442920B2 (en) | Graph database system | |
ES2811106T3 (es) | Sistema de gestión de base de datos | |
US9690823B2 (en) | Synchronizing copies of an extent in an append-only storage system | |
US11061924B2 (en) | Multi-region, multi-master replication of database tables | |
JP2022534215A (ja) | ハイブリッド・インデックス作成方法、システム、プログラム | |
US9547706B2 (en) | Using colocation hints to facilitate accessing a distributed data storage system | |
US20090210429A1 (en) | System and method for asynchronous update of indexes in a distributed database | |
WO2021184761A1 (zh) | 数据访问方法和装置、数据存储方法和装置 | |
CN111177161B (zh) | 数据处理方法、装置、计算设备和存储介质 | |
CN111444274B (zh) | 数据同步方法、数据同步系统及其装置、介质和系统 | |
US20080028000A1 (en) | Synchronization operations involving entity identifiers | |
KR102119258B1 (ko) | 데이터베이스 관리 시스템에서의 변경 데이터 캡쳐 구현 기법 | |
US20160092125A1 (en) | Constructing an index to facilitate accessing a closed extent in an append-only storage system | |
US20150149500A1 (en) | Multi-level lookup architecture to facilitate failure recovery | |
US9720607B2 (en) | Append-only storage system supporting open and closed extents | |
KR20200056357A (ko) | 데이터베이스 관리 시스템에서의 변경 데이터 캡쳐 구현 기법 | |
CN108345684A (zh) | 基于多维度多指标体系的智能分析系统及分析方法 | |
US20160139980A1 (en) | Erasure-coding extents in an append-only storage system | |
CN113127521A (zh) | 一种分布式系统下的全量缓存方案及系统 | |
CN116049306A (zh) | 数据同步方法、装置、电子设备以及可读存储介质 | |
CN116821232A (zh) | 一种数据同步方法及相关装置 | |
US11789971B1 (en) | Adding replicas to a multi-leader replica group for a data set |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |