`
nirvana_blanks
  • 浏览: 40332 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

ICE的负载均衡以及如何容错

阅读更多


在同一个主机主机上,ICE服务支持多端口的监听。

服务端注册: tcp -h host -p port1:tcp -h host -p port2形式,

例如:

IP:172.17.12.101,需要在10001和10000同时监听。

就可以写成:

tcp -h 172.17.12.101 -p 10000:tcp -h 172.17.12.101 -p 10001


是不是很简单,运行之后,服务就监听于10000和10001端口,请注意:避免其他应用相冲突。


客户端连接可以采用如下3种形式:

1. tcp -h 172.17.12.101 -p 10000
2. tcp -h 172.17.12.101 -p 10001
3. tcp -h 172.17.12.101 -p 10000:tcp -h 172.17.12.101 -p 100001

是不是很爽。

无论Server监听在多个端口,还是只有唯一的一个Server在工作,

对于Client较多的应用或负载要求很高的情况下,我们可以把Server程序运行于多台主机之上。通过集群方式合理有效的化解来自Client的压力。

例如:

ServerA 172.17.12.101 tcp -h 172.17.12.101 -p 10000
ServerB 172.17.12.102 tcp -h 172.17.12.102 -p 10000
ServerC 172.17.12.103 tcp -h 172.17.12.103 -p 10000


Client可以如下的连接方式:
tcp -h 172.17.12.101 -p 10000:tcp -h 172.17.12.102 -p 10000:tcp -h 172.17.12.103 -p 10000

或是
tcp -h 172.17.12.101 -p 10000:tcp -h 172.17.12.102 -p 10000

等多种情况,可以根据应用的具体要求合理有效的构造所需连接主机的字符串。


这种连接方式是不是很cool。

其实这种连接方式可以有效地利用ICE提供的load balancing功能,把Client的每个请求合理的分配到每个Server。从而有效地避免了Client大量请求对同一台Server的巨大压力。


ICE的load balancing主要采用round-robin算法,round-robin是一种非常有效的负载均衡算法.



如果某个Server如果宕机,那么这个Client还能正常工作么?

    具体体现在如果当某个Server(假设是ServerA)宕机之后,来自Client的请求分配到ServerA服务器上,Client会自动记录 ServerA失效状态,会把请求再分配给可正常工作的Server(ServerB,ServerC),对于用户的每次请求都能分配到正常的服务主机上 (除非A,B,C都同时宕机).当ServerA回复正常之后,Client会自动感知ServerA工作状态.Client的请求又可以有效地分配到上述A,B,C主机上.这一切对于开发者都是透明的.

ICE所提供的集群功能和容错功能是极其强大的.

Client状态感知的变化和更新完全不需要Client重新启动。

 

一会儿有空要自己实验下!!

 

介绍下Round-Robin Scheduling:

Round Robin

轮叫调度(Round Robin Scheduling)算法就是以轮叫的方式依次将请求调度不同的服务器,即每次调度执行i = (i + 1) mod n,并选出第i台服务器。算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。   在系统实现时,我们引入了一个额外条件,当服务器的权值为零时,表示该服务器不可用而不被调度。这样做的目的是将服务器切出服务(如屏蔽服务器故障和系统维护),同时与其他加权算法保持一致。所以,算法要作相应的改动,它的算法流程如下:   轮叫调度算法流程   假设有一组服务器S = {S0, S1, …, Sn-1},一个指示变量i表示上一次选择的   服务器,W(Si)表示服务器Si的权值。变量i被初始化为n-1,其中n > 0。   j = i;   do {   j = (j + 1) mod n;   if (W(Sj) > 0) {   i = j;   return Si;   }   } while (j != i);   return NULL;   轮叫调度算法假设所有服务器处理性能均相同,不管服务器的当前连接数和响应速度。该算法相对简单,不适用于服务器组中处理性能不一的情况,而且当请求服务时间变化比较大时,轮叫调度算法容易导致服务器间的负载不平衡。   虽然Round-Robin DNS方法也是以轮叫调度的方式将一个域名解析到多个IP地址,但轮叫DNS方法的调度粒度是基于每个域名服务器的,域名服务器对域名解析的缓存会妨碍轮 叫解析域名生效,这会导致服务器间负载的严重不平衡。这里,IPVS轮叫调度算法的粒度是基于每个连接的,同一用户的不同连接都会被调度到不同的服务器 上,所以这种细粒度的轮叫调度要比DNS的轮叫调度优越很多。

 

 

分享到:
评论

相关推荐

    ice包以及一个用ice做的demo

    6. **负载均衡和容错**:ICE内置了负载均衡和容错机制,可以通过配置轻松地实现服务的高可用性和扩展性。 7. **调试工具**:ICE提供了一套全面的调试工具,如IceGridInspector和IceStormInspector,帮助开发者跟踪...

    elcipse ICE 环境搭建

    ICE支持构建集群以实现负载均衡和容错。集群允许多台服务器分担工作负载,当其中一台服务器出现故障时,其他服务器可以接管其任务,从而提高系统的可靠性和可用性。ICE的集群功能通过ICEStorm消息处理机制和其他组件...

    552404 ZeroC Ice权威指南_ZeroCI_

    6. **负载均衡与容错**:ICE提供了自动的负载均衡和故障恢复机制,增强了系统的健壮性和可用性。 7. **代理模式**:ICE的代理模式允许开发者在不修改原有代码的情况下,实现远程方法调用,增强了系统的灵活性。 8....

    ICE入门 文章集

    马维达可能在这篇文章中分享了他使用ICE的经验,包括解决实际问题的案例,以及如何利用ICE的特性来优化系统性能,例如其内置的负载均衡和容错机制。 《新一代面向对象中间件.pdf》很可能对ICE作为面向对象中间件的...

    Ice-3.4.2安装包

    - **负载均衡与容错**:通过IceGrid,可以实现服务的自动发现、负载均衡和故障恢复,增强了系统的可扩展性和稳定性。 - **跨平台兼容**:Ice可在Windows、Linux、macOS、iOS、Android等多种操作系统上运行,支持32...

    ice客户端和服务端

    6. **负载均衡与容错:** ICE可以与IceGrid结合,实现服务的负载均衡和容错。 7. **自动序列化与反序列化:** ICE处理数据的序列化和反序列化,使得不同系统间的通信变得简单。 在实际应用中,你还需要了解如何配置...

    ice网络通信引擎2

    5. **负载均衡与容错**:ICE提供了负载均衡策略,可以将请求分散到多个服务器,提高系统处理能力。同时,其故障转移功能能在主服务器失效时自动切换到备用服务器,保证服务的连续性。 6. **事件驱动架构**:ICE采用...

    ice-3.4.1-demos.zip

    5. **负载均衡与容错** ICE支持动态发现服务和负载均衡策略,使得系统能应对高并发和故障恢复。Demo中展示了如何配置和使用这些特性,如使用IceGrid进行服务注册和负载均衡,以及实现故障转移和恢复。 6. **安全与...

    ICE 的聊天demo 含有ICE的配置文档

    ICE的核心特性包括高效的序列化、负载均衡、容错机制和安全特性,使得它成为构建大规模分布式系统的选择。 2. **Chat.ice**:这是一个ICE接口定义文件,通常以`.ice`扩展名存储。在这个文件中,定义了聊天应用的...

    Ice zero分布式程序设计2分

    8. **负载均衡与容错**:Ice Zero支持动态发现服务和负载均衡策略,能有效地应对服务器故障,提高系统的可用性和稳定性。 9. **服务治理**:支持服务注册、发现和服务版本管理,便于服务的升级和维护。 通过阅读...

    ICE包_32位

    其核心特性包括对象透明远程调用(ORTC)、自动序列化与反序列化、安全性、容错性以及负载均衡。 1. 对象透明远程调用:ICE实现了RPC(Remote Procedure Call)的概念,使得开发者可以在不关心调用者和被调用者实际...

    ICE 示例代码

    示例可能包括简单的客户端和服务端通信,以及更复杂的场景如负载均衡和容错机制。 2. **Java 示例**:Java 示例展示了如何在 Java 应用中集成 ICE,包括创建服务提供者和服务消费者,以及如何处理并发请求。这有助...

    zeroc ICE 3.6

    4. **负载均衡与容错**:通过ICE的代理和 locator 机制,可以实现客户端请求的负载均衡,同时提供故障转移功能,增强系统的可用性和稳定性。 5. **自动代码生成**:ICE 提供了IDL(接口定义语言),开发者可以使用 ...

    基于ICE中间件平台的短波分布式分集接收系统架构设计.pdf

    总结来说,基于ICE中间件的短波分布式分集接收系统架构设计,融合了分布式计算的优势,通过优化的系统部署、调用模式、负载均衡和容错性设计,实现了高效、可靠的短波通信接收。对于短波通信领域的研究和实践,这样...

    ice网络通信引擎

    7. **负载均衡与容错**: ICE支持动态发现服务和负载均衡,能够自动检测服务器状态并重新路由请求。当服务器故障时,它可以实现故障切换,保证服务的高可用性。 8. **调试与监控工具**: 提供了丰富的诊断和监控...

    ICE中间插件

    7. **负载均衡与容错**:ICE中间件具备内置的负载均衡和故障恢复机制,能够自动检测服务器状态并重新路由请求,保证服务的高可用性。 8. **调试工具**:ICE提供了一系列的开发工具,如监控工具、性能分析工具等,...

    基于ICE中间件的分布式搜索服务

    - **负载均衡算法**:ICE内置了多种负载均衡算法,可以根据实际情况选择合适的算法来平衡各个节点的负载。常见的算法包括轮询、最少连接等。 - **故障检测与恢复**:ICE支持故障检测机制,能够在检测到节点故障后...

    ICE系列培训教程

    3. **容错与负载均衡**:ICE提供故障切换和负载均衡机制,保证服务的高可用性。 六、学习ICE的步骤 1. 理解基本概念:熟悉ICE框架的组件、IDL和通信模型。 2. 编写第一个ICE程序:通过创建简单的服务和客户端,了解...

    ice——java集群

    4. **自动负载均衡**:通过IceGrid,服务实例可以自动分配到集群的不同节点,实现负载均衡。 5. **故障恢复与容错**:当某个节点出现故障时,IceGrid可以自动将请求重定向到其他健康的节点,确保服务的连续性。 6....

Global site tag (gtag.js) - Google Analytics