一种分布式两级缓存的方法和系统
技术领域
本发明涉及数据读取技术领域,特别涉及一种分布式两级缓存的方法和系统。
背景技术
缓存技术是加快数据读取的一种常用技术,常常被用于各种各样的软件系统中,其作用是帮助系统更快地运行。目前的业务系统主要为分布式系统,其主要响应瓶颈在于数据库并发和网络带宽不足上。
目前广泛应用于解决数据库并发不足问题的方法是增加缓存,缓存的种类划分为内存缓存(如Ehcache),其特点响应速度快,效率高,但是缓存共享麻烦,集中式缓存(如mencached、redis),其特点可同时为多节点提供服务。
然而上述两种方式都存在问题,如:
当使用内存缓存时,一旦应用重启后,由于缓存数据丢失,缓存雪崩,给数据库造成巨大压力,导致应用堵塞,并且多个应用节点无法共享缓存数据。
当使用集中式缓存时,由于大量的数据通过缓存获取,导致缓存服务的数据吞吐量太大,带宽跑满。现象就是mencached、redis服务负载不高,但是由于机器网卡带宽跑满,导致数据读取非常慢。
发明内容
为此,需要提供一种分布式两级缓存的方法,用以解决现有缓存设置无法兼顾数据读取速度与缓存数据丢失、缓存雪崩、给数据库造成巨大压力、导致应用堵塞的问题。具体技术方案如下:
一种分布式两级缓存的方法,包括步骤:
第一业务服务器响应用户请求,所述第一业务服务器发送获取命名空间缓存请求至缓存服务器;
所述第一业务服务器上部署有第一本地内存缓存,所述缓存服务器上部署有集中式缓存;
判断所述缓存服务器中是否存在所述命名空间缓存,若所述缓存服务器中不存在所述命名空间缓存,则从数据库中获取数据,并将所述数据同步存储于所述第一本地内存缓存和所述集中式缓存;
若所述缓存服务器中存在所述命名空间缓存,则从所述第一本地内存缓存中获取数据,若从所述第一本地内存缓存中无法获取数据,则从所述集中式缓存中获取数据,并同步存储所述数据至所述第一本地内存缓存。
进一步的,还包括步骤:
第二业务服务器响应用户请求,所述第二业务服务器发送获取命名空间缓存请求至缓存服务器;
所述第二业务服务器上部署有第二本地内存缓存;
所述第二业务服务器从所述集中式缓存中获取到命名空间缓存,若所述第二业务服务器从所述第二本地内存缓存无法获取到数据,所述第二业务服务器请求所述集中式缓存获取数据,并同步存储所述数据于所述第二本地内存缓存。
进一步的,还包括步骤:
第一业务服务器响应更新数据请求命令,所述第一业务服务器请求所述集中式缓存变更集中式缓存中计数器缓存区版本号。
进一步的,还包括步骤:
所述第一业务服务器再次响应用户请求,判断所述集中式缓存中计数器缓存区版本号是否发生变更,若所述集中式缓存中计数器缓存区版本号未发生变更,所述第一业务服务器从所述第一本地内存缓存获取数据。
进一步的,还包括步骤:
第一业务服务器响应用户请求,判断所述集中式缓存中计数器缓存区版本号是否发生变更,若所述集中式缓存中计数器缓存区版本号发生变更,则从数据库中获取数据,并将所述数据同步存储于所述第一本地内存缓存和所述集中式缓存。
进一步的,还包括步骤:
第二业务服务器响应用户请求,判断所述集中式缓存中计数器缓存区版本号是否发生变更,若所述集中式缓存中计数器缓存区版本号发生变更,所述第二业务服务器请求所述集中式缓存获取数据,并同步存储所述数据于所述第二本地内存缓存。
进一步的,所述“业务服务器发送获取命名空间缓存请求至缓存服务器”,还包括步骤:
所述业务服务器根据缓存KEY向所述缓存服务器发送获取命名空间缓存请求;
所述缓存KEY的生成步骤如下:
获取缓存KEY内容,所述缓存KEY内容包括以下中的一种或多种:平台代码、命名空间、类名、命名空间版本号、系统生成KEY、自定义KEY;
对所述缓存KEY内容进行MD5处理并编码生成所述缓存KEY。
进一步的,
所述集中式缓存包括:计数器缓存区和数据缓存;
所述本地内存缓存数据存储格式为:[key,value],所述本地内存缓存中key格式为:平台/命名空间/类名的组合+获取到的版本号+自定义KEY,所述本地内存缓存中value存放数据;
所述计数器缓存区数据存储格式为:[key,value],所述计数器缓存区中key格式为:平台/命名空间/类名的组合,所述计数器缓存区中value存放版本号;
所述数据缓存数据存储格式为:[key,value],所述数据缓存中key格式为:平台/命名空间/类名的组合+获取到的版本号+自定义KEY,所述数据缓存中value存放数据。
为解决上述技术问题,还提供了一种分布式两级缓存的系统,具体技术方案如下:
一种分布式两级缓存的系统,包括:第一业务服务器和缓存服务器;
所述第一业务服务器上部署有第一本地内存缓存,所述缓存服务器上部署有集中式缓存;
所述第一业务服务器用于:响应用户请求,发送获取命名空间缓存请求至缓存服务器;判断所述缓存服务器中是否存在所述命名空间缓存,若所述缓存服务器中不存在所述命名空间缓存,则从数据库中获取数据,并将所述数据同步存储于所述第一本地内存缓存和所述集中式缓存;若所述缓存服务器中存在所述命名空间缓存,则从所述第一本地内存缓存中获取数据,若从所述第一本地内存缓存中无法获取数据,则从所述集中式缓存中获取数据,并同步存储所述数据至所述第一本地内存缓存。
进一步的,还包括:第二业务服务器;
所述第二业务服务器用于:响应用户请求,发送获取命名空间缓存请求至缓存服务器;所述第二业务服务器上部署有第二本地内存缓存;从所述集中式缓存中获取到命名空间缓存,若所述第二业务服务器从所述第二本地内存缓存无法获取到数据,所述第二业务服务器请求所述集中式缓存获取数据,并同步存储所述数据于所述第二本地内存缓存。
本发明的有益效果是:通过在第一业务服务器上部署第一本地内存缓存,在缓存服务器上部署集中式缓存;当第一业务服务器响应用户请求时,第一业务服务器发送获取命名空间缓存请求至缓存服务器;会去判断所述缓存服务器中是否存在所述命名空间缓存,如果缓存服务器中存在所述命名空间缓存,就会直接从第一本地内存缓存中获取数据,这大大加快数据的获取,而当从所述第一本地内存缓存中无法获取数据,则从所述集中式缓存中获取数据,并同步存储所述数据至所述第一本地内存缓存,同样无需到数据库获取数据,并且该集中式缓存内的数据当其他业务服务器进行请求时,均可以直接读取,大大提高并行处理能力。而当所述缓存服务器中不存在所述命名空间缓存,才需要从数据库中获取数据,同时会将所述数据同步存储于所述第一本地内存缓存和所述集中式缓存,这样当下次再响应用户请求时,就可以直接在第一本地内存缓存读取数据,无需对数据库进行请求,同时有其它业务服务器响应用户请求时,也可以直接从集中式缓存获取数据,同时可以将数据同步到自己对应的本地内存缓存,在下一次再响应用户请求时,也可以从各自对应的本地内存缓存中直接读取数据。大大提高了数据读取速度,同时可以为多个节点提供服务,也大大缓解了数据库的压力。
附图说明
图1为具体实施方式所述一种分布式两级缓存的方法的步骤流程图;
图2为具体实施方式所述实际业务场景中系统示意图;
图3为具体实施方式所述第一业务服务器和第二业务服务器响应用户请求的过程示意图;
图4为具体实施方式所述第一业务服务器数据更新后所述第一业务服务器和第二业务服务器响应用户请求的过程示意图;
图5为具体实施方式所述一种分布式两级缓存的系统的模块示意图;
图6为具体实施方式所述各缓存存放数据示意图。
附图标记说明:
500、一种分布式两级缓存的系统,
501、第一业务服务器,
502、缓存服务器,
5011、第一本地内存缓存,
5021、集中式缓存。
具体实施方式
为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。
请参阅图1至图4,在本实施方式中,一种分布式两级缓存的方法可应用在一种分布式两级缓存的系统,所述分布式两级缓存的系统包括:第一业务服务器和缓存服务器,所述第一业务服务器和缓存服务器间通信连接,所述第一业务服务器上部署有第一本地内存缓存,所述缓存服务器上部署有集中式缓存,需要说明的是,所述分布式两级缓存的系统可根据实际业务需要设置有第二业务服务器、第三业务服务器……等,每个业务服务器的功能是一样的,并无区分,且每个业务服务器都设置有对应的本地内存缓存,为了便于区分,可为第二业务服务器部署有第二本地内存缓存,第三业务服务器部署有第三本地内存缓存……等。在本实施方式中,优选以两个业务服务器和缓存服务器进行说明,在实际业务场景中,如图2所示:其中第一业务服务器对应业务系统A,第二业务服务器对应业务系统B,所述集中式缓存包括:计数器缓存区和数据缓存,即:在集中式缓存中特定划分出存储区域,作为计数器缓存区。此外,计数器缓存区只存储于集中式缓存中,未存储于本地内存缓存,如此可避免当集中式缓存中的计数器缓存区发生变更,而本地内存缓存中的计数器缓存没有及时同步变更,而造成的缓存数据不一致性的问题。其中所述本地内存缓存数据存储格式为:[key,value],所述本地内存缓存中key格式为:平台/命名空间/类名的组合+获取到的版本号+自定义KEY,所述本地内存缓存中value存放数据;
所述计数器缓存区数据存储格式为:[key,value],所述计数器缓存区中key格式为:平台/命名空间/类名的组合,所述计数器缓存区中value存放版本号;
所述数据缓存数据存储格式为:[key,value],所述数据缓存中key格式为:平台/命名空间/类名的组合+获取到的版本号+自定义KEY,所述数据缓存中value存放数据。具体可参阅图6。
数据获取的原理如下:首先,数据存储于数据库中,一旦访问业务系统后,数据会被存储于两个地方,即:存储于本地内存缓存和集中式缓存中,存储格式为[key:value]的形式,这个是缓存的特有存储功能,其中在集中式缓存中,会以特有的方式另外存储一份数据,即看到的缓存技术器空间,该空间存储的方式也是[key:value]的方式,但是存储的内容不是业务数据,而是数据缓存的key的一部分,存储的内容为版本号,系统通过该版本号来控制缓存是否可用。
具体的流程为:当用户访问业务系统,系统会通过[平台/命名空间/类名的组合]到集中式缓存获取版本号,如果获取不到,就建立一个版本号存储在集中式缓存中,第二步,本地内存缓存组合数据[平台/命名空间/类名的组合+版本号+自定义KEY]作为数据可以,并把数据存储在本地及集中式缓存中。用户第二次访问时,系统还是拿[平台/命名空间/类名的组合]到集中式缓存获取版本号,获取到版本号后,组合数据[平台/命名空间/类名的组合+版本号+自定义KEY]从本地数据获取数据。
具体实施可如下:
步骤S101:第一业务服务器响应用户请求,所述第一业务服务器发送获取命名空间缓存请求至缓存服务器;所述第一业务服务器上部署有第一本地内存缓存,所述缓存服务器上部署有集中式缓存。
步骤S102:所述缓存服务器中是否存在所述命名空间缓存?
步骤S103:从数据库中获取数据,并将所述数据同步存储于所述第一本地内存缓存和所述集中式缓存。
步骤S104:从所述第一本地内存缓存中获取数据。
步骤S105:若从所述第一本地内存缓存中无法获取数据,则从所述集中式缓存中获取数据,并同步存储所述数据至所述第一本地内存缓存。
首先需要说明的是,在本实施方式中,预设了请求规则。具体为:所述“业务服务器发送获取命名空间缓存请求至缓存服务器”,还包括步骤:所述业务服务器根据缓存KEY向所述缓存服务器发送获取命名空间缓存请求;所述缓存KEY的生成步骤如下:获取缓存KEY内容,所述缓存KEY内容包括以下中的一种或多种:平台代码、命名空间、类名、命名空间版本号、系统生成KEY、自定义KEY;对所述缓存KEY内容进行MD5处理并编码生成所述缓存KEY。具体可如下:
首先制定KEY的生成规则为:平台代码+命名空间+类名+命名空间版本号+系统生成KEY/自定义KEY的组合,同时经过MD5处理(KEY长度太长会有问题,所以需要MD5处理)再编码作为缓存KEY。其中引入命名空间(nameSpace)概念,只要对命名空间的版本号进行管理,达到批量清除缓存的目的;对于需要清除的缓存只要对命名空间版本号进行增加或变更,根据KEY的生成规则,命名空间版本号发生变化缓存就获取不到(即缓存被穿透),最后垃圾缓存根据时间或LUA自动清除;其次缓存命名空间计数存于集中式缓存中,数据缓存分布存于集中式缓存及本地ehcache缓存中。
在本实施方式中,优选第一业务服务器以[平台/命名空间/类名的组合]到集中式缓存中获取版本号。
以下结合图3和图4展开具体说明:
业务系统A设置有第一业务服务器,业务系统B设置有第二业务服务器,缓存系统设置有缓存服务器,所述缓存服务器上部署有集中式缓存。
用户向业务系统A发起请求,第一业务服务器响应用户请求,所述第一业务服务器发送获取命名空间缓存请求至缓存服务器,判断所述缓存服务器中是否存在所述命名空间缓存,若所述缓存服务器中不存在所述命名空间缓存,则穿透缓存,从数据库中获取数据,并将所述数据同步存储于所述第一本地内存缓存和所述集中式缓存。
其中将所述数据存储于所述集中式缓存还包括步骤:建立一个版本号存储在集中式缓存中,并把JSON序列化存入集中式缓存中。
如此,当业务系统A再次响应用户请求时,会直接从所述第一本地内存缓存获取数据发送给用户。
而若所述缓存服务器中存在所述命名空间缓存,则从所述第一本地内存缓存中获取数据,若从所述第一本地内存缓存中无法获取数据,则从所述集中式缓存中获取数据,并同步存储所述数据至所述第一本地内存缓存。
将数据同步到缓存系统的好处在于,当:
第二业务服务器响应用户请求,所述第二业务服务器发送获取命名空间缓存请求至缓存服务器;所述第二业务服务器上部署有第二本地内存缓存;所述第二业务服务器从所述集中式缓存中获取到命名空间缓存,若所述第二业务服务器从所述第二本地内存缓存无法获取到数据,所述第二业务服务器请求所述集中式缓存获取数据,并同步存储所述数据于所述第二本地内存缓存。
即:第二业务服务器可直接从缓存系统中获取数据。同理,其它的业务服务器亦可以从缓存系统中直接获取数据,并且会将数据存入对应的本地内存缓存中。这样当再次响应用户请求时,就可以直接从本地的内存缓存中获取数据,大大加快速度。
通过在第一业务服务器上部署第一本地内存缓存,在缓存服务器上部署集中式缓存;当第一业务服务器响应用户请求时,第一业务服务器发送获取命名空间缓存请求至缓存服务器;会去判断所述缓存服务器中是否存在所述命名空间缓存,如果缓存服务器中存在所述命名空间缓存,就会直接从第一本地内存缓存中获取数据,这大大加快数据的获取,而当从所述第一本地内存缓存中无法获取数据,则从所述集中式缓存中获取数据,并同步存储所述数据至所述第一本地内存缓存,同样无需到数据库获取数据,并且该集中式缓存内的数据当其他业务服务器进行请求时,均可以直接读取,大大提高并行处理能力。而当所述缓存服务器中不存在所述命名空间缓存,才需要从数据库中获取数据,同时会将所述数据同步存储于所述第一本地内存缓存和所述集中式缓存,这样当下次再响应用户请求时,就可以直接在第一本地内存缓存读取数据,无需对数据库进行请求,同时有其它业务服务器响应用户请求时,也可以直接从集中式缓存获取数据,同时可以将数据同步到自己对应的本地内存缓存,在下一次再响应用户请求时,也可以从各自对应的本地内存缓存中直接读取数据。大大提高了数据读取速度,同时可以为多个节点提供服务,也大大缓解了数据库的压力。
请参阅图4,当有管理员通过业务系统A后台更新数据时,还包括步骤:第一业务服务器响应更新数据请求命令,所述第一业务服务器请求所述集中式缓存变更集中式缓存中计数器缓存区版本号。在本实施方式中,优选为集中式缓存中计数器缓存区版本号增加。
因为集中式缓存中计数器缓存区版本号发生变更,当用户再次请求业务系统A时,若所述集中式缓存中计数器缓存区版本号发生变更,则从数据库中获取数据,并将所述数据同步存储于所述第一本地内存缓存和所述集中式缓存。因为集中式缓存中计数器缓存区版本号发生变更,故此根据旧有的版本号无法从第一本地内存缓存与集中式缓存中获取到数据。故需再次从数据库中获取数据,并将所述数据同步存储于所述第一本地内存缓存和所述集中式缓存。
若所述集中式缓存中计数器缓存区版本号未发生变更,则所述第一业务服务器直接从所述第一本地内存缓存获取数据。
同样,此时当第二业务服务器响应用户请求,判断所述集中式缓存中计数器缓存区版本号是否发生变更,若所述集中式缓存中计数器缓存区版本号发生变更,所述第二业务服务器直接请求所述集中式缓存获取数据(因为在此之前第一业务服务器响应完用户请求后,已经将数据同步到了集中式缓存中,故此第二业务服务器可直接从所述集中式缓存中获取数据,无需去数据库获取数据),并同步存储所述数据于所述第二本地内存缓存。
请参阅图5,在本实施方式中,一种分布式两级缓存的系统500的具体实施方式如下:
一种分布式两级缓存的系统500,包括:第一业务服务器501和缓存服务器502;
所述第一业务服务器501上部署有第一本地内存缓存5011,所述缓存服务器502上部署有集中式缓存5021;
所述第一业务服务器501用于:响应用户请求,发送获取命名空间缓存请求至缓存服务器502;判断所述缓存服务器502中是否存在所述命名空间缓存,若所述缓存服务器502中不存在所述命名空间缓存,则从数据库中获取数据,并将所述数据同步存储于所述第一本地内存缓存5011和所述集中式缓存5021;若所述缓存服务器502中存在所述命名空间缓存,则从所述第一本地内存缓存5011中获取数据,若从所述第一本地内存缓存5011中无法获取数据,则从所述集中式缓存5021中获取数据,并同步存储所述数据至所述第一本地内存缓存5011。
首先需要说明的是,在本实施方式中,预设了请求规则。具体为:所述“业务服务器发送获取命名空间缓存请求至缓存服务器502”,还包括步骤:所述业务服务器根据缓存KEY向所述缓存服务器502发送获取命名空间缓存请求;所述缓存KEY的生成步骤如下:获取缓存KEY内容,所述缓存KEY内容包括以下中的一种或多种:平台代码、命名空间、类名、命名空间版本号、系统生成KEY、自定义KEY;对所述缓存KEY内容进行MD5处理并编码生成所述缓存KEY。具体可如下:
首先制定KEY的生成规则为:平台代码+命名空间+类名+命名空间版本号+系统生成KEY/自定义KEY的组合,同时经过MD5处理(KEY长度太长会有问题,所以需要MD5处理)再编码作为缓存KEY。其中引入命名空间(nameSpace)概念,只要对命名空间的版本号进行管理,达到批量清除缓存的目的;对于需要清除的缓存只要对命名空间版本号进行增加或变更,根据KEY的生成规则,命名空间版本号发生变化缓存就获取不到(即缓存被穿透),最后垃圾缓存根据时间或LUA自动清除;其次缓存命名空间计数存于集中式缓存5021中,数据缓存分布存于集中式缓存5021及本地ehcache缓存中。
在本实施方式中,优选第一业务服务器501以[平台/命名空间/类名的组合]到集中式缓存5021中获取版本号。
以下结合图3和图4展开具体说明:
业务系统A设置有第一业务服务器501,业务系统B设置有第二业务服务器,缓存系统设置有缓存服务器502,所述缓存服务器502上部署有集中式缓存5021。
用户向业务系统A发起请求,第一业务服务器501响应用户请求,所述第一业务服务器501发送获取命名空间缓存请求至缓存服务器502,判断所述缓存服务器502中是否存在所述命名空间缓存,若所述缓存服务器502中不存在所述命名空间缓存,则穿透缓存,从数据库中获取数据,并将所述数据同步存储于所述第一本地内存缓存5011和所述集中式缓存5021。
其中将所述数据存储于所述集中式缓存5021还包括步骤:建立一个版本号存储在集中式缓存中,并把JSON序列化存入集中式缓存中。
如此,当业务系统A再次响应用户请求时,会直接从所述第一本地内存缓存5011获取数据发送给用户。
而若所述缓存服务器502中存在所述命名空间缓存,则从所述第一本地内存缓存5011中获取数据,若从所述第一本地内存缓存5011中无法获取数据,则从所述集中式缓存5021中获取数据,并同步存储所述数据至所述第一本地内存缓存5011。
将数据同步到缓存系统的好处在于,当:
第二业务服务器响应用户请求,所述第二业务服务器发送获取命名空间缓存请求至缓存服务器502;所述第二业务服务器上部署有第二本地内存缓存;所述第二业务服务器从所述集中式缓存5021中获取到命名空间缓存,若所述第二业务服务器从所述第二本地内存缓存无法获取到数据,所述第二业务服务器请求所述集中式缓存5021获取数据,并同步存储所述数据于所述第二本地内存缓存。
即:第二业务服务器可直接从缓存系统中获取数据。同理,其它的业务服务器亦可以从缓存系统中直接获取数据,并且会将数据存入对应的本地内存缓存中。这样当再次响应用户请求时,就可以直接从本地的内存缓存中获取数据,大大加快速度。
通过在第一业务服务器501上部署第一本地内存缓存5011,在缓存服务器502上部署集中式缓存5021;当第一业务服务器501响应用户请求时,第一业务服务器501发送获取命名空间缓存请求至缓存服务器502;会去判断所述缓存服务器502中是否存在所述命名空间缓存,如果缓存服务器502中存在所述命名空间缓存,就会直接从第一本地内存缓存5011中获取数据,这大大加快数据的获取,而当从所述第一本地内存缓存5011中无法获取数据,则从所述集中式缓存5021中获取数据,并同步存储所述数据至所述第一本地内存缓存5011,同样无需到数据库获取数据,并且该集中式缓存5021内的数据当其他业务服务器进行请求时,均可以直接读取,大大提高并行处理能力。而当所述缓存服务器502中不存在所述命名空间缓存,才需要从数据库中获取数据,同时会将所述数据同步存储于所述第一本地内存缓存5011和所述集中式缓存5021,这样当下次再响应用户请求时,就可以直接在第一本地内存缓存5011读取数据,无需对数据库进行请求,同时有其它业务服务器响应用户请求时,也可以直接从集中式缓存5021获取数据,同时可以将数据同步到自己对应的本地内存缓存,在下一次再响应用户请求时,也可以从各自对应的本地内存缓存中直接读取数据。大大提高了数据读取速度,同时可以为多个节点提供服务,也大大缓解了数据库的压力。
请参阅图4,当有管理员通过业务系统A后台更新数据时,还包括步骤:第一业务服务器501响应更新数据请求命令,所述第一业务服务器501请求所述集中式缓存5021变更集中式缓存5021中计数器缓存区版本号。在本实施方式中,优选为集中式缓存5021中计数器缓存区版本号增加。
因为集中式缓存5021中计数器缓存区版本号发生变更,当用户再次请求业务系统A时,若所述集中式缓存5021中计数器缓存区版本号发生变更,则从数据库中获取数据,并将所述数据同步存储于所述第一本地内存缓存5011和所述集中式缓存5021。因为集中式缓存5021中计数器缓存区版本号发生变更,故此根据旧有的版本号无法从第一本地内存缓存5011与集中式缓存5021中获取到数据。故需再次从数据库中获取数据,并将所述数据同步存储于所述第一本地内存缓存5011和所述集中式缓存5021。
若所述集中式缓存5021中计数器缓存区版本号未发生变更,则所述第一业务服务器501直接从所述第一本地内存缓存5011获取数据。
同样,此时当第二业务服务器响应用户请求,判断所述集中式缓存5021中计数器缓存区版本号是否发生变更,若所述集中式缓存5021中计数器缓存区版本号发生变更,所述第二业务服务器直接请求所述集中式缓存5021获取数据(因为在此之前第一业务服务器501响应完用户请求后,已经将数据同步到了集中式缓存5021中,故此第二业务服务器可直接从所述集中式缓存5021中获取数据,无需去数据库获取数据),并同步存储所述数据于所述第二本地内存缓存。
需要说明的是,尽管在本文中已经对上述各实施例进行了描述,但并非因此限制本发明的专利保护范围。因此,基于本发明的创新理念,对本文所述实施例进行的变更和修改,或利用本发明说明书及附图内容所作的等效结构或等效流程变换,直接或间接地将以上技术方案运用在其他相关的技术领域,均包括在本发明的专利保护范围之内。