基于Node.js高性能高并发网络应用构架的研究和实现
发布时间:2020-11-10 00:56
随着Internet的普及以及大数据时代的到来,主流网络应用的日常访问量已经达到万亿级别。面临海量的用户并发访问,如何保证网络应用用户优质流畅的体验成为网络应用待解决的难点之一。为了解决高并发问题,网络应用的体系构架与设计需要从内到外地改进和加强,令并发处理的能力从各方面得到提升。从内部上,网络应用不仅要改进构架设计而且也要对构架内应用的重要算法进行改进,从外部上也需要运用第三方有利于提高并发能力的技术。与多线程编程模型比较,采用事件驱动异步I/O模型的Node.js技术更加适合应用于高并发、大数据和实时响应的场景。本文从解决网络应用高并发难点的角度出发,主要研究工作是设计一种高性能高并发网络构架设计方案和研究改进网络应用构架中负载均衡层应用的负载均衡算法。论文完成的主要工作如下:(1)分析现今常用的网络应用构架类型,总结出构架整体方案和内部结构的设计原则。针对高性能高并发的问题,基于Node.js技术设计一种高性能高并发网络应用构架方案。设计方案的各个模块分别为负载均衡层、核心处理层和数据存储层。负载均衡层采用Nginx技术应用负载均衡算法。核心处理层是基于Node.js技术完成网络应用业务逻辑处理,其中内存缓存服务采用Redis技术。数据存储层选用非关系型数据库Mongo DB实现数据存储。(2)研究分析常用的负载均衡算法,对加权轮询算法进行深入分析,将CPU、内存、磁盘I/O速率、网络带宽和响应时间等参数加入到加权轮询算法的权值计算中进行算法改进,并对改进前后算法进行测试分析,证明改进的算法的有效性。(3)根据本文研究的高性能高并发构架解决方案以及改进的负载均衡算法,完成一个博客应用,并对博客功能进行展示。
【学位单位】:杭州电子科技大学
【学位级别】:硕士
【学位年份】:2018
【中图分类】:TP393.02
【部分图文】:
图 2.1 Node.js 基本架构图Node Standard Library 是我们使用频率很高的标准库,如 Http, Buffer 模块等。Node Bindings 是沟通 Javascript 和 C++的桥梁,封装 V8 和 Libuv 的细节,向上层提供基础 API 服务。V8 是 Google 开发的 JavaScript 引擎,提供 JavaScript 运行环境,可以说它就是 Node.js 的发动机。Libuv 是专门为 Node.js 开发的一个封装库,提供跨平台的异步 I/O 能力。C-ares 提供了异步处理 DNS 相关的能力http_parser、OpenSSL、zlib 等提供包括 http 解析、SSL、数据压缩等其他能力。最后架构的底层是支撑 Node.js 运行的关键,代码由 C/C++实现。Libuv 不仅提供了跨平台的异步 I/O 能力,还提出在不同的 I/O 轮询机制上的复杂抽象,即为套接字和其他实体提供高级抽象的“句柄(handles)”和“流(streams)”。图 2.2 展示了组成 libuv 的不同部分以及与之相关的子系统。
图 2.1 Node.js 基本架构图Node Standard Library 是我们使用频率很高的标准库,如 Http, Buffer 模块等。Node Bindings 是沟通 Javascript 和 C++的桥梁,封装 V8 和 Libuv 的细节,向上层提供基础 API 服务。V8 是 Google 开发的 JavaScript 引擎,提供 JavaScript 运行环境,可以说它就是 Node.js 的发动机。Libuv 是专门为 Node.js 开发的一个封装库,提供跨平台的异步 I/O 能力。C-ares 提供了异步处理 DNS 相关的能力。http_parser、OpenSSL、zlib 等提供包括 http 解析、SSL、数据压缩等其他能力。最后架构的底层是支撑 Node.js 运行的关键,代码由 C/C++实现。Libuv 不仅提供了跨平台的异步 I/O 能力,还提出在不同的 I/O 轮询机制上的复杂抽象,即为套接字和其他实体提供高级抽象的“句柄(handles)”和“流(streams)”。图 2.2 展示了组成 libuv 的不同部分以及与之相关的子系统。
杭州电子科技大学硕士学位论文系统调用return无数据数据到达数据拷贝拷贝完成等待达递交至aio_read指定的时间处理程序aio_read读完成事件处理内核应用进程用程序续执行,其它逻辑图 2.7 异步 I/O 模型件决定的程序执行流被称为事件驱动,通常以主循环,事件处理程为特征。如图 2.8 所示为事件驱动模型图。
【参考文献】
本文编号:2877218
【学位单位】:杭州电子科技大学
【学位级别】:硕士
【学位年份】:2018
【中图分类】:TP393.02
【部分图文】:
图 2.1 Node.js 基本架构图Node Standard Library 是我们使用频率很高的标准库,如 Http, Buffer 模块等。Node Bindings 是沟通 Javascript 和 C++的桥梁,封装 V8 和 Libuv 的细节,向上层提供基础 API 服务。V8 是 Google 开发的 JavaScript 引擎,提供 JavaScript 运行环境,可以说它就是 Node.js 的发动机。Libuv 是专门为 Node.js 开发的一个封装库,提供跨平台的异步 I/O 能力。C-ares 提供了异步处理 DNS 相关的能力http_parser、OpenSSL、zlib 等提供包括 http 解析、SSL、数据压缩等其他能力。最后架构的底层是支撑 Node.js 运行的关键,代码由 C/C++实现。Libuv 不仅提供了跨平台的异步 I/O 能力,还提出在不同的 I/O 轮询机制上的复杂抽象,即为套接字和其他实体提供高级抽象的“句柄(handles)”和“流(streams)”。图 2.2 展示了组成 libuv 的不同部分以及与之相关的子系统。
图 2.1 Node.js 基本架构图Node Standard Library 是我们使用频率很高的标准库,如 Http, Buffer 模块等。Node Bindings 是沟通 Javascript 和 C++的桥梁,封装 V8 和 Libuv 的细节,向上层提供基础 API 服务。V8 是 Google 开发的 JavaScript 引擎,提供 JavaScript 运行环境,可以说它就是 Node.js 的发动机。Libuv 是专门为 Node.js 开发的一个封装库,提供跨平台的异步 I/O 能力。C-ares 提供了异步处理 DNS 相关的能力。http_parser、OpenSSL、zlib 等提供包括 http 解析、SSL、数据压缩等其他能力。最后架构的底层是支撑 Node.js 运行的关键,代码由 C/C++实现。Libuv 不仅提供了跨平台的异步 I/O 能力,还提出在不同的 I/O 轮询机制上的复杂抽象,即为套接字和其他实体提供高级抽象的“句柄(handles)”和“流(streams)”。图 2.2 展示了组成 libuv 的不同部分以及与之相关的子系统。
杭州电子科技大学硕士学位论文系统调用return无数据数据到达数据拷贝拷贝完成等待达递交至aio_read指定的时间处理程序aio_read读完成事件处理内核应用进程用程序续执行,其它逻辑图 2.7 异步 I/O 模型件决定的程序执行流被称为事件驱动,通常以主循环,事件处理程为特征。如图 2.8 所示为事件驱动模型图。
【参考文献】
相关期刊论文 前8条
1 曾超宇;李金香;;Redis在高速缓存系统中的应用[J];微型机与应用;2013年12期
2 李永魁;谢文阁;;基于非关系数据库的分布式负载均衡技术[J];计算机系统应用;2013年05期
3 饶磊;汤小春;侯增江;;服务器集群负载均衡策略的研究[J];计算机与现代化;2013年01期
4 邓绪高;;Javascript的词法作用域分析[J];电脑知识与技术;2012年36期
5 张玉芳;魏钦磊;赵膺;;基于负载权值的负载均衡算法[J];计算机应用研究;2012年12期
6 黄立冬;;一种半静态化网站的构建方法[J];软件;2012年03期
7 杨艳;李炜;王纯;;内存数据库在高速缓存方面的应用[J];现代电信科技;2011年12期
8 朱晓辉;王杰华;石振国;陈苏蓉;;海量图片的分布式存储及负载均衡研究[J];计算机工程;2010年23期
相关硕士学位论文 前2条
1 梁锐;基于Web服务器集群的负载均衡系统研究与实现[D];大连海事大学;2013年
2 陈亮;集群负载均衡关键技术研究[D];中南大学;2009年
本文编号:2877218
本文链接:https://www.wllwen.com/guanlilunwen/ydhl/2877218.html