并发大的情况,业务到不同服务器的分流问题

超级大笨狼 2009-09-17 11:02:13
并发大的情况,业务到不同服务器的分流问题。
我设想用一个前台服务器,通过Socket连接多台服务器,随时判断大家的CPU内存情况,把任务分配给清闲的。

这样的思路如何?

采用<<Visual C#网络编程技术与实践>>,这书中的技术,来通讯各个服务器的繁忙状态。

...全文
169 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
超级大笨狼 2009-09-18
  • 打赏
  • 举报
回复
http://www.aocgroup.com.ar/usercp.php?mode=viewprofile&u=83

后来发的连接是我记录的地址,回家看用的。没办法,在公司能做的事情有限。
V68V6 2009-09-18
  • 打赏
  • 举报
回复
老狼
你发的多少也做点解释,说说这玩意做什么的。
不是所有的人都有如sp1234,一瞧就明白。
超级大笨狼 2009-09-18
  • 打赏
  • 举报
回复
http://aocrecs.250x.com/index2.htm

http://aok.heavengames.com/university/modding/

http://ostatic.com/aocrec
超级大笨狼 2009-09-18
  • 打赏
  • 举报
回复
http://recanalyst.sourceforge.net/documentation/
超级大笨狼 2009-09-17
  • 打赏
  • 举报
回复
负载均衡更高效 —— Windows Server 2003 实现服务器的流量分担


作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

-
负载均衡更高效 —— Windows Server 2003 实现服务器的流量分担

服务器是企业信息网络的核心。随着应用的深入,企业网内的信息流量快速增长,当用户量及其应用量很大时,在同一时刻企业的主机服务器可能要承受大量用户的来访请求,然而一台主机的处理能力是有限的,倘若访问量的增长超过了主机的处理极限,主机的处理能力就会成为企业网应用的瓶颈,这将制约网络应用的继续发展。

解决之道

解决这个问题的传统思路是更换技术更加先进、性能更加强大的主机服务器,然而这将使企业面临资金投入的巨大压力,而且对于一个成长型企业来说,网络应用信息量增长的速度很快,新的主机可能在不远的将来遭遇相同的尴尬处境。

另一个解决思路就是使用流量分担技术。即在网络内增加多台主机服务器,并让这些服务器保存和处理相同的应用内容。这样的主机服务器并不一定要求是技术最先进、性能最强大的,所以投资可以相对较少,但是由它们组成的服务器群,却能够共同完成网络的服务功能。当用户来访时,这些服务器轮流响应不同用户的请求,通过流量分担技术把大量的用户请求自动地分散到了不同的主机服务器中处理,从而减少了单个主机上的任务量,实现了网络流量在多台主机间的平衡处理。

流量分担技术实现的方法根据系统的软硬件不同而有所区别,有通用方法也有专用方法,有的网络系统还为此提供了专门的服务。微软新发布的Windows Server 2003就在其网络内提供了许多此类技术,主要是分布式文件系统(DFS)。

DFS 发威

DFS即分布式文件系统,主要用于解决把分散的共享资源集中管理的问题,它其实还有一个重要的功能,就是在域环境中能够利用文件复制服务(FRS)为共享目录产生副本。

DFS的基本概念是DFS根和DFS连接。DFS根指服务器或服务器组,是客户端试图访问文件时首先要前往的地方。这些服务器通常分布在一个域的各个站点中。DFS 连接是指从逻辑目录到可以处理文件请求的服务器(位于企业内的任意位置)上的物理共享文件夹的引用。在Windows Server 2003中,大大增强了DFS的功能。 Windows Server 2003 在可靠性方面,针对DFS 作了重要的功能提升:一个服务器可以主持多个DFS 根。在Windows 2000中,不可能在一个服务器上有多个DFS根。因此,需要有大量运行Windows 2000 的服务器来主持多个DFS根。在Windows Server 2003 中,取消了这一限制。此外,Windows 2000 群集的独立DFS 服务器只能主持一个DFS根,而Windows Server 2003允许主持多个DFS根。

