CN102722405B - 高并发、多线程应用中的计数方法及系统 - Google Patents

高并发、多线程应用中的计数方法及系统 Download PDF

Info

Publication number
CN102722405B
CN102722405B CN201210185463.0A CN201210185463A CN102722405B CN 102722405 B CN102722405 B CN 102722405B CN 201210185463 A CN201210185463 A CN 201210185463A CN 102722405 B CN102722405 B CN 102722405B
Authority
CN
China
Prior art keywords
count value
object identity
shared drive
operand
server
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.)
Active
Application number
CN201210185463.0A
Other languages
English (en)
Other versions
CN102722405A (zh
Inventor
张海洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sina Technology China Co Ltd
Original Assignee
Sina Technology China Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sina Technology China Co Ltd filed Critical Sina Technology China Co Ltd
Priority to CN201210185463.0A priority Critical patent/CN102722405B/zh
Publication of CN102722405A publication Critical patent/CN102722405A/zh
Application granted granted Critical
Publication of CN102722405B publication Critical patent/CN102722405B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明涉及计算机技术领域,公开了一种高并发、多线程应用中的计数方法及系统。该方法包括:接收操作请求,在所述操作请求中包含操作对象的对象标识及已对所述操作对象的操作次数;根据操作对象的对象标识与保存在共享内存中的操作对象对应的计数值的映射关系,确定所述操作请求中的对象标识对应的计数值;根据所述操作请求中的操作次数更新所述共享内存中保存的所述计数值。利用本发明,可以减少磁盘I/O对系统性能的影响。

Description

高并发、多线程应用中的计数方法及系统
技术领域
本发明涉及计算机技术领域,具体涉及一种高并发、多线程应用中的计数方法及系统。
背景技术
传统网站帖子浏览计数存储在数据库(比如mysql)中,一般将浏览计数值与帖子内容放在帖子表中。当网络用户通过IE等浏览器查看帖子的时侯,浏览器发送http(Hypertext Transfer Protocol,超文本传送协议)请求到网站服务器,网站服务器会从帖子表中读取帖子内容和浏览计数值显示到浏览器,同时,会对帖子表中浏览计数值做更新操作,实现浏览计数的实时统计。帖子内容和浏览计数统一放到数据库中,实现快速方便,很多访问量小的网站,使用这种技术已经足够。
而对于大型网站,高并发(大于随机写200次/每秒,随机读1000次/每秒),大访问量(每天百万级别以上)时,单个数据库的I/O写性能已经达到极限,I/O负载压力很大。主要是硬盘本身随机读写能力达到上限,无法响应更多的I/O请求,直接导致服务不稳定。如果将读写分散到多台服务器,将直接导致服务器数量庞大,架构复杂,增加维护难度。
发明内容
本发明实施例针对上述现有技术存在的问题,提供一种高并发、多线程应用中的计数方法及系统,以减少磁盘I/O对系统性能的影响。
为此,本发明实施例提供如下技术方案:
一种高并发、多线程应用中的计数方法,包括:
接收操作请求,在所述操作请求中包含操作对象的对象标识及已对所述操作对象的操作次数;
根据操作对象的对象标识与保存在共享内存中的操作对象对应的计数值的映射关系,确定所述操作请求中的对象标识对应的计数值;
根据所述操作请求中的操作次数更新所述共享内存中保存的所述计数值。
优选地,所述方法还包括:
创建所述共享内存,并建立所述操作对象的对象标识与所述计数值的映射关系。
优选地,所述创建所述共享内存包括:
利用共享内存创建shmget函数创建所述共享内存;或者
利用内存映射mmap函数创建所述共享内存;或者
通过进程申请所述共享内存。
优选地,所述建立所述操作对象的对象标识与所述计数值的映射关系包括:
如果所述对象标识是数字类型的,则直接将所述对象标识映射到一个二进制整型值,并将所述二进制整型值作为与所述对象标识对应的计数值;
如果所述对象标识是字符串类型的,则先将所述对象标识映射为一个自动增长类型的字段,再将所述字段映射到一个二进制整型值,并将所述二进制整型值作为与所述对象标识对应的计数值。
优选地,所述共享内存分布在多个服务器中,所述多个服务器包括:本地服务器和远程服务器;所述方法还包括:
在根据所述操作次数更新所述共享内存中保存的所述计数值后,将更新操作后的计数值及对应的对象标识添加到所述本地服务器的日志文件中;
向所述远程服务器发送同步请求,在所述同步请求中包含所述日志文件中的计数值及对应的对象标识,以使所述远程服务器更新自己的共享内存中保存的与所述对象标识对应的计数值。
优选地,所述方法还包括:
接收所述远程服务器发送的同步请求,所述同步请求中包含需要同步的计数值及对应的对象标识;
根据所述映射关系确定所述对象标识对应的计数值;
根据所述需要同步的计数值更新所述本地服务器的共享内存中保存的与所述对象标识对应的计数值。
一种高并发、多线程应用中的计数系统,包括:
接收单元,用于接收操作请求,在所述操作请求中包含操作对象的对象标识及已对所述操作对象的操作次数;
查找单元,用于根据操作对象的对象标识与保存在所述共享内存中的操作对象对应的计数值的映射关系,确定所述操作请求中的对象标识对应的计数值;
更新单元,用于根据所述操作请求中的操作次数更新所述共享内存中保存的所述计数值。
优选地,所述系统还包括:
创建单元,用于创建所述共享内存;
映射关系建立单元,用于建立所述操作对象的对象标识与所述计数值的映射关系。
优选地,所述创建单元,具体用于利用共享内存创建shmget函数创建所述共享内存;或者利用内存映射mmap函数创建所述共享内存;或者通过进程申请所述共享内存。
优选地,所述映射关系建立单元,具体用于在所述对象标识是数字类型时,直接将所述对象标识映射到一个二进制整型值,并将所述二进制整型值作为与所述对象标识对应的计数值;在所述对象标识是字符串类型时,先将所述对象标识映射为一个自动增长类型的字段,再将所述字段映射到一个二进制整型值,并将所述二进制整型值作为与所述对象标识对应的计数值。
优选地,所述共享内存分布在多个服务器中,所述多个服务器包括:本地服务器和远程服务器;所述系统还包括:
日志添加单元,用于在所述更新单元根据所述操作次数更新所述共享内存中保存的所述计数值后,将更新操作后的计数值及对应的对象标识添加到所述本地服务器的日志文件中;
同步请求单元,用于向所述远程服务器发送同步请求,在所述同步请求中包含所述日志文件中的计数值及对应的对象标识,以使所述远程服务器更新自己的共享内存中保存的与所述对象标识对应的计数值。
优选地,所述系统还包括:
同步接收单元,用于接收所述远程服务器发送的同步请求,所述同步请求中包含需要同步的计数值及对应的对象标识;
所述查找单元,还用于根据所述映射关系确定所述同步请求中的对象标识对应的计数值;
所述更新单元,还用于根据所述同步请求中的需要同步的计数值,更新所述本地服务器的共享内存中保存的与所述对象标识对应的计数值。
本发明实施例提供的高并发、多线程应用中的计数方法及系统,直接使用共享内存存储计数值,在接收到操作请求后,根据操作对象的对象标识与保存在共享内存中的操作对象对应的计数值的映射关系确定操作请求中的对象标识对应的计数值,根据操作请求中的访问次数更新共享内存中保存的相应计数值,最大限度地减少了磁盘I/O对系统性能的影响。
进一步地,利用日志文件记录的计数值及对应的对象标识实现多服务器计数值的同步,从而满足了分布式部署的需求。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本发明高并发、多线程应用中的计数方法的一种实施例的流程图;
图2是本发明高并发、多线程应用中的计数方法的另一种实施例的流程图;
图3是本发明实施例高并发、多线程应用中的计数系统的一种实施例的结构示意图;
图4是本发明实施例高并发、多线程应用中的计数系统的另一种实施例的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例的方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。
直接使用内存存储计数值,并建立操作对象的对象标识与计数值的映射关系,在接收到操作请求后,根据所述映射关系确定操作请求中的对象标识对应的计数值,根据操作请求中的访问次数更新共享内存中保存的相应计数值,最大限度地减少了磁盘I/O对系统性能的影响。
图1是本发明高并发、多线程应用中的计数方法的一种实施例的流程图,包括以下步骤:
步骤101,接收操作请求,在所述操作请求中包含操作对象的对象标识及已对所述操作对对象的操作次数。
由于对于不同的应用可以有不同的操作,因此,上述操作请求也是与具体的应用相对应的,比如:
对于浏览帖子的操作,所述操作请求可以是对帖子的访问请求,在该访问请求中包含要访问的帖子的标识及客户端已统计得到的对该帖子的访问次数;
对于下载帖子的操作,所述操作请求可以是对帖子的下载请求,在该下载请求中包含要下载的帖子的标识及客户端已统计得到的对该帖子的下载次数;
对于发布帖子的操作,所述操作请求可以是对帖子的发布请求,在该发布请求中包含要发布的帖子的标识及客户端已统计得到的对该帖子的发布次数;
当然,本发明实施例的方法也可以应用于其它需要统计操作次数的场景。
相应地,所述操作对象可以是以下任意一种或多种:浏览帖子、下载帖子、发布帖子等。
步骤102,根据操作对象的对象标识与保存在共享内存中的操作对象对应的计数值的映射关系,确定所述操作请求中的对象标识对应的计数值。
步骤103,根据所述操作请求中的访问次数更新所述共享内存中保存的所述计数值。
当然,在实际应用中,在向客户端返回请求的操作对象时,可以直接从所述共享内存中得到统计的计数值,将该计数值与所述操作对象一起返回给客户端。
为了避免将统计的计数值写入硬盘,由于硬盘的I/O瓶颈对系统性能的影响,在本发明实施例中在共享内存中实现对操作行为计数的功能。
为此,在本发明实施例中,还可进一步包括以下步骤:创建所述共享内存,并建立所述操作对象的对象标识与所述计数值的映射关系。
需要说明的是,在本发明实施例中,所述共享内存可以是预先设置的,其大小可以根据可能存在的对象标识的数据来确定,比如,设置大小为4倍于所述对象标识的共享内存,所述对象标识映射的计数值是所述共享内存的起始地址加4倍所述对象标识的值偏移处的二进制整型值。
在实际应用中,所述共享内存可以采用多种方式创建,比如:
(1)利用shmget(share memory get,共享内存创建)函数创建所述共享内存:
具体地,所述共享内存是shmget方式创建的system V(AT&T公司开发的第一个商业UNIX版本的加强)共享内存区,以内存方式运行机制,这种方式浏览计数速度更快,没磁盘I/O消耗。
(2)利用mmap(memory map,内存映射)函数创建所述共享内存:
具体地,所述共享内存是mmap方式创建的posix(Portable OperatingSystem Interface of Unix,Unix可移植操作系统接口)共享内存区,这种方式浏览计数值不易丢失,磁盘I/O也可以忽略。
(3)通过进程申请所述共享内存,比如,利用c语言编程函数malloc(是C语言中动态存储管理的一组标准库函数之一,其作用是在内存的动态存储区中分配一个长度为size的连续空间)实现内存申请。
上述各种不同方式创建共享内存的具体过程与现有技术类似,在此不再详细描述。
当然,还可以采用其他方式创建所述共享内存,对此本发明实施例不做限定。
在本发明实施例中,可以将每个对象标识映射到共享内存中的一个二进制整型值,该二进制整型值即前面所述的计数值。具体地,如果所述对象标识是数字类型的,则可以直接将该对象标识映射到所述二进制整型值;如果所述对象标识是字符串类型的,则先将所述对象标识映射为一个自动增长类型的字段,再将所述字段映射到一个二进制整型值,比如,可以利用mysql创建一个以所述对象标识为非重复主键,以新标识为Auto-increment类型的表,从而将所述对象标识映射到一个二进制整型值。
当然,还可以采用其他方式建立所述映射关系,对此本发明实施例不做限定。
本发明实施例高并发、多线程应用中的计数方法,直接使用共享内存存储计数值,在接收到操作请求后,根据操作对象的对象标识与保存在共享内存中的操作对象对应的计数值的映射关系,确定操作请求中的对象标识对应的计数值,根据操作请求中的访问次数更新所述共享内存中保存的相应计数值,最大限度地减少了磁盘I/O对系统性能的影响。
本发明实施例高并发、多线程应用中的计数方法可以应用于Web服务器端,由所述Web服务器在本地创建所述共享内存,存储计数值,实现对各客户端对操作对象的操作次数的统计。当然,也可以设置单独的计数服务器,在计数服务器上创建所述共享内存,存储计数值,在Web服务器收到客户端发送的操作请求后,将该操作请求中的信息中包含的对象标识及已对所述操作对象的操作次数发送给所述计数服务器,由所述计数服务器实现对各客户端对操作对象的操作次数的统计,并将统计结果返回给Web服务器。
在实际应用中,为了满足高并发、多线程的应用,往往会设置多个Web服务器同时为用户提供Web服务。针对这种情况,在本发明方法的另一实施例中,可以将所述共享内存分布在多个服务器(具体可以是Web服务器或与所述Web服务器相连的计数服务器,为了描述方便,统称为服务器)中,分别为:本地服务器和远程服务器。这些服务器利用日志文件记录的计数值及对应的对象标识实现多服务器计数值的同步,从而满足了分布式部署的需求。
如图2所示,是本发明高并发、多线程应用中的计数方法的另一种实施例的流程图,包括以下步骤:
步骤201,本地服务器预先将操作对象的计数值保存在共享内存中,并建立所述操作对象的对象标识与所述计数值的映射关系。
在该实施例,所述共享内存分布在多个服务器中,所述多个服务器可以是两个或两个以上的服务器。也就是说,其它远程服务器中也同时创建有用于保存计数值的共享内存,所述计数值是与所述本地服务器所针对的操作对象的同一操作对象的计数值。
需要说明的是,不同服务器中的共享内存的起始地址/终止地址可以不同,相应地,对应的映射关系也可以不同,但不同服务器中的共享内存的大小需要设置为相同。
步骤202,本地服务器接收操作请求,在所述操作请求中包含对象标识及已对所述操作对象的操作次数。
步骤203,本地服务器根据所述映射关系确定所述对象标识对应的计数值。
步骤204,本地服务器根据所述访问次数更新所述共享内存中保存的所述计数值。
步骤205,本地服务器将更新操作后的计数值及对应的对象标识添加到所述本地服务器的日志文件中。
步骤206,本地服务器向所述远程服务器发送同步请求,在所述同步请求中包含所述日志文件中的计数值及对应的对象标识,以使所述远程服务器更新自己的共享内存中保存的与所述对象标识对应的计数值。
另外,在该实施例中,还可进一步包括以下步骤:
本地服务器接收所述远程服务器发送的同步请求,所述同步请求中包含需要同步的计数值及对应的对象标识;
根据所述映射关系确定所述对象标识对应的计数值;
根据所述需要同步的计数值更新所述本地服务器的共享内存中保存的与所述对象标识对应的计数值。
本发明实施例高并发、多线程应用中的计数方法,直接使用共享内存存储计数值,而且共享内存分布在多个服务器中,不仅最大限度地减少了磁盘I/O对系统性能的影响,而且可以利用日志文件记录的计数值及对应的对象标识实现多服务器计数值的同步,从而满足了分布式部署的需求。
相应地,本发明还提供一种高并发、多线程应用中的计数系统,如图3所示,是该系统的一种实施例的结构示意图。
在该实施例中,所述系统包括:
接收单元301,用于接收操作请求,在所述操作请求中包含操作对象的对象标识及已对所述操作对象的操作次数;
查找单元302,用于根据操作对象的对象标识与保存在共享内存中的操作对象对应的计数值的映射关系,确定所述操作请求中的对象标识对应的计数值;
更新单元303,用于根据所述操作请求中的操作次数更新所述共享内存中保存的所述计数值。
在本发明实施例中,所述操作对象可以是以下任意一种或多种:浏览帖子、下载帖子、发布帖子等。所述对象标识可以是字符串类型的,也可以是数字类型的;所述计数值为二进制整型值。
由于对于不同的应用可以有不同的操作,因此,上述操作请求也是与具体的应用相对应的,比如,可以是访问请求、上传请求、发布请求等。
为了避免将统计的计数值写入硬盘,由于硬盘的I/O瓶颈对系统性能的影响,在本发明实施例中在共享内存中实现对操作行为计数的功能。
为此,在本发明实施例中,还可进一步包括创建单元和映射关系建立单元(未图示),其中:
所述创建单元,用于创建所述共享内存;
所述映射关系建立单元,用于建立所述操作对象的对象标识与所述计数值的映射关系。
需要说明的是,在本发明实施例中,所述共享内存的大小可以根据可能存在的对象标识的数据来确定,比如,设置大小为4倍于所述对象标识的共享内存,所述对象标识映射的计数值是所述共享内存的起始地址加4倍所述对象标识的值偏移处的二进制整型值。
在实际应用中,所述创建单元可以采用多种方式创建所述共享内存,比如,利用shmget函数创建所述共享内存;或者
利用mmap函数创建所述共享内存;或者
通过进程申请所述共享内存。
另外,所述映射关系建立单元针对不同类型的对象标识,可以采用不同方式建立操作对象的对象标识与计数值的映射关系,具体地,如果所述对象标识是数字类型的,则直接将所述对象标识映射到一个二进制整型值,并将所述二进制整型值作为与所述对象标识对应的计数值;如果对象标识是字符串类型的,则先将所述对象标识映射为一个自动增长类型的字段,再将所述字段映射到一个二进制整型值,并将所述二进制整型值作为与所述对象标识对应的计数值。
利用本发明实施例的系统进行操作次数统计的具体过程与前面图1所示流程类似,在此不再详细描述。
本发明实施例高并发、多线程应用中的计数系统,直接使用共享内存存储计数值,在接收到操作请求后,根据操作对象的对象标识与保存在共享内存中的操作对象对应的计数值的映射关系,确定操作请求中的对象标识对应的计数值,根据操作请求中的访问次数更新所述共享内存中保存的相应计数值,最大限度地减少了磁盘I/O对系统性能的影响。
本发明实施例高并发、多线程应用中的计数系统中的各单元可以应用于一个Web服务器上,即由所述Web服务器在本地创建所述共享内存,存储计数值,实现对各客户端对操作对象的操作次数的统计。当然,所述各单元也可以分布于多个服务器上,比如,将所述接收单元设置在Web服务器,将其它单元设置在计数服务器上,即在计数服务器上创建所述共享内存,存储计数值,在Web服务器收到客户端发送的操作请求后,将该操作请求中的信息中包含的对象标识及已对所述操作对象的操作次数发送给所述计数服务器,由所述计数服务器实现对各客户端对操作对象的操作次数的统计,并将统计结果返回给Web服务器。
在实际应用中,为了满足高并发、多线程的应用,往往会设置多个Web服务器同时为用户提供Web服务。针对这种情况,在本发明系统的另一实施例中,可以将所述共享内存分布在多个服务器(具体可以是Web服务器或与所述Web服务器相连的计数服务器,为了描述方便,统称为服务器)中,分别为:本地服务器和远程服务器。这些服务器利用日志文件记录的计数值及对应的对象标识实现多服务器计数值的同步,从而满足了分布式部署的需求。
如图4所示,是本发明实施例高并发、多线程应用中的计数的另一种实施例的结构示意图。
与图3所示实施例不同的是,在该实施例中,所述共享内存分布在多个服务器中,所述多个服务器包括:本地服务器和远程服务器。
所述系统还包括:日志添加单元401和同步请求单元402,其中:
日志添加单元401,用于在所述更新单元303根据所述操作次数更新所述共享内存中保存的所述计数值后,将更新操作后的计数值及对应的对象标识添加到所述本地服务器的日志文件中;
同步请求单元402,用于向所述远程服务器发送同步请求,在所述同步请求中包含所述日志文件中的计数值及对应的对象标识,以使所述远程服务器更新自己的共享内存中保存的与所述对象标识对应的计数值。
另外,在该实施例的系统中,还可进一步包括:
同步接收单元(未图示),用于接收所述远程服务器发送的同步请求,所述同步请求中包含需要同步的计数值及对应的对象标识。
相应地,所述查找单元302,还用于根据所述映射关系确定所述同步请求中的对象标识对应的计数值。所述更新单元303,还用于根据所述同步请求中的需要同步的计数值,更新所述本地服务器的共享内存中保存的与所述对象标识对应的计数值。
利用本发明实施例的系统进行操作次数统计的具体过程与前面图2所示流程类似,在此不再详细描述。
本发明实施例高并发、多线程应用中的计数系统,直接使用共享内存存储计数值,而且共享内存分布在多个服务器中,不仅最大限度地减少了磁盘I/O对系统性能的影响,而且可以利用日志文件记录的计数值及对应的对象标识实现多服务器计数值的同步,从而满足了分布式部署的需求。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上对本发明实施例进行了详细介绍,本文中应用了具体实施方式对本发明进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及设备;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (12)

1.一种高并发、多线程应用中的计数方法,其特征在于,应用于服务器,包括:
接收客户端发送的操作请求,在所述操作请求中包含操作对象的对象标识及已对所述操作对象的操作次数;所述操作对象保存在数据库中;
根据操作对象的对象标识与保存在服务器的共享内存中的操作对象对应的计数值的映射关系,确定所述操作请求中的对象标识对应的计数值;
根据所述操作请求中的操作次数更新所述共享内存中保存的所述计数值;
其中,所述计数值用于向所述客户端返回。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
创建所述共享内存,并建立所述操作对象的对象标识与所述计数值的映射关系。
3.根据权利要求2所述的方法,其特征在于,所述创建所述共享内存包括:
利用共享内存创建shmget函数创建所述共享内存;或者
利用内存映射mmap函数创建所述共享内存;或者
通过进程申请所述共享内存。
4.根据权利要求2所述的方法,其特征在于,所述建立所述操作对象的对象标识与所述计数值的映射关系包括:
如果所述对象标识是数字类型的,则直接将所述对象标识映射到一个二进制整型值,并将所述二进制整型值作为与所述对象标识对应的计数值;
如果所述对象标识是字符串类型的,则先将所述对象标识映射为一个自动增长类型的字段,再将所述字段映射到一个二进制整型值,并将所述二进制整型值作为与所述对象标识对应的计数值。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述共享内存分布在多个服务器中,所述多个服务器包括:本地服务器和远程服务器;所述方法还包括:
在根据所述操作次数更新所述共享内存中保存的所述计数值后,将更新操作后的计数值及对应的对象标识添加到所述本地服务器的日志文件中;
向所述远程服务器发送同步请求,在所述同步请求中包含所述日志文件中的计数值及对应的对象标识,以使所述远程服务器更新自己的共享内存中保存的与所述对象标识对应的计数值。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
接收所述远程服务器发送的同步请求,所述同步请求中包含需要同步的计数值及对应的对象标识;
根据所述映射关系确定所述对象标识对应的计数值;
根据所述需要同步的计数值更新所述本地服务器的共享内存中保存的与所述对象标识对应的计数值。
7.一种高并发、多线程应用中的计数系统,其特征在于,应用于服务器,包括:
接收单元,用于接收客户端发送的操作请求,在所述操作请求中包含操作对象的对象标识及已对所述操作对象的操作次数;所述操作对象保存在数据库中;
查找单元,用于根据操作对象的对象标识与保存在服务器的共享内存中的操作对象对应的计数值的映射关系,确定所述操作请求中的对象标识对应的计数值;
更新单元,用于根据所述操作请求中的操作次数更新所述共享内存中保存的所述计数值;
其中,所述计数值用于向所述客户端返回。
8.根据权利要求7所述的系统,其特征在于,所述系统还包括:
创建单元,用于创建所述共享内存;
映射关系建立单元,用于建立所述操作对象的对象标识与所述计数值的映射关系。
9.根据权利要求8所述的系统,其特征在于,
所述创建单元,具体用于利用共享内存创建shmget函数创建所述共享内存;或者利用内存映射mmap函数创建所述共享内存;或者通过进程申请所述共享内存。
10.根据权利要求8所述的系统,其特征在于,
所述映射关系建立单元,具体用于在所述对象标识是数字类型时,直接将所述对象标识映射到一个二进制整型值,并将所述二进制整型值作为与所述对象标识对应的计数值;在所述对象标识是字符串类型时,先将所述对象标识映射为一个自动增长类型的字段,再将所述字段映射到一个二进制整型值,并将所述二进制整型值作为与所述对象标识对应的计数值。
11.根据权利要求7至10任一项所述的系统,其特征在于,所述共享内存分布在多个服务器中,所述多个服务器包括:本地服务器和远程服务器;所述系统还包括:
日志添加单元,用于在所述更新单元根据所述操作次数更新所述共享内存中保存的所述计数值后,将更新操作后的计数值及对应的对象标识添加到所述本地服务器的日志文件中;
同步请求单元,用于向所述远程服务器发送同步请求,在所述同步请求中包含所述日志文件中的计数值及对应的对象标识,以使所述远程服务器更新自己的共享内存中保存的与所述对象标识对应的计数值。
12.根据权利要求11所述的系统,其特征在于,所述系统还包括:
同步接收单元,用于接收所述远程服务器发送的同步请求,所述同步请求中包含需要同步的计数值及对应的对象标识;
所述查找单元,还用于根据所述映射关系确定所述同步请求中的对象标识对应的计数值;
所述更新单元,还用于根据所述同步请求中的需要同步的计数值,更新所述本地服务器的共享内存中保存的与所述对象标识对应的计数值。
CN201210185463.0A 2012-06-06 2012-06-06 高并发、多线程应用中的计数方法及系统 Active CN102722405B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210185463.0A CN102722405B (zh) 2012-06-06 2012-06-06 高并发、多线程应用中的计数方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210185463.0A CN102722405B (zh) 2012-06-06 2012-06-06 高并发、多线程应用中的计数方法及系统

Publications (2)

Publication Number Publication Date
CN102722405A CN102722405A (zh) 2012-10-10
CN102722405B true CN102722405B (zh) 2015-05-13

Family

ID=46948184

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210185463.0A Active CN102722405B (zh) 2012-06-06 2012-06-06 高并发、多线程应用中的计数方法及系统

Country Status (1)

Country Link
CN (1) CN102722405B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104794172B (zh) * 2015-03-31 2018-09-11 北京奇艺世纪科技有限公司 一种数据处理方法和装置
CN105095423B (zh) * 2015-07-15 2018-10-09 北京奇虎科技有限公司 计数数据写入方法和装置
CN105426522A (zh) * 2015-12-07 2016-03-23 浪潮(北京)电子信息产业有限公司 一种文件系统性能统计方法与系统
CN106407040B (zh) * 2016-09-05 2019-05-24 华为技术有限公司 一种远程数据复制方法及系统
CN106326499B (zh) * 2016-10-14 2019-10-18 广州市千钧网络科技有限公司 一种数据处理方法及装置
CN108021597B (zh) * 2016-10-28 2022-02-08 阿里巴巴集团控股有限公司 一种并行计数器、服务器和一种计数方法
CN108614740A (zh) * 2016-12-12 2018-10-02 上海美桔网络科技有限公司 基于进程间共享内存方式生成唯一id的方法及系统
CN107894921A (zh) * 2017-11-09 2018-04-10 郑州云海信息技术有限公司 一种分布式块存储卷性能统计的实现方法及系统
CN112650913A (zh) * 2020-12-30 2021-04-13 福建福诺移动通信技术有限公司 一种应对大数据高并发计数场景的计数方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101082928A (zh) * 2007-06-25 2007-12-05 腾讯科技(深圳)有限公司 一种数据库访问的方法及数据库映射系统
CN101739412A (zh) * 2008-11-18 2010-06-16 爱思开电讯投资(中国)有限公司 用于智能卡的网页安全评估装置和方法
CN101923577A (zh) * 2010-09-02 2010-12-22 北京开心人信息技术有限公司 一种可扩展的计数方法与系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101192989B (zh) * 2006-12-01 2011-10-19 阿里巴巴集团控股有限公司 一种更新网页点击数的方法及装置
CN101043443B (zh) * 2007-03-16 2011-10-19 程飞 私网穿越网络教育培训底层软交换平台系统及软交换方法
CN101986649B (zh) * 2010-11-29 2014-01-15 深圳天源迪科信息技术股份有限公司 应用于电信行业计费系统的共享数据中心
CN102291416B (zh) * 2011-09-14 2015-09-30 成都软智科技有限公司 一种客户端与服务器端双向同步的方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101082928A (zh) * 2007-06-25 2007-12-05 腾讯科技(深圳)有限公司 一种数据库访问的方法及数据库映射系统
CN101739412A (zh) * 2008-11-18 2010-06-16 爱思开电讯投资(中国)有限公司 用于智能卡的网页安全评估装置和方法
CN101923577A (zh) * 2010-09-02 2010-12-22 北京开心人信息技术有限公司 一种可扩展的计数方法与系统

Also Published As

Publication number Publication date
CN102722405A (zh) 2012-10-10

Similar Documents

Publication Publication Date Title
CN102722405B (zh) 高并发、多线程应用中的计数方法及系统
TWI698108B (zh) 基於區塊鏈的資料處理方法和裝置
CN109643312B (zh) 托管查询服务
US10785322B2 (en) Server side data cache system
CN201682522U (zh) 会话信息存储系统及应用服务器
EP2663052B1 (en) API Platform That Includes Server-Executed Client-Based Code
US8832161B2 (en) Interface for extending functionality of memory cards
US8555018B1 (en) Techniques for storing data
TWI613555B (zh) 搜索方法和裝置
CN104283960B (zh) 实现异构网络存储的虚拟化整合及分级管理的系统
KR20200027413A (ko) 데이터 저장 방법, 장치 및 시스템
CN105144121A (zh) 高速缓存内容可寻址数据块以供存储虚拟化
US11429630B2 (en) Tiered storage for data processing
CN103209223A (zh) 分布式应用会话信息共享方法、系统和应用服务器
CN102307234A (zh) 基于移动终端的资源检索方法
CN104753966A (zh) 一种基于服务器和客户端缓存的资源文件查询方法及系统
CN104050248A (zh) 一种文件存储系统及存储方法
CN108200196B (zh) 基于分布式架构的数据储存、查询方法及系统
CN1952942A (zh) 用于数据存储服务器的自动虚拟化的设备、系统和方法
WO2016115957A1 (zh) 一种面向用户与应用的计算机与智能设备加速方法和装置
CN103530349A (zh) 一种缓存更新方法及设备
CN103164525A (zh) Web应用发布方法和装置
WO2021169298A1 (zh) 减少回源请求的方法、装置及计算机可读存储介质
CN103761102A (zh) 一种统一数据服务平台及其实现方法
CN103631820A (zh) 分布式文件系统的元数据管理方法及设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230418

Address after: Room 501-502, 5/F, Sina Headquarters Scientific Research Building, Block N-1 and N-2, Zhongguancun Software Park, Dongbei Wangxi Road, Haidian District, Beijing, 100193

Patentee after: Sina Technology (China) Co.,Ltd.

Address before: 100080, International Building, No. 58 West Fourth Ring Road, Haidian District, Beijing, 20 floor

Patentee before: Sina.com Technology (China) Co.,Ltd.