asp.net如何实现负载均衡方案讨论
请注意,本文内容分多次修改,如需阅读,请阅读完整,因为早期的观点是不太合理的,后面由于水平进步,已经做了修改!
我的目标是我一个人搭建一个负载均衡网站。不接受这是网络部,或者运维,或者系统部的事情,所有事情都是我一个人来完成,包括掏钱,包括将来发展等等,同时也别告诉我有没有意义,just do it !给我方案,给我方法。
拥有资源:不够可以买,多了可以先闲着。
现在我已经买了5台阿里云服务器,ip地址分别为
ip地址 名字简称 操作系统 iis服务器 cpu 内存DDR3 机械硬盘
111.13.101.204 ay1 window7 iis7 4核 8GB 1TB
111.13.101.205 ay2 window7 iis7 4核 8GB 1TB
111.13.101.206 ay3 window7 iis7 4核 8GB 1TB
111.13.101.207 ay4 window7 iis7 2核 4GB 1TB
111.13.101.208 ay5 window7 iis7 2核 4GB 1TB
我买好一个域名:www.bd.com(已备案)
项目已经做好,用asp.net MVC4开发, .netFramework4.5 项目名MyBD
项目首页是index.cshtml
项目结构WebSite\xxx
使用数据库sqlserver2014
我现在希望将项目发布多份,分别放在不同的服务器上,但是只能用一个域名 www.bd.com,我不是子域名主域名那种应用场景。
下来我想问,我该如何操作?
--------------------------------------------------------------------------------------------------
该文章题目也可以称为,如何将一个网站发布到两台服务器上,或者如何将一个项目发布到两个服务器上。 方便搜索引擎索引(该行文字是为了帮助seo)。
想先搭建一个负载均衡的架构,至于是否必要,是否浪费资源请不要考虑,但是可以考虑以后如何扩展。
希望更多人能看到,大家在评论里面给出自己的方案或建议。
我在百度搜索解决方案,有人的方案是,在HttpHandler中捕获到用户请求,然后从一组定以好的 跳转地址中随机选择一个,然后进行跳转
定义好服务器地址: static string [] servers={"http://192.168.1.100/index.aspx" , "http://192.168.1.101/index.aspx"};
Response.Redirect(servers[DateTime.Now.Millisecond % 2]);这里这个随机算法,完全可以可以自己自定义,也可以借助数据库来进行,决定跳转到哪里。
这种方案是浏览器发送了两次请求,而且性能受这个拦截服务器的瓶颈限制。 这是从大哥Luminji学来的。
这位大哥博客地址:http://www.cnblogs.com/luminji/archive/2012/05/16/2184280.html
希望大家来讨论讨论这个话题。
----------------------------------------------------------------------------------------------------------
20160118更新
在网上找到了这样一篇文章,介绍 nginx+iis实现负载均衡
博客地址:http://www.cnblogs.com/yanweidie/archive/2015/07/19/4658136.html#!comments
作者:焰尾迭 大家可以移步至此,看看这位大哥的实现方案。
很多人说windows平台,大概是windows操作系统的意思,用NLB微软的专门方案来实现,这里涉及到层面,层级问题。
就是硬件驱动层面,操作系统层面,还有iis层面。我也没搞太清楚,甚至还有windows操作系统 的用户模式,和内核模式,这是window操作系统的设计框架,为了是隔离用户应用程序与操作系统程序,防止用户程序的奔溃或者恶意代码等等对操作系统构成威胁,甚至硬件构成威胁。早期windows95经常需要强制关机,死机好像就是没有隔离应用程序和操作系统的缘故,这一块非常深,需要广泛阅读研究。
现在来谈一个关联问题:
负载均衡一般都涉及到一个问题,session共享问题,或者说是用户信息(登录状态信息、会话认证、建立的联接信息,等称为)保存共享问题。我们知道,web开发因为http的无状态特性,每次新的http请求,新的页面请求,都涉及到你是谁的问题,
你是否已经被我认证过了?你是否刚刚(几秒钟前,几分钟前一般时间很短,session默认时间20分钟asp.net中)访问了我的网站,如果你刚刚访问了我,我会给你一个凭证,然后保存一个和这个凭证对应的你的信息记录。我们不可能用户每请求一个页面就让用户登录一次,如果这样简直是折磨。
asp.net替开发者实现了一个内置对象Session,或者一个容器,或者说一个仓库等,总之可以存一点信息,不知道这种说法对不对。
session有个发展历程,微软早期的asp技术,也即第一代动态网页技术中,就提供了一个session,实现了一个session,但是那时session的生存环境只有一种,或者存在位置
就是在进程中session,即InProc(这个实现,或者提供的这个容器,或者说提供的这个可用环境,很不稳定,动不动就可能损坏,或者清理下你放在那里的东西即信息)。后来出了asp.net技术,session有了多种模式
Custom、Off、InProc、SQLServer、StateServer。分别是自定义模式,也就是你可以自己想办法搞一个容器或者地方来存放你的用户信息,非常自由。 Off这个是关闭Session,也就是不使用;InProc进程内模式,就是这个容器依靠一个进程,这个进程就是aps.net页面,文件处理解析进程(这里涉及到为什么进程内不稳定,可以参考下面博文)。
等有空继续修改,还没修改完。
---------20171122更新
负载均衡确实不应该是先被80端口监听程序监听到请求,再跑到IIS,再到iis上运行的某个网站的某个class中,在这个class中处理后,返回个跳转地址,跳到另一个网站,这种方式效率极其低下的,跳转的次数太多了,方式很低效!根据百度百科,负载均衡是可以在很多层面,很多地方做的,上面的方案层面太不合适了。
目前常用的软件负载均衡方式是,由一个监听80端口的监听程序来做负载均衡,而不是层层跳转,这样才能效率更好。
asp.net如何实现负载均衡方案讨论的更多相关文章
- asp.net:如何实现负载均衡方案讨论 (nginx+iis实现负载均衡)
5台阿里云服务器,ip地址分别为 ip地址 名字简称 操作系统 iis服务器 cpu 内存DDR3 机械硬盘 11 ...
- asp.net负载均衡方案[转]
在前面的几篇文章中,主要谈到了在Discuz!NT中的跨站缓存数据,数据库负载均衡.但如果要实现将产品分布式布置到若干机器,组成集群来共同支撑起整个业务的话,还是有一定问题的(后面会有所介绍).下面先 ...
- Windows平台下利用APM来做负载均衡方案 - 负载均衡(下)
概述 我们在上一篇Windows平台分布式架构实践 - 负载均衡中讨论了Windows平台下通过NLB(Network Load Balancer) 来实现网站的负载均衡,并且通过压力测试演示了它的效 ...
- 【转载】Windows平台下利用APM来做负载均衡方案 - 负载均衡(下)
概述 我们在上一篇Windows平台分布式架构实践 - 负载均衡中讨论了Windows平台下通过NLB(Network Load Balancer) 来实现网站的负载均衡,并且通过压力测试演示了它的效 ...
- (转)简易WCF负载均衡方案
最近跟高老师讨论nginx跟tomcat集群做负载均衡方案.感觉很有意思.想到自己项目中服务用的WCF技术,于是就想WCF如何做负载均衡,Google了一会,发现wcf4.0的路由服务好像可以实现.不 ...
- 这么多TiDB负载均衡方案总有一款适合你
[是否原创]是 [首发渠道]TiDB 社区 前言 分布式关系型数据库TiDB是一种计算和存储分离的架构,每一层都可以独立地进行水平扩展,这样就可以做到有的放矢,对症下药. 从TiDB整体架构图可以看到 ...
- 大数据时代下的SQL Server第三方负载均衡方案----Moebius测试
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 架构原理(Architecture) 测试环境(Environment) 安装Moebius( ...
- Openfire 集群部署和负载均衡方案
Openfire 集群部署和负载均衡方案 一. 概述 Openfire是在即时通讯中广泛使用的XMPP协议通讯服务器,本方案采用Openfire的Hazelcast插件进行集群部署,采用Hapro ...
- (转)大数据时代下的SQL Server第三方负载均衡方案----Moebius测试
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 架构原理(Architecture) 测试环境(Environment) 安装Moebius( ...
随机推荐
- spring boot2整合dubbox全注解
前题 dubbox是dubbo的一个升级版,简单说就是本来dubbo是阿里开发的,现在阿里不维护了,当当网拿过去继续开发.本来阿里的dubbo维护到2.6版本,而再高版本的都是当当网维护的就叫成dub ...
- python 验证码识别初探
使用 pytesser 与 pytesseract 识别验证码 前置 : 首先需要安装 tesserract tesserract windows 安装包及中文 https://pan.baidu ...
- 20155230 实验三《敏捷开发与XP实践》实验报告
20155230 实验三<敏捷开发与XP实践>实验报告 一.使用工具(Code->Reformate Code)把代码重新格式化 IDEA里的Code菜单有很多实用的功能可以帮助我们 ...
- 20155301 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
20155301 <Java程序设计>实验一(Java开发环境的熟悉)实验报告 一.实验内容及步骤 (一)使用JDK编译.运行简单的java程序 命令行下的程序开发 步骤:打开cmd,建立 ...
- SSM框架及例子(转)
SSM 手把手教你整合最优雅SSM框架:SpringMVC + Spring + MyBatis 博客地址:http://blog.csdn.net/qq598535550/article/detai ...
- CF 547 D. Mike and Fish
D. Mike and Fish http://codeforces.com/contest/547/problem/D 题意: 给定平面上n个点,将这些点染成红或者蓝色,要求每行.每列红色点与蓝色点 ...
- Spring学习(四)-----Spring Bean引用同xml和不同xml bean的例子
在Spring,bean可以“访问”对方通过bean配置文件指定相同或不同的引用. 1. Bean在不同的XML文件 如果是在不同XML文件中的bean,可以用一个“ref”标签,“bean”属性引用 ...
- Java的Graphics类进行绘图的方法详解
Graphics类提供基本绘图方法,Graphics2D类提供更强大的绘图能力. Graphics类提供基本的几何图形绘制方法,主要有:画线段.画矩形.画圆.画带颜色的图形.画椭圆.画圆弧.画多边形等 ...
- Update类型_JDBC的方法_JAVA方法_Loadrunner脚本
java vuser JDBC 参数化的方法 如果不进行参数化 直接把32 33行去掉 ,sql 值写到valuers 中就行了 下面这是 insert,delete,update 三种方法 ...
- 3.5星|《哈佛商学院最受欢迎的领导课》:讲给CEO的管理学常识、常见错误和改进方法
哈佛商学院最受欢迎的领导课 英文版出版于2011年,还不算旧.中信2013年出过一版,这版估计是英文书版权过期后重新购买了再出版. 全书以写给CEO的口吻讲了许多管理常识,包含一些CEO容易犯的问题和 ...