一种api服务器处理大数据的运算方法及其系统的制作方法_2

文档序号:9690960阅读:来源:国知局
请求数据。
[0025]步骤S200、所述API服务器接收所述请求数据,并将所述请求数据发送至消息队列集群缓冲,所述消息队列集群再将所述请求数据发送至分布式实时计算系统集群。
[0026]本发明的实施例中,当所述API服务器接收所述请求数据后,并未在API服务器上进行请求数据的业务逻辑运算,而是将所述请求数据发送至消息队列集群缓冲后,再由所述消息队列集群将所述请求数据发送至分布式实时计算系统集群。
[0027]具体实施时,在API服务器中部署Zooke印er(它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等)集群,用于集中管理配置信息并可以动态修改配置。
[0028]所述消息队列集群部署为Kafka (它是一个分布式的,分区的,重复提交的日志服务)集群,将Kafka各个节点的地址写入Zooke印er。API服务器作为Kafka的生产者发送消息,分布式实时计算系统集群作为Kafka的消费者消费消息。API服务器与分布式实时计算系统集群之间没有直接联系,它们可以灵活部署,甚至不需要知道对方的存在。
[0029]所述分布式实时计算系统集群部署为Storm集群,Storm通过API服务器中的Zookeeper获取Kafka集群各个节点数据库的地址,。API服务器将业务运算逻辑单独实现并打包成Topology (Storm运算单元)提交给Storm。Topology需从Kafka中读取消息,并进行计算,计算完成后,将计算结果分布保存到Kafka集群各个节点数据库中。
[0030]由于业务逻辑运算是在分布式实时计算系统集群中进行,故能降低API服务器的运算量。而且当业务逻辑运算的算法发生改变时,不需要修改或重新部署API服务器。
[0031]步骤S300、所述分布式实时计算系统集群对所述请求数据进行业务逻辑运算,并将得到的运算结果发送至数据库存储。
[0032]在步骤S300中,若客户端并发请求量大时,所述分布式实时计算系统集群对多个客户端传输的请求数据分别进行处理,并将完成算而的得到的运算结果发送至数据库进行存储。具体实施时,所述数据库采用Redis数据库,将Redis的各个节点的地址写入Zookeeper。其中,Redis数据库是一种使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value (即键值对)数据库。
[0033]步骤S400、当客户端接收到用户的结果获取指令时,向API服务器发送所述结果获取指令,所述API服务器据所述结果获取指令在数据库中查询所述运算结果并返回至客户端。
[0034]本发明的实施例中,当客户端接收用户的操作指令向API服务器发出结果获取指令时,所述API服务器根据所述结果获取指令在数据库中查询所述运算结果,当查询到所述运算结果时则立即将其发送至客户端。可见,上述过程没有阻塞或者等待,提高了 API服务器的吞吐量,使得客户端的请求可以得到API服务器的快速反馈。
[0035]进一步地实施例,如图2所示,其为本发明所述API服务器处理大数据的运算方法中缓存及发送请求数据的具体流程图。所述步骤S200中缓存及发送请求数据具体包括:
步骤S201、所述API服务器接收所述数据请求,并生成一与所述请求数据相对应的请求数据身份标识。
[0036]显然,在步骤S100中可能是一个客户端向API服务器发送数据请求,也有可能是多个客户端向API服务器发送数据请求。为了区别不同的数据请求,当所述API服务器每接收一数据请求时,则对应生成一唯一的请求数据身份标识。当客户端需查询运算结果时,根据所述请求数据身份标识即可查询,同时也保证了查询结果的唯一性。
[0037]步骤S202、所述API将所述请求数据身份标识发送至客户端,并将所述请求数据及所述请求数据身份标识发送至消息队列集群缓冲。
[0038]当API中根据请求数据生成请求数据身份标识后,将所述请求数据身份标识发送至对应的客户端,并将所述请求数据发送至消息队列集群缓冲。
[0039]步骤S203、所述消息队列集群接收所述请求数据及所述请求数据身份标识,并将所述请求数据发送至分布式实时计算系统集群。
[0040]本发明的实施例中,采用消息队列集群作为缓冲区来缓冲所述请求数据,而不是直接将所述请求数据发送至分布式实时计算系统集群进行业务逻辑运算,避免了通过DRPC方式调用分布式实时计算系统集群而导致的API服务器阻塞的问题。
[0041]进一步地实施例,如图3所示,其为本发明所述API服务器处理大数据的运算方法中运算结果获取的具体流程图。所述步骤S400中运算结果获取具体包括:
步骤S401、当客户端接收到用户的结果获取指令时,将所述请求数据身份标识发送至API服务器。
[0042]当客户端需获取请求数据的运算结果时,用户操作客户端向API服务器发送结果获取指令,且同时将所述请求数据身份标识发送至API服务器。
[0043]步骤S402、所述API服务器接收所述请求数据身份标识,并根据所述请求数据身份标识在所述数据库中查询对应的运算结果。
[0044]显然,API服务器根据所述请求数据身份标识在数据库中查询对应的运算结果时,由于请求数据身份标识是唯一的,故能保证了查询结果的唯一性。
[0045]步骤S403、当查询到所述运算结果时,则将所述运算结果发送至客户端。
[0046]进一步地实施例,所述步骤S403之后还包括:
当未查询到所述运算结果时,所述客户端再次发出结果获取指令,并返回执行步骤S401o
[0047]显然,由于在分布式实时计算系统集群中对大数据进行处理时,并不能在短时间内完成多所有请求数据的运算。故当有客户端在发送的数据查询指令后,API服务器返回的计算结果为空(即未查询到运算结果)时,则客户端需再次向API服务器发送结果获取指令。其中,客户端再次向向API服务器发送结果获取指令与上一次发送结果获取指令的时间间隔为任意的。
[0048]经实际测试可知,传统的API服务器处理10万次请求耗时168s,平均响应时间3190ms ;而本发明所述的API服务器处理大数据的运算方法,处理10万次发送请求数据和10万次运算结果获取耗时分别为28s和43s,总耗时为71s,平均响应时间为1191ms。可见,本发明所提供的步式API服务器实现方法是一种低延迟、高性能、易扩展的方法。
[0049]基于上述实施例,本发明还提供一种API服务器处理大数据的运算系统。如图4所示,其为本发明所述API服务器处理大数据的运算系统的较佳实施例的结构框图,所述API服务器处理大数据的运算系统包括:
请求发送模块100,用于客户端接收用户的操作指令,向API服务器发送请求数据;具体如上述方法步骤S100所述。
[0050]缓存及发送模块200,用于所述API服务器接收所述请求数据,并将所述请求数据发送至消息队列集群缓冲,所述消息队列集群再将所述请求数据发送至分布式实时计算系统集群;具体如上述方法步骤S200所述。
[0051]运算及存储模块300,用于所述分布式实时计算系统集群对所述请求数据进行业务逻辑运算,并将得到的运算结果发送至数据库存储;具体如上述方法步骤S300所述。
[0052]结果获取模块400,用于当客户端接收到用户的结果获取指令时,向API服务器发送所述结果获取指令,所述API服务器据所述结果获取指令在数据库中查询所述运算结果并返回至客户端;具体如上述方法步骤S400所述。
[0053]进一步地实施例,在所述API服务器处理大数据的运算系统中,所述缓存及发送模块200具体包括: 标识生成单元,用于所述API服务器接收所述数据请求,并生成一与所述请求数据相对应的请求数据身份标识;具体如步骤S201所述。
[0054]数据及标识发送单元,用于所述API将所述请求数据身份标识发送至客户端,并将所述请求数据及所述请求数据身份标识发送至消息队列集群缓冲;具体如上述方法步骤S202所述。
[0055]缓存数据发送单元,用于所述消息队列集群接收所述请求数据及所述请求数据身份标识,并将所述请求数据发送至分布式实
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1