大数据高并发---负载均衡
高并发解决方法----负载均衡
高并发的问题的出现
随着时间、用户、并发次数增加,会出现大数据高并发问题,即计算资源不够---请求多了
解决思路:
1. 换硬件,但是有局限性
2.多台服务器协同完成
先介绍一些概念
分布式:
原本一台服务器完成,分成多台服务器协作完成
集群:
多台服务器做完全相同的事儿,每个服务器都做相同的
分布式跟集群区别:
分布式是多台服务器做不相同的,但是集群是多台服务器做相同的
负载均衡:调用策略,请求转发
负载均衡策略
1.DNS负载均衡
描述:根据输入域名,请求到DNS服务器,DNS服务器调用负载均衡策略,从集群种返回一个服务器地址
1.部署多个独立IP对外提供服务
2.DNS服务器配置多个IP
3.DNS解析时转发
高效----就近原则
只能轮询---独立IP很贵----错误发现
2.硬件负载均衡:
1.买别人的服务器,别人给你做好了负载均衡,只需要配置一下就行了
特点:集成解决方案---商业化----花钱
常用的:F5,Array,Netscale
对外就是一台服务器,对内就是请求转发
3软件负载均衡:
LVS:Linux Virtual Server ---基于4层协议(传输层)例如:tcp,UDP,不能拿到请求地址
HAProxy&Nginx:基于7层协议(应用层协议)如:http请求协议,能拿到get,post,url 地址
层越高,策略越丰富,但是效率越低
通过负载均衡到达的效果
客户浏览器请求一个地址,通过负载均衡器随机请求服务实例
集群会遇到的问题
用户持久化问题:
描述:因为用户识别http是无状态,请求不一定是一直在同一个服务器
三大类解决方案
1.不要换服务器,用会话粘滞(Nginx里用ip_hash)
缺点:有个问题,万一服务器挂了不能识别
2.Session 共享
(1)StateServer (2)数据库 (2)Redis
Nuget里添加Microsoft.Extensions.Caching.Redis
3.请求携带
cookie---安全/带宽/浏览器限制
token-JWT/IdentityServer4
Demo
第一种方法用Nginx解决
1.官网上下载Nginx
http://nginx.org/en/download.html
2.用vs创建一个Asp.net.mvc项目,新增一个控制器和页面
页面请求代码:
@{ ViewData["Title"] = "Index"; } <h2>浏览器代理地址:@base.ViewBag.BrowserUrl</h2> <h2>内部监听地址:@base.ViewBag.InternalUrl</h2> <h2>请求响应次数:@base.ViewBag.TotalCount</h2>
3.配置Nginx
upstream DaShuJuGaoBingFa {
ip_hash;// 解决用户持久化问题
server localhost:5600;#启动的实例端口号
server localhost:5601;
server localhost:5602;
}
server {
listen 8088;//访问页面的端口号
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://DaShuJuGaoBingFa;#代理的名称与upstream对应
}
}
4.
原文地址:https://www.cnblogs.com/debugsxs223/p/12957891.html
- HTTP-FLV直播初探
- BZOJ1058: [ZJOI2007]报表统计
- React数据流和组件间的通信总结
- react+redux+webpack教程4
- 洛谷P2391 白雪皑皑(并查集)
- BZOJ4514: [Sdoi2016]数字配对(费用流)
- 3.2数据结构之指针和链表 1748:约瑟夫问题
- 2017值得一瞥的JavaScript相关技术趋势
- 1.5编程基础之循环控制44:第n小的质数
- noi 1.8 11图像旋转
- 为什么实现了equals()就必须实现hashCode()?
- 到天宫做客(2017寒假培训测试压轴题)
- 前端--理解 Promise 的工作原理
- 到天宫做客(2017寒假培训测试压轴题)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法