本发明涉及WEB网址架构领域,尤其涉及一种分布式服务器系统及数据处理方法。
背景技术:
随着互联网的飞速发展,特别是近年来随着社交网络、物联网、云计算以及多种传感器的广泛应用,以数量庞大,种类众多,时效性强为特征的非结构化数据不断涌现,传统的数据存储、分析技术难以实时处理大量的非结构化信息,大数据的概念应运而生。大数据具有以下特点:第一,数据体量巨大,全部数据保存,会按PB计算。第二,数据类型多样,数据类型不仅是文本形式,更多的是图片、视频、音频、地理位置信息等多类型的数据,个性化数据占绝对多数。第三,处理速度快,按秒级的获取数据。第四,价值密度低,预计在几TB的数据里,获取到有用的信息仅仅为几KB。
如何获取、聚集、分析大数据成为广泛关注的热点问题。在现行流行APP的环境下,用户的行为记录越来越被重视,现有保留用户行为采取了多种方法,包括PV,UV,IP以及用户详细的动作指令等都纷纷记录在数据库中。为大数据的分析,绘制用户行为及画像,提供了精确的数据基础。给运营人员精确转化真实用户带来了明确目标。
然而每天产生几百万,几千万,甚至几十亿的PV无疑对数据库造成了相当高的负载,而且,保存的数据过于单一。对于系统的稳定性和扩展性造成了极大的问题。此类数据的采集使用,又不像正常数据一样频繁经常被查询,更新使用。这时候就需要一种简单而实用的框架和数据库来满足这样的需求,能够海量保存数据,又能快速查找内容。
技术实现要素:
为了克服现有技术的不足,本发明的目的在于提供一种分布式服务器系统及数据处理方法,其能海量保存数据,又能快速查找内容。
本发明的目的采用以下技术方案实现:
一种分布式服务器系统,包括:
负载均衡服务器,接收用户请求,轮询多个WEB服务器并将接收到的用户请求转发给所述WEB服务器;
多个WEB服务器,与负载均衡服务器相连接,接收转发的用户请求,并根据请求的业务需求处理数据,并完对数据库进行读写操作;
数据库,与多个WEB服务器相连接,用于增删改查用户请求的各种数据。
优选的,还包括缓存数据库,所述缓存数据库与多个WEB服务器相连接,存储访问数据量超过预设访问值的数据。
优选的,所述WEB服务器中运行的应用程序包括Jsp层、Servlet层、Service impl层以及DAO impl层。
优选的,所述数据库包括MySQL读数据库、MySQL写数据库以及Mongon数据库。
优选的,所述Mongo数据库用于存储日志数据、行为记录数据,所述MySQL读数据库和MySQL写数据库存储其他信息。
另一方面,本发明还提供了一种基于分布式服务器系统的数据处理方法,其特征在于,包括以下步骤:
负载均衡服务器接收用户端的请求,轮询WEB服务器并用户请求转发给所述WEB服务器,所述WEB服务器上运行有WEB服务器上的Jsp层、Servlet层、Service impl层以及DAO impl层应用程序模块;
Service impl层对获取的请求数据进行处理;
DAO impl层根据Service impl层处理完毕的数据选择与数据相对应的数据库进行读写操作;
返回读写操作结果到Service impl层进行处理;
将处理完成的数据返回用户端。
优选的,所述对获取的请求数据进行处理包括:对获取的请求数据进行检验以及对检验完成的请求数据按逻辑进行归类处理。
优选的,所述数据库包括Mongo数据库、MySQL读数据库以及MySQL写数据库。
优选的,所述根据处理完毕的数据选择相适配的数据库进行读写操作,包括:日志数据、行为记录数据选择Mongo数据库进行读写操作,其他信息选择MySQL读数据库进行读操作和MySQL写数据库进行写操作。
优选的,所述返回读写操作完成的数据还包括将访问数量超过预设值的访问数据进行缓冲存储。
相比现有技术,本发明的有益效果在于:通过设置负载均衡服务器使后端WEB服务器负载均衡,通过WEB服务器分布式设置,使得可以并行处理请求,通过设置Mongo数据库,使得用户行为记录的数据访问速度更快。
附图说明
图1为本发明实施例中分布式服务器数据处理方法流程示意图;
图2为本发明实施例中分布式服务器超过预设访问来量的数据的处理方法流程示意图;
图3为分布式服务器系统的框架示意图;
图4为图3中WEB服务器上运行的应用程序模块示意图。
具体实施方式
下面,结合附图以及具体实施方式,对本发明做进一步描述:
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例一:
本发明实施例提供了一种分布式服务器处理方法,如图1所示,图1为本实施例中的分布式服务器处理方法流程示意图。在图1中,分布式服务器处理方法,包括:
步骤001:用户端发送请求。
用户通过在浏览器上输入网址,发送请求;或者进入网页进行操作,比如进入其他链接页面、登陆,查询等,发送请求。
步骤002:Nginx服务器接收请求。
Nginx服务器接收用户端发送的请求,按接收先后顺序依次先后进行缓冲存储。在本实施例中,Nginx服务器是优选的一种服务器,服务器也可以是其他起轮询转发功能的负载均衡服务器。
步骤003:Nginx服务器轮询转发到多个WEB服务器。
Nginx做反向代理,轮询服务器以起到负载均衡的作用。Nginx服务器将缓存的请求按序转发给多个WEB服务器,实现WEB服务器接收的请求数量均衡。比如请求数量为30个,WEB服务器为3个,将缓存的排序第1个请求转发给第1个WEB服务器,排序第2个请求转发给第2个WEB服务器,排序第3个请求转发给第3个WEB服务器,排序第4个请求转发给第1个WEB服务器……,如此轮询服务器。
步骤004:Servlet层获取参数数据。
Servlet层为运行在服务器上的应用程序模块,Servlet层响应转发过来的请求,对请求数据进行浏览,并进行解析,从而获取该请求的参数数据。
步骤005:Service impl层对获取的参数数据按需求业务进行逻辑归类处理。
Service impl层为运行在服务器上的应用程序模块,Service impl层对Servlet层获取的参数数据进行检验,检验数据格式、类型是否正确,并按需求业务逻辑进行归类处理,具体地归类处理为做相对应的MODE组装。
步骤006:DAO impl层根据处理完毕后的数据选择预设对应的数据库进行读写操作。
DAOimpl层为运行在服务器上的应用程序模块,DAO impl层根据Serviceimpl层处理完毕后的数据选择预设对应的数据库进行读写操作。通过对数据进行分类存储不同的数据库,读写日志数据、行为记录数据选择Mongo数据库,读写其他信息选择MySQL读数据库和MySQL写数据库。这样分库,MySQL数据库和Mongo数据库平行使用,给维护和数据访问带来了很大的便利。因为Mongo数据库是文档型的非关系型型据库,具有缓存机制,进行数据分片,完全满足通过SQL索引查询有关信息。其中读写操作具体为增删改查,增为讲MODE保存到数据库,删、查为根据MODE的ID或者其他要素进行查询数据库是否有这些要素的数据,并进行读取或删除。
步骤007:返回读写操作结果数据至Service impl层,Service impl层对操作结果数据进行处理。
读写完毕后,将写入成功与否的信息或读出查询的信息返回至Service impl层,Service impl层根据业务需求类型进行进行处理,处理完成返回用户端。
步骤008:对超过预设访问量的数据进行缓冲存储。
Service impl层对返回的操作数据进行判断,如为频繁访问的数据和一些基础数据,超过预设访问量的数据,则优先的,将此数据进行缓冲存储。
图2为超过预设访问来量的数据的请求方法流程图。请求方法步骤包括以下步骤:
步骤011:用户端发送请求。
用户通过在浏览器上输入网址,发送请求;或者进入网页进行操作,比如进入其他链接页面、登陆,查询等,发送请求。
步骤012:Nginx服务器接收请求。
Nginx服务器接收用户端发送的请求,按接收先后顺序依次先后进行缓冲存储。在本实施例中,Nginx服务器是优选的一种服务器,服务器也可以是其他起轮询转发功能的负载均衡服务器。
步骤013:Nginx服务器轮询转发到多个WEB服务器。
Nginx做反向代理,轮询服务器以起到负载均衡的作用。Nginx服务器将缓存的请求按序转发给多个WEB服务器,实现WEB服务器接收的请求数量均衡。比如请求数量为30个,WEB服务器为3个,将缓存的排序第1个请求转发给第1个WEB服务器,排序第2个请求转发给第2个WEB服务器,排序第3个请求转发给第3个WEB服务器,排序第4个请求转发给第1个WEB服务器……,如此轮询服务器。
步骤014:Servlet层获取参数数据。
Servlet层为运行在服务器上的应用程序模块,Servlet层响应转发过来的请求,对请求数据进行浏览,并进行解析,从而获取该请求的参数数据。
步骤015:Service impl层对获取的参数数据按需求业务进行逻辑归类处理。
Service impl层为运行在服务器上的应用程序模块,Service impl层对Servlet层获取的参数数据进行检验,检验数据格式、类型是否正确,并按需求业务逻辑进行归类处理,具体地归类处理为做相对应的MODE组装。
步骤016:读取缓存数据库服务器。
Service impl层判断该请求的参数数据为已经缓冲存储的数据,则直接从缓冲数据库读取数据信息。
步骤017:返回读取数据至Service impl业务处理层,Service impl层对读取数据进行处理。
将从缓冲数据库服务器读取的数据结果进行处理,处理完毕后返回用户端。
实施例二:
本发明实施例提供了一种分布式服务器系统,如图3所示,图3为本实施例中的分布式服务器系统框架示意图。在图3中,分布式服务器系统,包括:
Nginx服务器10,作为WEB服务器前置服务器,接收用户的请求,轮询转发请求给后端的3个WEB服务器,使后端的3个WEB服务器负载均衡,在这里Nginx服务器为优选的服务器,当然也可以是其他负载均衡服务器;
3个WEB服务器20,与Nginx服务器相连接,接收转发的用户请求,并根据请求的业务需求处理数据,并完对数据库进行读写操作;
每个WEB服务器含有运行于WEB服务器上的应用程序模块,应用程序模块包括Jsp页面层201、Servlet层202、Service impl层203、DAO impl层204。如图4所示,Jsp页面层为已经发布成功的固定模板网页,用户在Jsp页面层进行操作,并提交操作请求;Servlet层为获取数据层,对提交的Jsp页面层进行解析,获取参数数据;Service impl层为数据处理层,对获取的参数数据按提交的需求进行逻辑归类处理;DAO impl层为数据操作层,根据归类处理完毕的数据选择与数据对应的数据库进行增删改查操作。
数据库服务器30,与多个WEB服务器相连接,增删改查用户请求的各种数据。数据库包括MySQL数据库、Mongo数据库,其中MySQL数据库读写分离,分为MySQL读数据库、MySQL写数据库。
分布式服务器系统还包括缓存数据库,这里优选的为Redis数据库40,存储超过预设访问量的的数据或大量的基础数据。
本实施例中的系统与前述实施例一中的方法是基于同一发明构思下的两个方面,在前面已经对方法实施过程作了详细的描述,所以本领域技术人员可根据前述描述清楚地了解本实施中的系统的结构组成,为了说明书的简洁,在此就不再赘述。
下面针对使用Mongo数据库和不使用Mongo数据库的两种分布式服务器架构进行实验测试,具体测试设备部署如下:
测试一:不使用Mongo数据库的分布式服务器架构,架构为1台Nginx服务器、3台WEB服务器、Mysql数据库;
测试二:使用Mongo数据库的分布式服务器架构,架构为1台Nginx服务器、3台WEB服务器、Mysql数据库以及Mongo数据库;
测试结果如下表格:
测试一:
测试二:
测试一中:在用MySQL进行数据保存,在并发用户数300个,连续发请求的时候,MySQL的CPU占用就一直不变,也就是说IO已经到瓶颈了。后续来的请求占用连接池需要进行排队等候。因此处理速度就慢,占用资源也多。
测试二中:在Mongodb进行数据保存的时候,每秒的处理请求速度比MySQL保存时快的多,尤其在数据量增加时候,比如600用户并发,使用Mongo数据库时是使用MySQL数据库时速度的5倍。在MySQL和Mongo数据库同时平行使用,能够处理更多的数据。而且没有遇到很大的瓶颈。在并发量600的时候,仍然能处理大量请求,耗费的CPU资源处于缓慢上升趋势。这种平行减压的架构,就是能者多劳的模型。用MySQL数据库去处理重要的事物信息,而用Mongo数据库去处理采集存储数据的信息。这样的混合使用,使效果达到最佳。
对本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及形变,而所有的这些改变以及形变都应该属于本发明权利要求的保护范围之内。