Windows平台分布式架构-负载均衡(高并发)
缘由
单纯想在winodows平台部署分布式程序,微软在IIS扩展的介绍中有涉及到Application Request Router + Web Farm + Url Rewriter可以实现分布式部署以及管理工具,但是看到相关资料发现这套方案对于windows的系统依赖程度太高了,而且涉及到的工具配置也是相当的多,所以追求简单以及让大家对于负载均衡有一个了解,我们选择Nginx+IIS进行演示!(给我1分钟,看完这一篇,我们用数据和图表来感受)
负载均衡
(1)官方概念:负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
(2)简单的说分配任务的时候为了达到最合理的安排会按照个人的能力去衡量,分配,每个人都有自己的能力范围和开发功底,so服务器也一样,对于请求也有自己的处理能力.负载均衡一定程度增加网站的可用性,与承载请求压力的能力。
预热
(1)负载均衡服务器nginx
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,这一篇我们主要用nginx作为负载均衡服务器,Nginx作为负载均衡服务器,既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务器对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。
(2)网站IIS
我们通过部署多台IIS站点进行压力分摊
基础准备
(1)创建测试站点
我们这里默认创建一个mvc程序,我在页面加载过程中延迟0.5s,没有其他复杂操作




我们默认准备好3个部署文件,方便横向的扩展测试,不同文件的首页分别修改为节点01,节点02,节点03
(2)配置负载均衡nginx
下载地址:http://nginx.org/en/download.html 我们最好下载Stable version稳定版本
follow me,进行nginx配置,我把下载的文件直接解压到d盘符的nginx文件夹进行配置,打开D:\nginx\conf\nginx.config文件,修改内容如下图

我们将nginx监听端口修改为我们未被占用的端口,然后开启nginx

nginx -t 检查nginx配置

网站和 nginx都准备完毕
Getting Start
配置修改
默认nginx负载均衡服务器为BalanceNode-01 本机器测试
#启动进程,通常设置成和cpu的数量相等
worker_processes 1; #工作模式及连接数上限
events {
worker_connections ;#单个后台worker process进程的最大并发链接数
} #设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
#设定负载均衡的服务器列表
#weigth参数表示权值,权值越高被分配到的几率越大
upstream web_pool {
server 192.168.3.22: weight=; #本机器IIS部署BalanceNode-01
}
server {
listen ; #侦听80端口
server_name web_pool; #定义使用www.xx.com访问 #对 "/" 启用反向代理
location / {
proxy_pass http://web_pool;
}
}
}
重新载入配置

再次访问nginx地址,页面直接变为我本机器配置的BalanceNode-01

我们使用上一篇提到的工具ApacheBench进行基准压力测试 了解ab的请戳 here
(1)一台Nginx+1台IIS
#设定负载均衡的服务器列表
#weigth参数表示权值,权值越高被分配到的几率越大
upstream web_pool {
server 192.168.3.22: weight=;
}

(2)一台Nginx+2台IIS
#设定负载均衡的服务器列表
#weigth参数表示权值,权值越高被分配到的几率越大
upstream web_pool {
server 192.168.3.22: weight=;
server 192.168.3.24: weight=;
}

(3)一台Nginx+3台IIS
#设定负载均衡的服务器列表
#weigth参数表示权值,权值越高被分配到的几率越大
upstream web_pool {
server 192.168.3.22: weight=;
server 192.168.3.24: weight=;
server 192.168.3.26: weight=;
}

(4)效果测试
打开一个浏览器,分别输入地址,恰巧我这三次分别打开了BalanceNode01,BalanceNode02,BalanceNode03

(5)结果绘图

