一种微博中网络资源的控制方法、装置和系统
技术领域
本发明涉及通信技术领域,具体涉及一种微博中网络资源的控制方法、装置和系统。
背景技术
在微博中,每个用户都有其相应的时间线(timeline),timeline能让用户更加直观地看到,我的这一刻在做什么,那一刻做过什么,页面清爽,表现形式特别,给人耳目一新的感觉。为了提高响应速度,目前在微博中,一般会将所有用户timeline的信息存放redis,redis是一个使用键值(key-value)的存储系统,它支持存储的值(value)类型相对较多,比如,可以包括字符串(string)、链表(list)、集合(set)、有序集合(zset,sorted set)和哈希类型(hashs),等等,性能相对较高。
一般的,平均每个用户的timeline占50K字节,也就是说,一台容量为64G的服务器最多支持80万的用户数。但是,实际上,随着用户的增加,用户数目将会远远超过80万,而当用户超过这个限定值时,就会出现资源竞争的情况,若竞争不到资源,则必然会降低其请求的响应速度。
在对现有技术的研究和实践过程中,本发明的发明人发现,现有方案的这种处理方式不够灵活,比如,可能会出现,免费用户响应速度及体验效果优于付费用户,等等。
发明内容
本发明实施例提供一种微博中网络资源的控制方法、装置和系统,可以对网络资源进行灵活控制和分配。
本发明实施例提供一种微博中网络资源的控制方法,包括:
获取各个用户时间线的各个功能点在第一存储模块中的缓存数阈值,所述第一存储模块用于为用户提供快速的时间线的信息的读取;
计算各个用户时间线的各个功能点在第一存储模块中的实际缓存数;
确定所述实际缓存数未超过所述缓存数阈值时,将相应的用户的时间线的信息写入第一存储模块;
确定所述实际缓存数超过所述缓存数阈值时,拒绝相应的用户的时间线的信息写入第一存储模块。
在第一种可能的实施方式中,结合第一方面,所述获取各个用户时间线的各个功能点的缓存数阈值之前,还包括:
设定每个用户时间线的各个功能点的缓存数阈值。
相应的,本发明实施例还提供一种微博中网络资源的控制装置,包括获取单元、运算单元、写入单元和拒绝单元;
获取单元,用于获取各个用户时间线的各个功能点在第一存储模块中的缓存数阈值,所述第一存储模块用于为用户提供快速的时间线的信息的读取;
运算单元,用于计算各个用户时间线的各个功能点在第一存储模块中的实际缓存数;
写入单元,用于确定所述实际缓存数未超过所述缓存数阈值时,将相应的用户的时间线的信息写入第一存储模块;
拒绝单元,用于确定所述实际缓存数超过所述缓存数阈值时,拒绝相应的用户的时间线的信息写入第一存储模块。
此外,相应的,本发明实施例还提供一种通信系统,包括本发明实施例提供的任一种微博中网络资源的控制装置。
本发明实施例采用获取各个用户时间线的各个功能点在第一存储模块中的缓存数阈值,其中,该第一存储模块用于为用户提供快速的时间线的信息的读取,计算各个用户时间线的各个功能点在第一存储模块中的实际缓存数,如果该实际缓存数未超过缓存数阈值,则可以将相应的用户的时间线的信息写入第一存储模块,否则,如果实际缓存数超过该缓存数阈值,则拒绝相应的用户的时间线的信息写入第一存储模块;由于在该方案中,可以根据用户时间线的各个功能点在第一存储模块中的缓存数阈值,来控制第一存储模块中缓存情况,避免某些用户占用过多的网络资源(即缓存数)而导致另一些用户分配不到相应的网络资源的情况,也就是说,采用该方案可以对网络资源进行灵活控制和分配。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的微博中网络资源的控制方法的流程图;
图2a是本发明实施例中应用服务器的结构示意图;
图2b是本发明实施例提供的微博中网络资源的控制方法的另一流程图;
图2c是本发明实施例提供的微博中网络资源的控制方法的又一流程图;
图3是本发明实施例提供的微博中网络资源的控制装置的结构示意图;
图4是本发明实施例提供的服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种微博中网络资源的控制方法、装置和系统。以下分别进行详细说明。
实施例一、
本实施例将从微博中网络资源的控制装置的角度进行描述,该微博中网络资源的控制装置具体可以集成在应用服务器中,比如微博的服务器,等等。
一种微博中网络资源的控制方法,包括:获取各个用户时间线的各个功能点在第一存储模块中的缓存数阈值,其中,该第一存储模块用于为用户提供快速的时间线的信息的读取;计算各个用户时间线的各个功能点在第一存储模块中的实际缓存数;确定该实际缓存数未超过该缓存数阈值时,将相应的用户的时间线的信息写入第一存储模块;确定该实际缓存数超过该缓存数阈值时,拒绝相应的用户的时间线的信息写入第一存储模块。
如图1所示,具体流程可以如下:
101、获取各个用户时间线的各个功能点在第一存储模块中的缓存数阈值。
其中,第一存储模块用于为用户提供快速的时间线的信息的读取,即该第一存储模块主要用于缓存用户时间线的信息。
例如,该第一存储模块具体可以为多种形式的存储系统,比如可以是redis,redis是一个使用键值(key-value)的存储系统,它支持存储的值(value)类型相对较多,比如,可以包括字符串(string)、链表(list)、集合(set)、有序集合(zset,sorted set)和哈希类型(hashs),等等,性能相对较高。
需说明的是,除此之外,该网络资源的控制装置还包括第二存储模块,用于为用户提供常规的时间线的信息的读取,即该第二存储模块主要用于存储用户时间线的信息的实际数据。其中,第一存储模块的性能优于第二存储模块。
例如,该第二存储模块具体可以为多种形式的存储系统,比如可以是为mongodb,该mongodb是一个基于分布式文件存储的数据库。
其中,各个用户时间线的各个功能点在第一存储模块中的缓存数阈值可以根据实际应用的需求进行设置,即在获取各个用户时间线的各个功能点的缓存数阈值之前,该微博中网络资源的控制方法还包括:
设定每个用户时间线的各个功能点的缓存数阈值,其中,设定的策略可以有多种,例如,可以根据用户使用微博的行为和用户的服务级别(即时间线级别(timeline grade))设定每个用户时间线的各个功能点的缓存数阈值,具体如下:
(1)对用户使用微博的行为进行分析,以确定用户在时间线的各个功能点的热度值;
其中,功能点可以根据实际应用的需求进行设置,比如,可以是“公共”、“关注”、“热榜”和/或“收藏”等等。
(2)按照预置规则根据该热度值计算用户的积分;
其中,该预置规则可以根据实际应用的需求进行设置;在计算出用户的积分之后,还可以根据用户积分的高低对用户进行排序。
(3)根据计算得到的积分和用户的服务级别确定用户的缓存保护级别。
其中,不同的缓存保护级别对应着不同的缓存数阈值,具体的级别划分可以根据实际应用的需求灵活进行设置。
其中,用户的服务级别可以根据实际应用的需求进行设置,比如,设置付费的用户的服务级别较高,而免费的用户的服务级别较低,而付费的用户的服务级别中又可以根据实际付费的多少作进一步细分,付费较多的比付费较少的服务级别更高,等等,当然,该用户的服务级别还可以考虑其他的因素,比如用户在微博上的关注度和/或活跃度等等,在此不再赘述。
(4)根据每个用户所对应的缓存保护级别设定用户时间线的各个功能点的缓存数阈值。
102、计算各个用户时间线的各个功能点在第一存储模块中的实际缓存数。
例如,具体可以根据用户当前在微博上的行为来计算该用户时间线的各个功能点在第一存储模块中的实际缓存数,计算方式可以有多种,在此不再赘述。
103、确定步骤102中得到的实际缓存数未超过缓存数阈值时,将相应的用户的时间线的信息写入第一存储模块。
比如,确定步骤102中得到的实际缓存数未超过缓存数阈值时,将相应的用户的时间线的信息写入redis,这样,用户就可以从redis的缓存中快速读取到所需的时间线的信息。
104、确定步骤102中得到的实际缓存数超过缓存数阈值时,拒绝相应的用户的时间线的信息写入第一存储模块。
比如,确定步骤102中得到的实际缓存数超过缓存数阈值时,拒绝相应的用户的时间线的信息写入redis,这样,用户就无法从redis的缓存中快速读取到所需的时间线的信息,而只能通过常规的获取方法来读取所需的时间线的信息,比如,从mongodb中来获取该时间线的信息,等等。
此外,该微博中网络资源的控制方法还包括对用户的时间线的信息的读取,具体可以如下:
确定第一存储模块中是否存在用户的时间线的信息,若是,则从第一存储模块,比如redis中获取该用户的时间线的信息,若否,则从第二存储模块,比如mongodb中获取所述用户的时间线的信息。
此外,还可以定时扫描第一存储模块,在确定第一存储模块的总缓存数超过预置阈值时,清除第一存储模块中服务级别较低的用户所对应的缓存,从而优先保证高服务级别的用户的请求响应速度,提高服务级别的用户的用户体验。
其中,该预置阈值可以根据实际应用的需求进行设置,在此不再赘述。
另外,在清除服务级别较低的用户所对应的缓存之后,由于第一存储模块中的缓存分配情况发生了变化,所以,此时还可以重新设置各个用户的缓存数阈值,即更新各个用户的缓存数阈值,以便后续可以根据该更新后的各个用户的缓存数阈值重新确定网络资源的分配。
由上可知,本实施例采用获取各个用户时间线的各个功能点在第一存储模块中的缓存数阈值,其中,该第一存储模块用于为用户提供快速的时间线的信息的读取,计算各个用户时间线的各个功能点在第一存储模块中的实际缓存数,如果该实际缓存数未超过缓存数阈值,则可以将相应的用户的时间线的信息写入第一存储模块,否则,如果实际缓存数超过该缓存数阈值,则拒绝相应的用户的时间线的信息写入第一存储模块;由于在该方案中,可以根据用户时间线的各个功能点在第一存储模块中的缓存数阈值,来控制第一存储模块中缓存情况,避免某些用户占用过多的网络资源(即缓存数)而导致另一些用户分配不到相应的网络资源的情况,也就是说,采用该方案可以对网络资源进行灵活控制和分配。
实施例二、
根据实施例一所描述的方法,以下将举例作进一步详细说明。
在本实施例中,将以该微博中网络资源的控制具体集成在应用服务器中,且第一存储模块具体为redis,第二存储模块具体为mongodb为例进行说明。
如图2a所示,该应用服务器包括时间线应用程序编程接口(timeline API,timeline Application Programming Interface)、用户服务模块(User Service)、业务服务模块(Business Service)、时间线服务模块(timeline Service)、时间线高速缓冲存储器(timeline Cache)、时间线数据库模块(timelineDB)、redis、mongodb和缓存监控服务模块(monitor Cache Service);此外,该应用服务器还可以包括时间线设置服务模块(timeline Setting Service),其中,为了描述方便,图2a省略了时间线设置服务模块。以下将对这些模块的具体功能进行详细说明,如下:
(1)时间线应用程序编程接口(timeline API);
时间线应用程序编程接口是对外服务开放的接口,用于调用业务服务模块,以获取业务相关数据,以及根据业务相关数据调用用户服务模块,以获取与该业务对应的用户相关数据,比如获取有关用户使用微博的行为的数据和用户的服务级别等。
(2)用户服务模块(User Service);
用户服务模块用于在被时间线应用程序编程接口调用时,提供用户相关数据,比如有关用户使用微博的行为的数据和用户的服务级别等给时间线应用程序编程接口。
(3)业务服务模块(Business Service);
业务服务模块用于在被时间线应用程序编程接口调用时,提供相关的业务数据给时间线应用程序编程接口。
(4)时间线服务模块(timeline Service);
时间线服务模块用于从时间线设置服务模块获取各种设置信息,比如获取每个用户时间线的各个功能点的缓存数阈值,并根据时间线应用程序编程接口获取到的用户相关数据计算各个用户时间线的各个功能点在第一存储模块中的实际缓存数,然后根据该每个用户时间线的各个功能点的缓存数阈值和计算出的实际缓存数确定对相应的用户是采用redis方式还是采用mongodb方式,比如,如果实际缓存数未超过缓存数阈值,则将相应的用户时间线的信息写入redis,反之,则拒绝将相应的用户时间线的信息写入redis,而是直接写入mongodb。
(5)时间线高速缓冲存储器(timeline Cache);
时间线高速缓冲存储器,用于将相应的用户时间线的信息写入redis。
(6)时间线数据库模块(timelineDB);
时间线数据库模块,用于将相应的用户时间线的信息写入mongodb。
(7)redis;
redis用于接收时间线高速缓冲存储器写入的用户时间线的信息。
(8)mongodb;
mongodb用于接收时间线数据库模块写入的用户时间线的信息。
(9)缓存监控服务模块(monitor Cache Service);
用于定时扫描redis,以确定redis的总缓存数超过预置阈值,如果超过预置阈值,清除第一存储模块中服务级别较低的用户所对应的缓存,直至redis留有相应的资源。
(10)时间线设置服务模块(timeline Setting Service);
时间线设置服务模块,主要用于完成各种设置,比如,可以用于根据实际应用的需求将时间线分拆成多个功能点,比如公共、关注、热榜和收藏等等;以及根据用户服务模块提供的用户相关数据和业务服务模块提供的业务相关数据确定每个用户时间线的各个功能点的缓存数阈值,并设置用户的缓存数阈值。
例如,可以对用户使用微博的行为进行分析,以确定用户在时间线的各个功能点的热度值,并按照预置规则根据该热度值计算用户的积分,然后,根据计算得到的积分和用户的服务级别确定用户的缓存保护级别,并根据每个用户所对应的缓存保护级别设定用户时间线的各个功能点的缓存数阈值,等等。
基于上述应用服务器的结构,以下将对其执行流程进行详细说明。
如图2b所示,一种微博中网络资源的控制方法,具体流程可以如下:
A201、时间线设置服务模块设定每个用户时间线的各个功能点在redis中的缓存数阈值。
其中,设定的策略可以有多种,例如,可以根据用户使用微博的行为和用户的服务级别(即时间线级别(timeline grade))设定每个用户时间线的各个功能点的缓存数阈值,具体如下:
时间线设置服务模块从业务服务模块获取业务相关数据,并根据该业务相关数据从用户服务模块获取用户相关数据,根据该用户相关数据对用户使用微博的行为进行分析,以确定用户在时间线的各个功能点的热度值,并按照预置规则根据该热度值计算用户的积分,然后,根据计算得到的积分和用户的服务级别确定用户的缓存保护级别,并根据每个用户所对应的缓存保护级别设定用户时间线的各个功能点在redis中的缓存数阈值。
其中,功能点可以根据实际应用的需求进行设置,比如,可以是“公共”、“关注”、“热榜”和/或“收藏”等等。
用户的服务级别也可以根据实际应用的需求进行设置,比如,设置付费的用户的服务级别较高,而免费的用户的服务级别较低,而付费的用户的服务级别中又可以根据实际付费的多少作进一步细分,付费较多的比付费较少的服务级别更高,等等,当然,该用户的服务级别还可以考虑其他的因素,比如用户在微博上的关注度和/或活跃度等等,在此不再赘述。
此外,预置规则也可以根据实际应用的需求进行设置,另外,在计算出用户的积分之后,还可以根据用户积分的高低对用户进行排序。
A202、时间线服务模块从时间线设置服务模块中获取各个用户时间线的各个功能点在redis中的缓存数阈值。
A203、时间线服务模块计算各个用户时间线的各个功能点在redis中的实际缓存数。例如,具体可以如下:
时间线服务模块根据时间线应用程序编程接口获取到的用户相关数据,比如关于用户当前在微博上的行为的数据计算各个用户时间线的各个功能点在redis中的实际缓存数。
A204、时间线服务模块确定步骤203中得到的实际缓存数是否超过缓存数阈值,若是,则确定不可以(即拒绝)将相应的用户的时间线的信息写入redis,于是执行步骤A206,若否,则确定可以将相应的用户的时间线的信息写入redis,于是执行步骤A205。
A205、若确定实际缓存数未超过缓存数阈值,则时间线服务模块将相应的用户的时间线的信息通过时间线高速缓冲存储器写入redis。
A206、若确定实际缓存数超过缓存数阈值,则时间线服务模块将相应的用户的时间线的信息通过时间线数据库模块写入mongodb。
此外,该微博中网络资源的控制方法还包括对用户的时间线的信息的读取,即如图2c所示,可以执行步骤B201~B204。
B201、时间线服务模块接收关于获取用户的时间线的信息的请求。
B202、时间线服务模块根据该关于获取用户的时间线的信息的请求确定redis是否存在用户的时间线的信息,若是,则执行步骤B203,若否,则执行步骤B204。
B203、若确定redis存在用户的时间线的信息,则时间线服务模块从redis中获取该用户的时间线的信息。
B204、若确定redis不存在用户的时间线的信息,则时间线服务模块从mongodb获取该用户的时间线的信息。
此外,还可以定时扫描redis,在确定redis的总缓存数超过预置阈值时,清除redis中服务级别较低的用户所对应的缓存,从而优先保证高服务级别的用户的请求响应速度,提高服务级别的用户的用户体验。
其中,该预置阈值可以根据实际应用的需求进行设置,在此不再赘述。
另外,在清除服务级别较低的用户所对应的缓存之后,由于redis中的缓存分配情况发生了变化,所以,此时还可以重新设置各个用户的缓存数阈值,即更新各个用户的缓存数阈值,以便后续可以根据该更新后的各个用户的缓存数阈值重新确定网络资源的分配。
由上可知,本实施例采用获取各个用户时间线的各个功能点在redis中的缓存数阈值,其中,该redis用于为用户提供快速的时间线的信息的读取,计算各个用户时间线的各个功能点在redis中的实际缓存数,如果该实际缓存数未超过缓存数阈值,则可以将相应的用户的时间线的信息写入redis,否则,如果实际缓存数超过该缓存数阈值,则拒绝相应的用户的时间线的信息写入redis;由于在该方案中,可以根据用户时间线的各个功能点在redis中的缓存数阈值,来控制redis中缓存情况,避免某些用户占用过多的网络资源(即缓存数)而导致另一些用户分配不到相应的网络资源的情况,比如,可以让付费的用户较免费的用户而言,得到更快的响应速度,得到更好的用户体验,等等,也就是说,采用该方案可以对网络资源进行灵活控制和分配。
实施例三、
为了更好地实施以上方法,本发明实施例还提供一种微博中网络资源的控制装置,如图3所示,该微博中网络资源的控制装置包括获取单元301、运算单元302、写入单元303和拒绝单元304。
获取单元301,用于获取各个用户时间线的各个功能点在第一存储模块中的缓存数阈值,所述第一存储模块用于为用户提供快速的时间线的信息的读取。
其中,第一存储模块用于为用户提供快速的时间线的信息的读取,即该第一存储模块主要用于缓存用户时间线的信息。
例如,该第一存储模块具体可以为多种形式的存储系统,比如可以是redis,redis是一个使用键值(key-value)的存储系统,它支持存储的值(value)类型相对较多,比如,可以包括字符串(string)、链表(list)、集合(set)、有序集合(zset,sorted set)和哈希类型(hashs),等等,性能相对较高。
需说明的是,除此之外,该网络资源的控制装置还包括第二存储模块,用于为用户提供常规的时间线的信息的读取,即该第二存储模块主要用于存储用户时间线的信息的实际数据。其中,第一存储模块的性能优于第二存储模块。
例如,该第二存储模块具体可以为多种形式的存储系统,比如可以是为mongodb,该mongodb是一个基于分布式文件存储的数据库。
运算单元302,用于计算各个用户时间线的各个功能点在第一存储模块中的实际缓存数。
例如,具体可以根据用户当前在微博上的行为来计算该用户时间线的各个功能点在第一存储模块中的实际缓存数,计算方式可以有多种,在此不再赘述。
写入单元303,用于确定实际缓存数未超过缓存数阈值时,将相应的用户的时间线的信息写入第一存储模块。
比如,写入单元303确定实际缓存数未超过缓存数阈值时,将相应的用户的时间线的信息写入redis,这样,用户就可以从redis的缓存中快速读取到所需的时间线的信息。
拒绝单元303,用于确定实际缓存数超过缓存数阈值时,拒绝相应的用户的时间线的信息写入第一存储模块。
比如,确定实际缓存数超过缓存数阈值时,拒绝相应的用户的时间线的信息写入redis,这样,用户就无法从redis的缓存中快速读取到所需的时间线的信息,而只能通过常规的获取方法来读取所需的时间线的信息,比如,从mongodb中来获取该时间线的信息,等等。
其中,各个用户时间线的各个功能点在第一存储模块中的缓存数阈值可以根据实际应用的需求进行设置,即微博中网络资源的控制装置还可以包括设置单元;
设置单元,用于设定每个用户时间线的各个功能点的缓存数阈值。
其中,设定的策略可以有多种,例如,可以根据用户使用微博的行为和用户的服务级别设定每个用户时间线的各个功能点的缓存数阈值,即可以如下:
设置单元,具体可以用于根据用户使用微博的行为和用户的服务级别设定每个用户时间线的各个功能点的缓存数阈值。例如,设置单元具体可以用于:
(1)对用户使用微博的行为进行分析,以确定用户在时间线的各个功能点的热度值;
其中,功能点可以根据实际应用的需求进行设置,比如,可以是“公共”、“关注”、“热榜”和/或“收藏”等等。
(2)按照预置规则根据该热度值计算用户的积分;
其中,该预置规则可以根据实际应用的需求进行设置;在计算出用户的积分之后,还可以根据用户积分的高低对用户进行排序。
(3)根据计算得到的积分和用户的服务级别确定用户的缓存保护级别。
其中,不同的缓存保护级别对应着不同的缓存数阈值,具体的级别划分可以根据实际应用的需求灵活进行设置。
其中,用户的服务级别可以根据实际应用的需求进行设置,比如,设置付费的用户的服务级别较高,而免费的用户的服务级别较低,而付费的用户的服务级别中又可以根据实际付费的多少作进一步细分,付费较多的比付费较少的服务级别更高,等等,当然,该用户的服务级别还可以考虑其他的因素,比如用户在微博上的关注度和/或活跃度等等,在此不再赘述。
(4)根据每个用户所对应的缓存保护级别设定用户时间线的各个功能点的缓存数阈值。
此外,该微博中网络资源的控制方法还包括对用户的时间线的信息的读取,即该微博中网络资源的控制装置还可以包括确定单元、第一读取单元和第二读取单元;
确定单元,用于确定第一存储模块中是否存在用户的时间线的信息;
第一读取单元,用于在确定单元确定第一存储模块中不存在用户的时间线的信息时,从第一存储模块如redis中获取该用户的时间线的信息;
第二读取单元,用于在确定单元确定第一存储模块中存在用户的时间线的信息时,从第二存储模块如mongodb中获取该用户的时间线的信息。
此外,还可以定时扫描第一存储模块,在确定第一存储模块的总缓存数超过预置阈值时,清除第一存储模块中服务级别较低的用户所对应的缓存,从而优先保证高服务级别的用户的请求响应速度,提高服务级别的用户的用户体验。即该微博中网络资源的控制装置还可以包括扫描单元和清除单元;
扫描单元,用于定时扫描第一存储模块;
清除单元,用于确定第一存储模块的总缓存数超过预置阈值时,清除第一存储模块中服务级别较低的用户所对应的缓存。
其中,该预置阈值可以根据实际应用的需求进行设置,在此不再赘述。
另外,在清除服务级别较低的用户所对应的缓存之后,由于第一存储模块中的缓存分配情况发生了变化,所以,此时还可以重新设置各个用户的缓存数阈值,即更新各个用户的缓存数阈值,以便后续可以根据该更新后的各个用户的缓存数阈值重新确定网络资源的分配。即该微博中网络资源的控制装置还可以包括更新单元;
更新单元,用于更新各个用户的缓存数阈值。
该微博中网络资源的控制装置具体可以集成在应用服务器中,比如微博的服务器,等等。
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
由上可知,本实施例的微博中网络资源的控制装置的获取单元301可以获取各个用户时间线的各个功能点在第一存储模块中的缓存数阈值,其中,该第一存储模块用于为用户提供快速的时间线的信息的读取,然后由运算单元302计算各个用户时间线的各个功能点在第一存储模块中的实际缓存数,如果该实际缓存数未超过缓存数阈值,则可以由写入单元303将相应的用户的时间线的信息写入第一存储模块,否则,如果实际缓存数超过该缓存数阈值,则由拒绝单元304拒绝相应的用户的时间线的信息写入第一存储模块;由于在该方案中,可以根据用户时间线的各个功能点在第一存储模块中的缓存数阈值,来控制第一存储模块中缓存情况,避免某些用户占用过多的网络资源(即缓存数)而导致另一些用户分配不到相应的网络资源的情况,比如,可以让付费的用户较免费的用户而言,得到更快的响应速度,得到更好的用户体验,等等;也就是说,采用该方案可以对网络资源进行灵活控制和分配。
实施例四、
相应的,本发明实施例还提供一种通信系统,包括本发明实施例提供的任一种微博中网络资源的控制装置,该微博中网络资源的控制装置具体可参见实施例三,例如,以该微博中网络资源的控制装置具体集成在应用服务器中为例,具体可以如下:
应用服务器,用于获取各个用户时间线的各个功能点在第一存储模块中的缓存数阈值,其中,该第一存储模块用于为用户提供快速的时间线的信息的读取;计算各个用户时间线的各个功能点在第一存储模块中的实际缓存数;确定该实际缓存数未超过该缓存数阈值时,将相应的用户的时间线的信息写入第一存储模块;确定该实际缓存数超过该缓存数阈值时,拒绝相应的用户的时间线的信息写入第一存储模块,具体可参见前面的实施例,在此不再赘述。
此外,该通信系统还可以包括其他的设备,比如还可以客户端设备等,如下:
客户端设备,可以用于接收用户的业务请求,并将该业务请求发送给应用服务器,以及接收应用服务器根据该业务请求返回的数据,等等。
以上各个设备的具体实施可参见前面的实施例,在此不再赘述。
由于该通信系统包括本发明实施例提供的任一种微博中网络资源的控制装置,因此可以实现本发明实施例提供的任一种微博中网络资源的控制装置所能实现的有益效果,前面实施例三,在此不再赘述。
实施例五、
本发明实施例还提供一种服务器,比如应用服务器,其中可以集成本发明实施例提供的微博中网络资源的控制装置,如图4所示,其示出了本发明实施例所涉及的服务器的结构示意图,具体来讲:
该服务器可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、射频(Radio Frequency,RF)电路403、无线通信模块如蓝牙模块和/或无线保真(WiFi,Wireless Fidelity)模块404等(图4中以WIFI模块404为例)、电源405、传感器406、输入单元407、以及显示单元408等部件。本领域技术人员可以理解,图4中示出的服务器结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器401是该服务器的控制中心,利用各种接口和线路连接整个服务器的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行服务器的各种功能和处理数据,从而对服务器进行整体监控。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
RF电路403可用于收发信息过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器401处理;另外,将涉及上行的数据发送给基站。通常,RF电路403包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、低噪声放大器(LNA,Low Noise Amplifier)、双工器等。此外,RF电路403还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(GSM,Global System of Mobilecommunication)、通用分组无线服务(GPRS,General Packet Radio Service)、码分多址(CDMA,Code Division Multiple Access)、宽带码分多址(WCDMA,Wideband CodeDivision Multiple Access)、长期演进(LTE,Long Term Evolution)、电子邮件、短消息服务(SMS,Short Messaging Service)等。
WiFi属于短距离无线传输技术,服务器通过WiFi模块404收发电子邮件和访问流式媒体等,它可以提供无线的宽带互联网访问。虽然图4示出了WiFi模块404,但是可以理解的是,其并不属于服务器的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
服务器还包括给各个部件供电的电源405(比如电池),优选的,电源可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源405还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该服务器还可包括至少一种传感器406,比如光传感器、运动传感器以及其他传感器。该服务器还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
该服务器还可包括输入单元407,该输入单元407可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元407可包括触敏表面以及其他输入设备。触敏表面,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面上或在触敏表面附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器401,并能接收处理器401发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面。除了触敏表面,输入单元407还可以包括其他输入设备。具体地,其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
该服务器还可包括显示单元408,该显示单元408可用于显示由用户输入的信息或提供给用户的信息以及服务器的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元408可包括显示面板,可选的,可以采用液晶显示器(LCD,Liquid Crystal Display)、有机发光二极管(OLED,Organic Light-EmittingDiode)等形式来配置显示面板。进一步的,触敏表面可覆盖显示面板,当触敏表面检测到在其上或附近的触摸操作后,传送给处理器401以确定触摸事件的类型,随后处理器401根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图4中,触敏表面与显示面板是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面与显示面板集成而实现输入和输出功能。
尽管未示出,服务器还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,服务器中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
获取各个用户时间线的各个功能点在第一存储模块中的缓存数阈值,其中,该第一存储模块用于为用户提供快速的时间线的信息的读取;计算各个用户时间线的各个功能点在第一存储模块中的实际缓存数;确定该实际缓存数未超过该缓存数阈值时,将相应的用户的时间线的信息写入第一存储模块;确定该实际缓存数超过该缓存数阈值时,拒绝相应的用户的时间线的信息写入第一存储模块。
其中,第一存储模块用于为用户提供快速的时间线的信息的读取,即该第一存储模块主要用于缓存用户时间线的信息。
例如,该第一存储模块具体可以为多种形式的存储系统,比如可以是redis,redis是一个使用键值(key-value)的存储系统,它支持存储的值(value)类型相对较多,比如,可以包括字符串(string)、链表(list)、集合(set)、有序集合(zset,sorted set)和哈希类型(hashs),等等,性能相对较高。
需说明的是,除此之外,该网络资源的控制装置还包括第二存储模块,用于为用户提供常规的时间线的信息的读取,即该第二存储模块主要用于存储用户时间线的信息的实际数据。其中,第一存储模块的性能优于第二存储模块。
例如,该第二存储模块具体可以为多种形式的存储系统,比如可以是为mongodb,该mongodb是一个基于分布式文件存储的数据库。
其中,各个用户时间线的各个功能点在第一存储模块中的缓存数阈值可以根据实际应用的需求进行设置,即在获取各个用户时间线的各个功能点的缓存数阈值之前,还可以执行如下操作:
设定每个用户时间线的各个功能点的缓存数阈值,其中,设定的策略可以有多种,例如,可以根据用户使用微博的行为和用户的服务级别(即时间线级别(timeline grade))设定每个用户时间线的各个功能点的缓存数阈值,具体如下:
(1)对用户使用微博的行为进行分析,以确定用户在时间线的各个功能点的热度值;
其中,功能点可以根据实际应用的需求进行设置,比如,可以是“公共”、“关注”、“热榜”和/或“收藏”等等。
(2)按照预置规则根据该热度值计算用户的积分;
其中,该预置规则可以根据实际应用的需求进行设置;在计算出用户的积分之后,还可以根据用户积分的高低对用户进行排序。
(3)根据计算得到的积分和用户的服务级别确定用户的缓存保护级别。
其中,不同的缓存保护级别对应着不同的缓存数阈值,具体的级别划分可以根据实际应用的需求灵活进行设置。
其中,用户的服务级别可以根据实际应用的需求进行设置,比如,设置付费的用户的服务级别较高,而免费的用户的服务级别较低,而付费的用户的服务级别中又可以根据实际付费的多少作进一步细分,付费较多的比付费较少的服务级别更高,等等,当然,该用户的服务级别还可以考虑其他的因素,比如用户在微博上的关注度和/或活跃度等等,在此不再赘述。
(4)根据每个用户所对应的缓存保护级别设定用户时间线的各个功能点的缓存数阈值。
此外,还包括对用户的时间线的信息的读取,具体可以如下:
确定第一存储模块中是否存在用户的时间线的信息,若是,则从第一存储模块,比如redis中获取该用户的时间线的信息,若否,则从第二存储模块,比如mongodb中获取所述用户的时间线的信息。
此外,还可以定时扫描第一存储模块,在确定第一存储模块的总缓存数超过预置阈值时,清除第一存储模块中服务级别较低的用户所对应的缓存,从而优先保证高服务级别的用户的请求响应速度,提高服务级别的用户的用户体验。
其中,该预置阈值可以根据实际应用的需求进行设置,在此不再赘述。
另外,在清除服务级别较低的用户所对应的缓存之后,由于第一存储模块中的缓存分配情况发生了变化,所以,此时还可以重新设置各个用户的缓存数阈值,即更新各个用户的缓存数阈值,以便后续可以根据该更新后的各个用户的缓存数阈值重新确定网络资源的分配。
由上可知,本实施例的服务器采用获取各个用户时间线的各个功能点在第一存储模块中的缓存数阈值,其中,该第一存储模块用于为用户提供快速的时间线的信息的读取,计算各个用户时间线的各个功能点在第一存储模块中的实际缓存数,如果该实际缓存数未超过缓存数阈值,则可以将相应的用户的时间线的信息写入第一存储模块,否则,如果实际缓存数超过该缓存数阈值,则拒绝相应的用户的时间线的信息写入第一存储模块;由于在该方案中,可以根据用户时间线的各个功能点在第一存储模块中的缓存数阈值,来控制第一存储模块中缓存情况,避免某些用户占用过多的网络资源(即缓存数)而导致另一些用户分配不到相应的网络资源的情况,也就是说,采用该方案可以对网络资源进行灵活控制和分配。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,RandomAccess Memory)、磁盘或光盘等。
以上对本发明实施例所提供的一种微博中网络资源的控制方法、装置和系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。