电商项目-网站首页高可用(一)

**  一、Nginx简介**

Nginx 是一个高性能的http服务器。一个单机的tomcat,理论上最多只能承载500个并发,对于首页来说用户的访问频率高,因此并发量大,一个单机tomcat 无法承受网站首页的并发访问量,最终导致当前服务的崩溃。对于一个tomcat 集群来说,集群内部最多只能有5台tomcat 服务器,如果超过5台服务器,继续增加的话,对于当前这个tomcat集群性能来说,它是不升反降的。

因此对于服务器的选型,可以采用Nginx服务器,一台Nginx服务器在理论的情况下 能够承载50000的并发,性能是非常好的。Nginx除了可以作为http服务器,还可以反向代理服务器,负载均衡服务器。

nginx作为负载均衡器使用可以接收所有请求, 并将请求分发给tomcat集群服务器。

nginx作为反向代理服务器使用可以根据访问的url地址判断将请求发给哪个具体的服务器处理。

nginx作为http服务器可以运行静态资源, 包括html, css, js, 图片等, 效率比tomcat要高很多。

**  二、 OpenResty介绍**

**  1) OpenResty介绍**

OpenResty(又称:ngx_openresty) 是一个基于 NGINX 的可伸缩的 Web 平台,由中国人章亦春发起,提供了很多高质量的第三方模块。

OpenResty 是一个强大的 Web 应用服务器,Web 开发人员可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,更主要的是在性能方面,OpenResty可以 快速构造出足以胜任 1万 乃至10万以上并发连接响应的超高性能 Web 应用系统。openresty 出现的目标是,想让web服务器直接跑在Nginx服务内部,我们可以充分利用Nginx的非阻塞IO模型,不仅仅对http客户端的请求,甚至对远程后端,比方说mysql redis memcache都可以进行一致的高性能响应。

360,UPYUN,阿里云,新浪,腾讯网,去哪儿网,酷狗音乐等都是 OpenResty 的深度用户。

OpenResty 简单理解,就相当于封装了nginx,并且集成了LUA脚本,开发人员只需要简单的其提供了模块就可以实现相关的逻辑,而不再像之前,还需要在nginx中自己编写lua的脚本,再进行调用了。

**  2) OpenResty安装**

linux安装openresty:

1.添加仓库执行命令

复制代码
yum install yum-utils
​
yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo

2.执行安装

复制代码
yum install openresty

安装成功后 会在默认的目录下:

复制代码
/usr/local/openresty

3.安装nginx

默认已经安装好了nginx,在目录:/usr/local/openresty/nginx 下。

修改/usr/local/openresty/nginx/conf/nginx.conf,将配置文件使用的根设置为root,目的就是将来要使用lua脚本的时候 ,直接可以加载在root下的lua脚本。

复制代码
#user nobody; 配置文件第一行原来为这样, 现改为下面的配置
user root root;

测试访问: http://192.168.200.128

**  三、Lua快速入门**

**  Lua简介**

Lua 是一个小巧的脚本语言。它是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo三人所组成的研究小组于1993年开发的。 其设计目的是为了通过灵活嵌入应用程序中从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua 有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。

简单来说:

Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

**  Lua 语言特性**

--支持面向过程(procedure-oriented)编程和函数式编程(functional programming);

--自动内存管理;只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象;

--语言内置模式匹配;闭包(closure);函数也可以看做一个值;提供多线程(协同进程,并非操作系统所支持的线程)支持;

--通过闭包和table可以很方便地支持面向对象编程所需要的一些关键机制,比如数据抽象,虚函数,继承和重载等。

Lua 应用场景

--游戏开发

--独立应用脚本

--Web 应用脚本

--扩展和数据库插件如:MySQL Proxy 和 MySQL WorkBench

--安全系统,如入侵检测系统

--redis中嵌套调用实现类似事务的功能

--web容器中应用处理一些过滤 缓存等等的逻辑,例如nginx。

**  Lua的安装**

有linux版本的安装也有mac版本的安装。我们采用linux版本的安装,首先我们准备一个linux虚拟机。

安装步骤如下。在linux系统中执行下面的命令。

复制代码
yum install -y gcc
​
yum install libtermcap-devel ncurses-devel libevent-devel readline-devel
​
curl -R -O http://www.lua.org/ftp/lua-5.4.7.tar.gz
​
tar -zxf lua-5.4.7.tar.gz
​
cd lua-5.4.7
​
make linux test
​
make install

验证安装成功:

复制代码
lua

输出lua版本和copyright,安装成功

打印hello 到linux控制台

复制代码
Lua


print('hello');
相关推荐
m0_748248771 小时前
在 Ubuntu 上安装 Nginx 的详细指南
nginx·ubuntu·postgresql
煤炭里de黑猫14 小时前
Lua C API :使用 lua_tonumber 函数从 Lua 栈中提取数值
开发语言·lua
若云止水15 小时前
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_os_init 函数
运维·nginx
m0_5127446416 小时前
Nginx(详解以及如何使用)
运维·服务器·nginx
煤炭里de黑猫16 小时前
Lua C API:深入理解 lua_pushnumber 函数 — 将数字压入 Lua 栈中
开发语言·lua
铁锅与大鹅20 小时前
http+nginx
网络协议·nginx·http
煤炭里de黑猫1 天前
Lua C API :lua_insert 函数详解
开发语言·lua
s_fox_1 天前
Nginx Embedded Variables 嵌入式变量解析(4)
java·网络·nginx
致奋斗的我们1 天前
Nginx反向代理及负载均衡
linux·运维·mysql·nginx·负载均衡·shell·openeluer
招风的黑耳1 天前
使用Nginx本地部署Axure生成的HTML文件,局域网内浏览器通过IP和地址访问
nginx·html·axure·本地部署