(6)总结
大家可以根据一个简短测试感受负载均衡的平摊压力,提高吞吐量的作用.为了降低影响到最小我的三个测试节点分别部署在不同机器上的,但是中途测试过程中仍然有偏差过大的情况,这时候我基本多次测试,但是总体偏差不大。这一篇我们介绍了负载均衡的高并发。但是仍旧有一些问题需要我们继续思考.....
eg:我们只有一个nginx服务器,这一台是我们的入口,但是假设nginx G掉了,网站基本也就G掉了,所以网站并不是高可用的.这个在windows平台的解决方案需要继续思考。
Windows平台分布式架构-负载均衡(高并发)的更多相关文章
- Windows平台分布式架构实践负载均衡
Windows平台分布式架构实践 - 负载均衡 概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Li ...
- Windows平台分布式架构实践 - 负载均衡(转载)
Windows平台分布式架构实践 - 负载均衡 概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Li ...
- Windows平台分布式架构实践 - 负载均衡(下)
概述 我们在上一篇Windows平台分布式架构实践 - 负载均衡中讨论了Windows平台下通过NLB(Network Load Balancer) 来实现网站的负载均衡,并且通过压力测试演示了它的效 ...
- Windows平台分布式架构实践 - 负载均衡
概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为 ...
- Windows平台分布式架构实践 - 负载均衡 上
概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为 ...
- 【转载】Windows平台分布式架构实践 - 负载均衡
概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为 ...
- 16套java架构师,高并发,高可用,高性能,集群,大型分布式电商项目实战视频教程
16套Java架构师,集群,高可用,高可扩展,高性能,高并发,性能优化,设计模式,数据结构,虚拟机,微服务架构,日志分析,工作流,Jvm,Dubbo ,Spring boot,Spring cloud ...
- 实现基于Haproxy+Keepalived负载均衡高可用架构
1.项目介绍: 上上期我们实现了keepalived主从高可用集群网站架构,随着公司业务的发展,公司负载均衡服务已经实现四层负载均衡,但业务的复杂程度提升,公司要求把mobile手机站点作为单独的服务 ...
- 实战Nginx负载均衡高冗余高可用WEB架构
最近公司主力网站之一改版完成终于上线了,牵扯了我大半年的时间,现在终于有时间坐下来写点东西,总结沉淀一下自己的技术心得.此次,根据服务器的数量和质量,我采用负载均衡高冗余的架构,考虑单点故障,W ...
随机推荐
- Longest Valid Parentheses(最长有效括号)
Given a string containing just the characters '(' and ')', find the length of the longest valid (wel ...
- 线段树总结 (转载 里面有扫描线类 还有NotOnlySuccess线段树大神的地址)
转载自:http://blog.csdn.net/shiqi_614/article/details/8228102 之前做了些线段树相关的题目,开学一段时间后,想着把它整理下,完成了大牛NotOnl ...
- Android 用户界面---拖放(Drag and Drop)(一)
用Android的拖放框架,能够允许用户使用图形化的拖放手势,把数据从当前布局中的一个View对象中移到另一个View对象中.这个框架包括:拖拽事件类.拖拽监听器.以及辅助的方法和类. 尽管这个框架主 ...
- easyui validatebox 验证集合
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <script src="easyui ...
- Jquery Highcharts 参数配置说明
chart: renderTo 图表的页面显示容器 defaultSeriesType 图表的显示类型(line,spline, scatter, splinearea bar,pie,area,co ...
- git和其他版本控制系统的区别
所有除了Git以外的版本控制系统都使用增量存储方式来保存不同版本,而Git则在每一个commit时,保存一个整个文件的content copy,除非那个文件没有做过改动.Git和其他版本系统的主要区别 ...
- XE4 IOS开发环境配置
l 配置IOS的安装开发环境 使用RAD XE4开发IOS程序,一台MAC是必须的(也可以用虚拟机), MAC上需要安装Xcode, 独立版本的Commnand Line Tools 以及RAD的pa ...
- Qt之自定义搜索框
简述 关于搜索框,大家都经常接触.例如:浏览器搜索.Windows资源管理器搜索等. 当然,这些对于Qt实现来说毫无压力,只要思路清晰,分分钟搞定. 方案一:调用QLineEdit现有接口 void ...
- UVa 12206 (字符串哈希) Stammering Aliens
体验了一把字符串Hash的做法,感觉Hash这种人品算法好神奇. 也许这道题的正解是后缀数组,但Hash做法的优势就是编码复杂度大大降低. #include <cstdio> #inclu ...
- Asp.net中的HttpModule和HttpHandler的简单用法
在Asp.net中,HttpModule和HttpHandler均可以截取IIS消息进行处理,这使得我们制作人员能够非常方便的进行诸如图片水印添加,图片盗链检查等功能. 下面先就HttpModule的 ...