请问一个网站发布到两台服务器上

coyun 2015-01-31 11:50:27
有服务器A和B. 根据访问量随机分配到A和B。这种把访问量分配的方法是不是就是web farm?

我程序当中没有把任何值存到session变量中,这种情况,还需要在web.config里面设置<sessionSate>吗?

我记得好不想不能用InProc的
...全文
314 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
myhope88 2015-02-09
  • 打赏
  • 举报
回复
这个是集群吧~~
李小冲 2015-02-08
  • 打赏
  • 举报
回复
使用DNS轮循
SPFarmer 2015-02-01
  • 打赏
  • 举报
回复
你这个是一个相当复杂的课题。不要考虑两个服务器上同步的问题,而是要保证,每一个request都是单独,没有依赖关系。也就是说上一个request发到了A,下一个request发到了B,后一个request不依赖于第一个request。
  • 打赏
  • 举报
回复
比如说假设csd有2千万帖子,同一个帖子可能同时出现在不同的“栏目首页列表”中,每一个栏目首页列表作为一个缓存单元其实就是一个sql查询对应结果。并不纠结于同一个帖子会出现在多个缓存单元中,更不是“一开始把2千万帖子都读取到服务器内存中”才叫做缓存。 比如说应用程序以“用户[kksi28237423]的注册资料”为key保存了一个UserInfomation类型的对象数据,那么当读取同样用户id的资料时就会首先读取缓存中的数据。在内存中并不是一开始就保存所有用户的资料,而是仅仅暂时缓存“个别的、曾经查询过的”用户资料而已。这样的缓存可以使用key高速查询“是否存在”缓存数据。系统随时会根据各种CacheDependency,或者物理内存使用情况等等限制,自动清理上万、数十万缓存单元,目的还是因为缓存系统可以保证用服务器里一点内存(比如说1G内存)而高效率地对多达1000G的数据进行有选择的、仅针对“最近查询结果”的缓存(而不是一股脑地把1000G内存弄到内存中)。 如果你把一大堆数据弄到一个缓存单元里,相当于你为了存款方便而买下了整个银行,等于滥用了内存,那还不如直接声明你的程序中一个 static 变量不就行了嘛,何必要赶时髦而使用什么Cache呢?
  • 打赏
  • 举报
回复
引用 6 楼 coyun 的回复:
我有两个Cache,一个在Application_Start,一个在Page_Load 1) Application_Start if (Cache["Tes1"] == null) { Cache.Insert("Test1", txtFile1, null, DateTime.Now.AddHours(24), Cache.NoSlidingExpiration); } 2) Page_Load if (Cache["Tes2"] == null) { Cache.Insert("Test2", txtFile2, null, DateTime.Now.AddHours(24), Cache.NoSlidingExpiration); }
“24小时”本身没有什么意义。设置Duration只是数据的“最长生命期”,跟缓存单元的真正管理差太远了。比如说csdn各栏目的首页列表,可以设置10分钟Duration。但是这不意味着10分钟之后才能变化,Duration只是缓存单元的最长生命期。它还必须设置其它CacheDependency来保证数据“不肮脏”才行,例如本地某个文件变化时清空对应的栏目的首页列表,或者数据库某个表变化时清空对应的栏目的首页列表,等等。 缓存单元也完全没有必要区分什么“Application启动时、Page对象创建时”创建。就在第一次sql语句查询之后创建之后把sql语句本身作为key(或者其md5作为key),把查询结果作为缓存数据,就行了当再一次进行sql查询之前,先从Cache.Contains(key)查找(或者Cache[key]读取),如果没有才真正去进行sql查询。Cache中的数据不是一个什么DataTable用来再次反复Select查找的,缓存中的数据本身就是最底层查找的最终结果。 如果你是纠结于“Apllication启动还是页面创建时”创建缓存单元,可见你是把一大堆垃圾数据存到内存里,既不考虑命中率、也不考虑数据变脏的情况。
  • 打赏
  • 举报
回复
引用 4 楼 coyun 的回复:
目前这种结构(服务器A+服务器B),就是楼上各位所说的集群+负载均衡。 1)我因为没有在程序中使用session变量,所以不需要担心在web.confi设置sessionstate的问题? 2)我在程序中用了Cache变量,就是asp.net中的Cache object, 这个可以用在集群结构当中吗?
1. 不使用,当然不需要设置。 2. 你的Cache本就是针对单个服务器的,不用考虑跨服务器。实际上跨服务器的那种,也不叫Cache了,应该叫做“使用了一种内存数据库”。而且有了网络通讯的性能损失。 不过使用Cache,重点是要测试缓存依赖项是否成立。如果数据库变了,1秒钟之后缓存里还可访问到脏数据,那么这个Cache机制就是败了。基于这个Cache其实并不容易(“缓存”绝不是“把数据放在内存里”这么简单),所以许多时候得承认还没有能力进行高命中率的缓存,不得不暂时放弃缓存。
coyun 2015-02-01
  • 打赏
  • 举报
回复
我有两个Cache,一个在Application_Start,一个在Page_Load 1) Application_Start if (Cache["Tes1"] == null) { Cache.Insert("Test1", txtFile1, null, DateTime.Now.AddHours(24), Cache.NoSlidingExpiration); } 2) Page_Load if (Cache["Tes2"] == null) { Cache.Insert("Test2", txtFile2, null, DateTime.Now.AddHours(24), Cache.NoSlidingExpiration); }
三楼の郎 2015-01-31
  • 打赏
  • 举报
回复
集群+负载均衡
  • 打赏
  • 举报
回复
引用 4 楼 coyun 的回复:
目前这种结构(服务器A+服务器B),就是楼上各位所说的集群+负载均衡。 1)我因为没有在程序中使用session变量,所以不需要担心在web.confi设置sessionstate的问题? 2)我在程序中用了Cache变量,就是asp.net中的Cache object, 这个可以用在集群结构当中吗?
1 跳过,不用的话配不配都无所谓,默认Inproc 2这个看你的A\B是什么样的负载策略了,以及你的Cache究竟放的是什么值了,不同情况区分可行性,webcaching?MemoryCache?
coyun 2015-01-31
  • 打赏
  • 举报
回复
目前这种结构(服务器A+服务器B),就是楼上各位所说的集群+负载均衡。 1)我因为没有在程序中使用session变量,所以不需要担心在web.confi设置sessionstate的问题? 2)我在程序中用了Cache变量,就是asp.net中的Cache object, 这个可以用在集群结构当中吗?
还想懒够 2015-01-31
  • 打赏
  • 举报
回复
引用 1 楼 CityBird 的回复:
集群+负载均衡
+1 另外,Session可以使用,但需要使用共享的Session,如使用数据库的
cocosip 2015-01-31
  • 打赏
  • 举报
回复
基本上可以去掉Session了,分布式的话可以使用Nosql来模拟缓存的存储。可能在个别的应用场景上,还会需要session,比如分布式系统中的 验证码 功能的实现,在一些系统中就会使用Session共享的功能

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