秒杀项目-第四章(软件得启动等操作)

单机容量问题,水平扩展

1、mysql数据库开放远端连接

2、服务端水平对称部署

3、验证访问

方案:
在这里插入图片描述
一台nginx
一台mysql
两台应用服务器

数据库相关设置

开放端口连接
1、进入mysql数据库
2、select host,user,password from user;—查询权限
3、授权知道账号跟密码都可访问:grant all privileges on . to root@’%’ identified by ‘root’
4、flush privileges;刷新权限

服务器

在两台jar服务器安装java
先将java安装包传到本机
再将权限改掉:chmod - R 777 jdk-8u65-linux-x64.rpm
安装命令:rpm -ivh jdk-8u65-linux-x64.rpm
执行程序:./deploy.sh &

4-3 nginx

1、使用nginx作为web服务器
2、使用nginx作为动静分离服务器
3、使用nginx作为反向代理服务器

nginx安装

下载openresty (openresty-1。13.6.2)
修改权限:chmod -R 777 包名
解压安装:tar -xvzf 包名

进入openresty文件夹
命令:./configure
PCRE library 未安装 相关依赖
命令:yum install pcre-devel opensll-devel gcc curl
再次进行安装 命令:./configure
命令:make(编译)
命令:make install(编译 、安装)

启动nginx

在nginx目录下
命令:sbin/nginx - c conf/nginx.conf
查看是否启动:命令:netstat -an | grep 80

nginx Web服务器

前端资源上传

1、资源上传至html文件夹中
2、进入conf文件夹 命令 :vim nginx.conf

修改nginx的配置文件

原因:使得对于不同的请求(静态资源、ajx请求)
1、修改内容

2、将静态资源移动至上述路径
在这里插入图片描述

nginx 动静分离服务器

1、location 节点path特定resources:静态资源路径
2、location 节点其他路径:动态资源

步骤:
1、设置upstream server
在nginx.conf文件中设置
upstream backend_server{
server 192.168.178.103 weight=1;
server 192.168.178.104 weight=1;
}
反向代理的轮询时 比重是1:1
2、设置动态请求location为proxy pass 路径
location / {
proxy_pass http://backend_server;
proxy_set_header Host h t t p h o s t : http_host: httphost:proxy_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

保存后重启
命令:sbin/nginx -s reload
3、开启tomcat access log验证
在项目内创建一个tomcat文件,在Application.properties
server.tomcat.accesslog.enabled = true
server.tomcat.accesslog.directory = /var/www/miaosha/tomcat
server.tomcat.accesslog.pattern = %h %l %u “%r” %s %b %D(h为远端IP地址,u远端主机的user,t为处理时长,r为http请求的第一行-请求的方法,url,s为返回状态码,b为请求respose的大小,D为处理请求的时长)

4-8分布式扩展后的性能压测

测试数据
线程数:1000 循环30次 5秒中发起

部署台数TPS反应时间(毫秒)%CPU
单机-直接访问数据库150050080%
nginx反向代理(与jar短连接)171045010%左右
nginx反向代理(与jar长连接)161038910%左右

单机带宽为20Mbps
nginx与jar为短链接状态

使用短连接不合理,在nginx/conf文件修改配置
1、在upstream backend_server{
server 192.168.178.103 weight=1;
server 192.168.178.104 weight=1;
}
中添加
upstream backend_server{
server 192.168.178.103 weight=1;
server 192.168.178.104 weight=1;
keepalive 30
}
2、location / {
proxy_pass http://backend_server;
proxy_set_header Host h t t p h o s t : http_host: httphost:proxy_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}中添加
location / {
proxy_pass http://backend_server;
proxy_set_header Host h t t p h o s t : http_host: httphost:proxy_port;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1
proxy_set_header Connection “”
}
3、最后reload
命令:sbin/nginx -s reload

4-9 nginx高性能原因

1、epoll多路复用(解决了io阻塞回调通知得问题)
A: java bio 模型,阻塞进程式
在这里插入图片描述

B:linux select模型,变更触发轮询查找,有1024数量上限
在这里插入图片描述

C;epoll模型,变更触发上限回调直接读取,理论上无上限
在这里插入图片描述
2、master-worker进程模型(可以完成平滑得过度,平滑得重启,并且基于worker得单线程模型结合epoll多路复用机制,完成高效得操作)
在这里插入图片描述

3、协程机制(将每个用户得请求对应到线程中得某一个协程中,然后在协程中使用epoll多路复用的机制,来完成对应得同步调用开发,完成高性能得操作)
A;依附于线程得内存模型,切换开销小
B:遇阻塞即归还执行权,代码同步
C;无需加锁

4-12 分布式会话

会话管理:
基于cookie传输sessionid:java tomcat容器session实现
基于token传输类似sessionid:java代码session实现

分布式会话:
基于cookie传输sessionid:java tomcat容器session实现迁移到redis
基于token传输类似sessionid:java代码session实现迁移到redis

4-13 分布式会话实现

下载redis
chmod - R 777 redis(包名)
tar -xvzf redis(包名)
命令:./configure
命令:make (进行首次编译)
命令:make install (进行安装)
在src目录
进入(命令:./redis-server & )后台启动
命令:./redis-cli (连接默认本机redis端口)

本机redis启动:redis-server.exe redis.windows.conf
在启动:redis-cli.exe

4-16 基于token得分布式会话实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值