一种数据读写方法及系统的制作方法

文档序号:6432939阅读:370来源:国知局

专利名称::一种数据读写方法及系统的制作方法
技术领域
:本发明涉及计算机
技术领域
,尤其涉及ー种数据读写方法及系统。
背景技术
:随着网络技术的发展,web相关产品越来越多,竞争也越来越激烈,在服务器宕机、互联网数据中兴(IDC)故障、网络故障等情况下,web产品是否仍能提供高质量的服务,是用户在选择web产品时优先考虑的因素之一,換言之,提供高可靠性的容灾服务,是web产品制胜的一大法宝。现有大多数web产品的数据存储服务都是采用主备方式来容灾,或者通过主写备读的方式来处理,但是,现有的主备方式只通过多个备用设备保证了数据读取容灾,而向主用设备写数据仍存在单点隐患,一旦主用设备或其所在的IDC出现故障,就会导致数据写失败,从而会严重降低服务质量并影响用户体验。
发明内容有鉴于此,本发明的主要目的在于提供ー种数据读写方法及系统,能够提高数据写服务的可靠性,提高服务质量及用户体验。为达到上述目的,本发明的技术方案是这样实现的ー种数据读写方法,划分多个分组,每个分组均能实现读服务和写服务,该方法包括用户需要读写数据时,查找就近分组;判断查找到的就近分组是否可用,判定查找到的就近分组可用,则访问所述就近分组,通过相应的分组接ロ进行数据读写;判定查找到的就近分组不可用,则访问其他分组,通过相应的分组接ロ进行数据读写。该方法还包括数据在分组存储后,所述分组有选择性地向所述分组以外的至少一个分组同步所述存储的数据。该方法还包括在向分组写入数据的过程中,分组接ロ或接ロ链路发生故障,则所述分组接ロ向其他分组接ロ转发需要写入的数据,或者,切换到其他分组接ロ写入数据。ー种数据读写系统,包括控制模块、多个分组、以及与分组相对应的分组接ロ;其中,所述控制模块,用于在用户需要读写数据时,查找就近分组,并判断查找到的就近分组是否可用,判定查找到的就近分组可用,则访问所述就近分组,通过相应的分组接ロ进行数据读写;判定查找到的就近分组不可用,则访问其他分组,通过相应的分组接ロ进行数据读写。所述每个分组至少包括读服务和写服务,该方法还包括数据通过写服务在分组存储后,所述分组的写服务有选择性地向所述分组以外的至少ー个分组的写服务同步所述存储的数据。所述分组接ロ,还用于在分组接ロ或接ロ链路发生故障吋,向其他分组接ロ转发需要写入的数据。所述控制模块,还用于在分组写入数据的过程中,分组接ロ或接ロ链路发生故障时,控制切换到其他分组接ロ写入数据。所述分组包括写服务、读服务、主库、备库和缓存;其中,数据写入时,写服务向主库写入数据,数据写入后,主库向备库同步数据,数据读取吋,读服务首先从缓存中读取数据,如果缓存没有,则从备库读取数据,返回结果的同时将该数据同步到缓存中,以供下次读取。所述分组包括写服务、读服务、缓存和数据库;其中,应用程序调用写服务,TTC数据会自动同步到数据库中,调用读服务时,如果TTC缓存中有则直接返回,如果没有则向数据库查询,然后将结果更新到缓存再返回。所述分组包括写接ロ、读接ロ、数据库、至少ー个读服务和与读服务对应的缓存;其中,写操作直接通过写接ロ更新到数据库中,写接ロ同时将写消息转发给读接ロー份,读接ロ将该写消息转发到对应的读服务,以便将该写消息更新到缓存中。本发明提出的数据读写方法及系统,划分多个分组,每个分组均能实现读服务和写服务,用户需要读写数据时,查找就近分组;判断查找到的就近分组是否可用,判定查找到的就近分组可用,则访问所述就近分组,通过相应的分组接ロ进行数据读写;判定查找到的就近分组不可用,则访问其他分组,通过相应的分组接ロ进行数据读写。本发明能够提高数据写服务的可靠性,提高服务质量及用户体验,且便于扩容升级。图1为本发明数据读写方法流程示意图;图2为Memchache缓存方式的原理示意图;图3为TTC缓存方式的原理示意图;图4为全量分离缓存方式的原理示意图;图5为本发明以两个分组为例,相应于图2的系统结构示意图;图6为本发明以两个分组为例,相应于图3的系统结构示意图;图7为本发明以两个分组为例,相应于图4的系统结构示意图。具体实施例方式本发明的基本思想是划分多个分组,每个分组均能实现读服务和写服务,用户需要读写数据时,查找就近分组;判断查找到的就近分组是否可用,判定查找到的就近分组可用,则访问所述就近分组,通过相应的分组接ロ进行数据读写;判定查找到的就近分组不可用,则访问其他分组,通过相应的分组接ロ进行数据读写。本发明结合读写分离、分组(set)模型、分布式策略,针对海量处理、高可靠性等特点提供了一个完整的数据存储方案,本发明中,分组是ー组相关的资源的组合,可以提供相对固定的一定数量的用户服务,也是ー个部署単位。图1为本发明数据读写方法流程示意图,如图1所示,该方法包括步骤101:用户需要读写数据。步骤102:查找就近分组。本发明中,划分多个分组,每个分组均能实现读服务和写服务,且每个分组有ー个唯一编号,存储数据时每个数据项的编号(key)都以其分组编号为前缀,这样可以保证数据的全局卩隹一'注。步骤103:判断查找到的就近分组是否可用,如果查找到的就近分组可用,执行步骤104;如果查找到的就近分组不可用,则执行步骤105。需要说明的是,查找到的就近分组可以为ー个也可以为多个,查找到多个就近分组时,依次对各个就近分组进行判断,直到找到可用的就近分组或遍历所有查找到的就近分组,停止判断。步骤104:访问所述就近分组,进行数据读写。步骤105:访问其他分组,进行数据读写。需要说明的是,本发明中,数据在某分组存储后,该分组可以有选择性地向该分组以外的至少ー个分组同步所述存储的数据,并有同步失败的重做机制,例如,该分组将同步失败的ニ进制协议包记录到文件中,文件的格式为开始标记(Oxfd58646c)+unix时间戳+包长+消息包+结束标记(0x6c6458fd),文件名为IP地址+端ロ+同步方式(tcp为I或udp为2)+日期+小时(0-23)+序列号(0-3,因为每15分钟ー个文件),然后有消息同步工具根据文件名和文件内的内容进行实时同步,每同步ー个消息包,记录该文件下ー个协议包的文件行数,以便同步工具重启时,可以直接从该行开始处理;如果已经处理到最后ー行,毎秒检查该文件是否有新包写入,直至有下一个失败文件产生;如果同步协议包同步失败,则告警,并不断重试直至成功。需要说明的是,如果在向分组写入数据的过程中,分组接ロ或接ロ链路发生故障,则该分组接ロ需要向其他分组接ロ转发需要写入的数据,或者,系统切换到其他分组接ロ写入数据。一般的,将数据的读写服务分离,使读服务或写服务都方便各自扩展,读写分离根据业务不同主要有下面三种方式图2为Memchache缓存方式的原理示意图,如图2所示,数据写入时,写服务向主库写入数据,数据写入后,主库向备库同步数据,数据读取吋,读服务首先从缓存中读取数据,如果缓存没有,则从备库读取数据,返回结果的同时将该数据同步到缓存中,以供下次读取。图3为TTC(tencenttablecache)缓存方式的原理示意图,如图3所示,TTC为公司的数据库缓存服务,有独立的接口和api,应用程序调用写服务,TTC数据会自动同步到数据库中,调用读服务时,如果TTC缓存中有则直接返回,如果没有则向数据库(DB)查询,然后将结果更新到缓存再返回。图4为全量分离缓存方式的原理示意图,如图4所示,写操作直接通过左边的写接ロ更新到数据库中,写接ロ同时将写消息转发给读接ロー份,读接ロ将该写消息转发到对应的读服务,以便将该写消息更新到缓存(cache)中,如果写接ロ向读接ロ写失败,则记录同步文件,进行重做,读操作侧直接通过读接ロ到对应的读服务进行信息的读取。本发明还相应地提出ー种数据读写系统,该系统包括控制模块、多个分组、以及与分组相对应的分组接ロ;其中,所述控制模块,用于在用户需要读写数据时,查找就近分组,并判断查找到的就近分组是否可用,判定查找到的就近分组可用,则访问所述就近分组,通过相应的分组接ロ进行数据读写;判定查找到的就近分组不可用,则访问其他分组,通过相应的分组接ロ进行数据读写。所述每个分组至少包括读服务和写服务,该方法还包括数据通过写服务在分组存储后,所述分组的写服务有选择性地向所述分组以外的至少ー个分组的写服务同步所述存储的数据。所述分组接ロ,还用于在分组接ロ或接ロ链路发生故障吋,向其他分组接ロ转发需要写入的数据。所述控制模块,还用于在分组写入数据的过程中,分组接ロ或接ロ链路发生故障时,控制切换到其他分组接ロ写入数据。所述分组包括写服务、读服务、主库、备库和缓存;其中,数据写入时,写服务向主库写入数据,数据写入后,主库向备库同步数据,数据读取吋,读服务首先从缓存中读取数据,如果缓存没有,则从备库读取数据,返回结果的同时将该数据同步到缓存中,以供下次读取。所述分组包括写服务、读服务、缓存和数据库;其中,应用程序调用写服务,TTC数据会自动同步到数据库中,调用读服务时,如果TTC缓存中有则直接返回,如果没有则向数据库查询,然后将结果更新到缓存再返回。所述分组包括写服务、读服务、数据库、至少一个读接口和与读接ロ对应的缓存;其中,写操作直接通过左边的写接ロ更新到数据库中,写接ロ同时将写消息转发给读接ロー份,读接ロ将该写消息转发到对应的读服务,以便将该写消息更新到缓存中,如果写接ロ向读接ロ写失败,则记录同步文件,进行重做,读操作侧直接通过读接ロ到对应的读服务进行信息的读取。以两个分组为例,相应于图2,本发明数据读写系统的结构如图5所示,分组接ロI与分组I的读服务和写服务之间存在链接,分组接ロ2与分组2的读服务和写服务之间存在链接,分组接ロI和分组接ロ2也可以分别与分组2和分组I的读服务和写服务之间存在链接,并且,分组I和分组2的写服务之间存在链接,用于组间同歩。以两个分组为例,相应于图3,本发明数据读写系统的结构如图6所示,分组接ロ3与分组3的读服务和写服务之间存在链接,分组接ロ4与分组4的读服务和写服务之间存在链接,分组接ロ3和分组接ロ4也可以分别与分组4和分组3的读服务和写服务之间存在链接,并且,分组3和分组4的写服务之间存在链接,用于组间同歩。以两个分组为例,相应于图4,本发明数据读写系统的结构如图7所示,分组接ロ5与分组5的读服务和写服务之间存在链接,分组接ロ6与分组6的读服务和写服务之间存在链接,分组接ロ5和分组接ロ6也可以分别与分组6和分组5的读服务和写服务之间存在链接,并且,分组5和分组6的写服务之间存在链接,用于组间同歩。可以看出,本发明通过将读写服务按分组模型进行了分布式部署,用户读写数据时,优先就近访问服务分组,提高了性能;就近分组不可用时,可以访问其他分组,提高了服务质量,从而,运用本发明中提供的技术实现方案,可以实现高性能、高可靠性的数据读写服务,并且可以方便扩容升级。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。权利要求1.一种数据读写方法,其特征在于,划分多个分组,每个分组均能实现读服务和写服务,该方法包括用户需要读写数据时,查找就近分组;判断查找到的就近分组是否可用,判定查找到的就近分组可用,则访问所述就近分组,通过相应的分组接口进行数据读写;判定查找到的就近分组不可用,则访问其他分组,通过相应的分组接口进行数据读写。2.根据权利要求1所述的数据读写方法,其特征在于,该方法还包括数据在分组存储后,所述分组有选择性地向所述分组以外的至少一个分组同步所述存储的数据。3.根据权利要求1所述的数据读写方法,其特征在于,该方法还包括在向分组写入数据的过程中,分组接口或接口链路发生故障,则所述分组接口向其他分组接口转发需要写入的数据,或者,切换到其他分组接口写入数据。4.一种数据读写系统,其特征在于,该系统包括控制模块、多个分组、以及与分组相对应的分组接口;其中,所述控制模块,用于在用户需要读写数据时,查找就近分组,并判断查找到的就近分组是否可用,判定查找到的就近分组可用,则访问所述就近分组,通过相应的分组接口进行数据读写;判定查找到的就近分组不可用,则访问其他分组,通过相应的分组接口进行数据读与。5.根据权利要求4所述的数据读写系统,其特征在于,所述每个分组至少包括读服务和写服务,该方法还包括数据通过写服务在分组存储后,所述分组的写服务有选择性地向所述分组以外的至少一个分组的写服务同步所述存储的数据。6.根据权利要求4所述的数据读写系统,其特征在于,所述分组接口,还用于在分组接口或接口链路发生故障时,向其他分组接口转发需要写入的数据。7.根据权利要求4所述的数据读写系统,其特征在于,所述控制模块,还用于在分组写入数据的过程中,分组接口或接口链路发生故障时,控制切换到其他分组接口写入数据。8.根据权利要求4至7任一项所述的数据读写方法,其特征在于,所述分组包括写服务、读服务、主库、备库和缓存;其中,数据写入时,写服务向主库写入数据,数据写入后,主库向备库同步数据,数据读取时,读服务首先从缓存中读取数据,如果缓存没有,则从备库读取数据,返回结果的同时将该数据同步到缓存中,以供下次读取。9.根据权利要求4至7任一项所述的数据读写方法,其特征在于,所述分组包括写服务、读服务、缓存和数据库;其中,应用程序调用写服务,TTC数据会自动同步到数据库中,调用读服务时,如果TTC缓存中有则直接返回,如果没有则向数据库查询,然后将结果更新到缓存再返回。10.根据权利要求4至7任一项所述的数据读写方法,其特征在于,所述分组包括写接口、读接口、数据库、至少一个读服务和与读服务对应的缓存;其中,写操作直接通过写接口更新到数据库中,写接口同时将写消息转发给读接口一份,读接口将该写消息转发到对应的读服务,以便将该写消息更新到缓存中。全文摘要本发明公开了一种数据读写方法,包括划分多个分组,每个分组均能实现读服务和写服务,用户需要读写数据时,查找就近分组;判断查找到的就近分组是否可用,判定查找到的就近分组可用,则访问所述就近分组,通过相应的分组接口进行数据读写;判定查找到的就近分组不可用,则访问其他分组,通过相应的分组接口进行数据读写。本发明还相应地公开了一种数据读写系统。本发明能够提高数据写服务的可靠性,提高服务质量及用户体验,且便于扩容升级。文档编号G06F11/07GK102999395SQ20111026810公开日2013年3月27日申请日期2011年9月9日优先权日2011年9月9日发明者闫清岭,沃英杰,范禹,戴魏巍申请人:腾讯科技(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1