Windows Server 2003 还改进了在跨越多个站点对复制操作进行设置时的DFS行为。在 Windows 2000中,DFS 会优先考虑与客户端位于同一站点中的目标,如果在该站点中没有连接目标,它会在任何其他站点中为该客户端请求选择任意的连接目标。这种算法不是最有效的。

例如,如果某企业有分别位于北京、天津和上海的站点,并且其客户端计算机试图访问天津中的连接,则当天津中的所有连接目标都无法访问时,该客户端计算机不会考虑通信成本的高低,而故障转移到北京或上海中的某个目标。与此不同的是,Windows Server 2003会使用主动目录(Active Directory)中的站点开销信息来选择能够满足客户端请求的站点外目标。对于该企业的这种情况,DFS 能够从主动目录了解到从天津到上海的通信费用比从天津到北京的通信费用更昂贵,因此它会根据主动目录中的站点配置相应地将天津的客户端重定向到最近的北京目标。

利用DFS

实现流量分担方法的首先要在多台主机服务器内保持相同的内容,即把某主机的特定内容动态地复制到多台主机中。比如在Windows Server 2003 里,我们就可以借助DFS 技术来完成此目的。通过使用DFS 在域环境中能够利用文件复制服务(FRS)为共享目录产生副本这一功能,就能够把指定主机服务器内某一文件夹下的内容自动拷贝到其他一台或多台服务器中,从而就实现了主机间保持相同内容的目的。

在Windows Server 2003 中使用DFS的第一步是要建立DFS 根目录。

从Windows Server 2003 的管理工具进入“分布式文件系统”管理器,在这里新建DFS根目录。建立根目录的时候系统会要求选择根的类型。DFS根的类型有两种:一种是域DFS;另一种是独立DFS,要想实现目录的副本,必须选择域DFS 类型。独立DFS 只是在非域环境内建立的,它不能支持文件复制服务。

在域环境里建立DFS,需指定域名和保存DFS 根的主机服务器名,其中域可以是本地域也可以信任域。然后如图1 所示要定义根的名称,此名称是用来在域中标识 DFS根的。接着要在主机服务器的NTFS分区内指定一个共享文件夹用来放置DFS 根。第二步是要建立链接。链接是从DFS 根中指向网络内各共享目录的指针。在“分布式文件系统”管理器里用鼠标右击已经建立的DFS根,选择“新建链接”。在新建链接的向导里需要指定链接指向的目标位置,如图2,这个位置应该是一个网络中已经存在的共享目录。然后为此链接起一个形象的名称。

通过以上建立链接的方法可以分别把网络中各个共享目录都组织DFS 中来,这样用户只要访问DFS 根就能够访问到其中的所有共享目录了。

域DFS的链接建立后,就可以为其创建副本。指定另一台服务器上的一个共享目录作为副本复制的目的地。接下来在复制向导中定义复制的具体对象。一台主机服务器里的共享目录可以被指定复制到其他多台服务器中。

至此,在多台主机内保持相同内容的工作就完成了。Windows Server 2003的DFS会利用文件复制服务,把某主机服务器的特定内容动态地复制到多台服务器中。通过定义DFS 根的属性,还可以把DFS 发布到活动目录中,当域用户在活动目录里访问此主机服务器的链接内容时,DFS就会自动在多台服务器的副本间分流访问流量。然而这样的应用只解决了企业网内部 Windows用户的访问问题,但是,许多非企业网用户也许根本访问不到域的DFS根,比如广域网用户在访问主机服务器上的Web页内容时就不是直接访问DFS根的,从而也就无法访问其中的链接副本。因此还应该选择一种更通用的方法来实现不同主机服务器间的流量分担。

借力DNS

