分布式大数据高并发的web开发框架
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分布式大数据高并发的web开发框架
作者:一灯
一、引言
通常我们认为静态网页html的网站速度是最快的,但是自从有了动态网页之后,很多交互数据都从数据库查询而来,数据也是经常变化的,除了一些新闻资讯类的网站,使用html静态化来提高访问速度是不太现实的方案。我们不得不在代码与数据库之间寻求一种更合适的解决方案。
减少数据库访问次数,文件和数据库分离,大数据分布式存储,服务器的集群负载均衡,页面缓存的使用,nosql内存数据库代替关系型数据库,这些方案措施都是提高系统高并发性能的关键,下面一一分解。
二、分解
(1)分布式服务器集群
A)文件服务器集群
图片、视频、其他下载文件,它们的下载通常是占用网络带宽的罪恶魁首,
这些资源一定要独立放在带宽好的文件服务器上,能提供http协议访问地
址使用,不至于在下载文件时影响web服务器的cpu运算。
文件服务器最好使用磁盘阵列中心存储,比如阿里云提供的文件云服务器,
这样使用简单,使用多大带宽多大存储空间选择就好了。
如果没有中心存储,也可以做文件服务器集群,如下图
说白了就是每个文件服务器都安装一个简单的web api作为文件传输和访
问的接口,可以手动分配服务器地址给web 程序使用,当然也可以做一层
简单的负载均衡器供web程序统一接口调用。
需要注意的是:web api 接口上传文件结果一定要返回特定服务器完整的
http文件下载地址,这个地址要存入数据库。
文件服务器的数量:文件服务器之间都相对独立,没有数据关联,因此数
量的多少主要是看带宽的承载量和硬盘空间的大小,动态扩展服务器后,
只需把服务器地址加入web程序的调用列表即可达到无限扩展容量的机制。
B)Web服务器集群
不管是windows系统,还是linux系统,单台服务器的性能和资源都是有限的,支持的连接并发数都有上限,因此必须采用多服务器集群的方法才能提高连接并发数。连接并发数的容量计算也很容易:
连接并发数= 服务器1并发数+服务器2并发数+……+ 服务器n并发数当然,我们不能都给每台web服务器分配一个域名地址访问,肯定是同一个域名同一个入口,例如百度后面有成百上千台web服务器,但是我们都是使用一个入口,至于这个入口会自动给我们分配一台web服务器访问,我们不会在意这台web服务器的具体地址是多少,这就是负载均衡器的作用。
但是,web服务器集群并不像文件服务器集群那么简单,因为web服务器的程序使用的数据是共享的,具有一致性和实时性的要求。
如果获取数据时都从数据库读取数据,可以保证数据的一致性,但数据量大时,影响性能而又不能保证实时性,这就是我们后面说到的使用缓存技术解决这个问题。
Web服务器类型:微软的.net iis ,阿帕奇tomcat 都是出名的轻量级web 服务器
C)数据库服务器集群
通常大型的关系型数据库oracle ,mysql , sqlserver 都已经提供了集群的功能,但是,由于磁盘读写速度的限制,难以胜任高并发实时性的要求,我们建议使用带有集群功能的内存数据库。
Mongodb内存数据库:
Mongodb是一个开源的nosql 内存数据库,基于json格式的文档存储,数据对象通过json的序列化与反序列化传输。在服务器内存足够大时,把所有的数据装载到内存中,便于快速访问;当内存不够大时,把不常使用的数据持久化到磁盘文件;最新版本的mongodb 3.0 已经提供了服务器集群的功能,并且引入了hadoop大数据的mapreduce并行运算模式,这让海量数据全部存储与多台服务器的内存上提供很好的解决方案。
现在服务器内存的硬件价格已经十分低廉,配置128G内存的服务器已经很
普遍,但是我们还是建议一台服务器存储数据量不要超过1亿条记录,便
于提高并行计算的效率。
在硬件充裕的情况下,mongodb集群建议采用多副节点的集群模式,不仅
提高访问性能,也保证了数据安全完整性能。
Gemfire内存数据库
Gemfire是很多年前就已经商业化了的nosql内存数据库,经过了多家大型机构的使用考验,更幸运的是,在2015年4月发布其开源版本Geode,可能在不久
的将来得到更广泛的使用。
除了开源nosql内存数据库,国内外的巨头都已经在研究自己的内存数据库,比如oracle, ibm , 阿里等等,nosql内存数据库大有代替关系型数据库的趋势。
朋友们可以去研究每个内存数据库的优劣势,不管使用那种产品,我们无非就是解决两个问题:1、内存数据库保证快速访问;2、服务器集群存储大数据。至于如何搭建
环境大家可以查找相关资料。
(2)负载均衡器
负载均衡服务器分为硬件均衡服务器和软件均衡服务器,目的就是统一提供一
个访问入口来访问服务器集群,并且能够动态监控每个服务器的负载,把新的
用户请求转给负载小的服务器。
硬件服务器就是直接购买独立的服务器作为负载均衡服务器,例如阿里云已经
提供。
软件服务器使用具有代理功能的软件作为转发服务器,比如Nginx,HAProxy,LVS 等等,具体安装部署大家可以搜索相关资料。
(3)缓存技术
从上面我们可以看出,web服务器与数据库服务器是分布在不同的服务器上的,也就是web程序从数据库获取数据时,通过网络tcp/ip协议进行网络数据传输,当查询的数据量过大时,网络带宽速率很可能变为瓶颈,高并发在线时,将会
很大影响整体系统的效率。
我们使用缓存技术解决这个问题。这里就涉及到相关业务了,一般来说,我们