对于上述问题,可以通过域名服务(DNS)来解决。根据DNS的工作特点,我们的思路是让DNS将同一个主机名称轮流解析到不同的IP地址,即把信息轮流交换到不同的网络主机内,这些主机就是我们在前面已经利用Windows Sever 2003 的DFS 副本技术准备好了的、保存了相同内容的服务器,从而达到在多台主机间分担网络流量的目的。

实现这一功能可以借助Windows Server 2003 的 DNS 服务器里提供的循环解析功能来完成。

首先要在DNS管理器内进行“新建主机”操作,即指定主机名称与其IP地址的映射对应关系,在此应该将所有在前面介绍的已经保存了副本目录的各台主机都定义到 DNS服务器中。设置时应该注意,要根据主机的网络地址为各台主机指定不同的IP,但同时各主机都要起同一个相同的名称。经过这一步的定义后在DNS服务器里就配置出了多台具有相同名称但不同地址的主机。接下来进入属性设置的高级配置中定义服务器选项。要达到让DNS把信息轮流交换到不同主机的目的,必须在这里选中“启用循环”选项,这个功能是此技术的关键,它利用DNS将同一个主机名称轮流解析到不同的IP地址上。

完成这些设置工作后,Windows Server 2003 网络中利用多主机服务器来分担网络流量的任务就可以实现了。当许多用户同时访问网络主机时,DNS服务器会先把第一台主机的IP地址回应给第一个用户,然后把第二台主机的IP地址回应给第二个用户,等等,当用完最后一个IP地址后再动态循环到第一台主机,以次类推。用户在访问时不用知道主机的具体网络地址,只要访问主机的名称即可,所有流量的分配工作由DNS 服务器自动完成,而且DNS 服务器还能够根据子网的划分,优先由子网内的主机来处理来自同一子网的用户访问,这样就实现了网络流量在多台主机服务器间的负载平衡。

以上介绍的这种分担流量的方法,使用了Windows Server 2003 中的DFS 和DNS两个服务,技术完全由软件实现,实现起来比较简单,而且成本低,不需要配置额外的硬件。虽然功能相对较少,但使用操作系统本身的网络技术,不需要另外的其他负载平衡服务,所以此方法通用性较强,任何提供目录副本技术和支持DNS循环解析功能的主机服务器都能够实现。

另外,在实际使用时,主机数量要依据网络的流量统计来决定,不切实际地增加主机数量可能会加重文件复制服务和DNS 服务的负担,反而有可能降低系统的总体性能。对于系统要求高,功能复杂的环境,应该根据需求来选择能够满足应用的方案。总之,最终目的是减轻单个主机服务器的负载压力,但不能牺牲网络其他方面的性能,所以要对网络进行统筹规划,如正确划分子网以及确定子网内的主机数量等等。




V68V6 2009-09-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sp1234 的回复:]

实际上,可以让客户端自己去下载服务器列表,自己去处理使用哪一个服务器的问题。
[/Quote]

这才是省钱省力的法子,比投资硬件要划算得多。
红街咖啡 2009-09-17
  • 打赏
  • 举报
回复
恩。好的。我帮顶。
超级大笨狼 2009-09-17
  • 打赏
  • 举报
回复
恩,sp1234说的对,客户端就是我说的前台小姐,负责从web上接受请求分活的。

便宜、功能多、灵活!~~~这个是我需要的结论

谢谢!~~
  • 打赏
  • 举报
回复
你要自己做软件负载均衡?完全可以。

硬件负载均衡的性能比较好。不过软件负载均衡则是便宜、功能多、灵活。

实际上,可以让客户端自己去下载服务器列表,自己去处理使用哪一个服务器的问题。
超级大笨狼 2009-09-17
  • 打赏
  • 举报
回复
业务的特点是内存里的大量运算。(矩阵运算)
liffe 2009-09-17
  • 打赏
  • 举报
回复
sf

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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