项目需要,在写Master/Slave底层分布式通信模块,它的体系结构图:
通信模式:可以选择Socket和或者Socket之上的RPC协议来进行,考虑到项目的需求,使用了RPC来支持Master和Slave之间的通信。
Master与Slave之间实现互联的功能并不难,但是Master与Slave之间的相互感知功能,Master节点的异常或者Slave节点的宕机,都是在设计时应该考虑的问题。
1)Slave节点正常退出之前,应该通知Master。这个功能通过Slave节点运行时添加Runtime.getRuntime().addShutdownHook(? extends Thread), 的方法来做处理, 在具体的Thread方法中仍然可以使用RPC来通知Master.
2) Slave节点非正常退出,这个原因可能是多方面的。这个由Master根据收到的Slave节点的心跳包的异常,比方说,Master原来是每10s收到一个心跳包,但是Slave A已经1分钟没有发送心跳包了,这时Master会把Slave节点从active列表中取出,然后通过发送ping来验证,Slave后面的端口是否还存在。
3)Master正常退出和非正常宕机,可以将这两点统一对待,因为Master一旦不工作,将会对整个系统的影响是毁灭性的,所以,必须提高LOG的级别为SERVER.
提供Master的容错能力可以通过以下步骤来做:
1) Master退出之后,使用Zookeeper选择一个新的Master,需要对于记录系统执行的详细状态,并持久化到文件中。
2) 准备一个Standby Master, 在开始阶段Standby Master不提供服务,等到一个Master宕机之后,Standby Master开始代替原Master进行工作。
3)Slave节点对于在心跳阶段条件轮询功能,探测Master节点的状态,探测Master节点not available,则对于slave与Master通信的线程,暂时suspend,等到新的master到来之后的notify。
实现一个系统,不仅仅是功能的实现,更多的时候,还有对于整体上的把握,要是每一个模块清晰,透彻,哪怕一个很复杂的功能实现,都要经过一步一步的剖析,直到每一块都是清晰可见
from:http://blog.sina.com.cn/s/blog_4a1f59bf0100nd6c.html
相关推荐
ActiveMQ支持多种高可用的主从配置模式,包括Shared File System Master/Slave、JDBC Master/Slave和Replicated LevelDB Store。文章主要介绍了使用JDBC Master/Slave模式来实现ActiveMQ的高可用配置。 在JDBC ...
标题中的"Modbus-Master-Slave-for-Arduino-master.zip_Master/Slave_arduino"指出这是一个关于Arduino平台的Modbus主从通信库。Modbus是一种广泛使用的工业通信协议,允许不同设备之间交换数据,尤其在自动化系统中...
8配合主/从(Master/Slave)通信模式构建智能楼宇控制系统,这主要基于"64143308_LOGO_Set9_Master_Slave_CODE_v21_Master/Slave_siemens_"项目。 LOGO! 8系统以其紧凑的尺寸、易于编程和强大的功能而受到赞誉。在...
在Master/Slave配置中,Master STM32通常会产生脉冲序列和方向信号,这些信号通过通信总线(如I2C、SPI或UART)发送到Slave STM32。Slave微控制器接收并解析这些命令,然后驱动步进电机的绕组,实现电机的旋转。 在...
在电子和计算机通信领域,主从结构(Master/Slave)是一种常见的通信模式,尤其是在I2C(Inter-Integrated Circuit)总线协议中。标题“mater_slave_inter.gz_Master/Slave”暗示了我们即将讨论的内容与I2C主从通信...
本压缩包文件"wb_master.zip_Master/Slave_wbmaster_wishbone"提供了实现Wishbone主设备(Master)的接口,以便与Wishbone从设备(Slave)进行通信,并且包含了时钟模块,这对于数字电路设计至关重要。 标题"wb_...
通过深入理解和实践"Master_Slave_Interrupt.rar_Master/Slave"中的示例,你可以掌握在ARM Keil环境下使用I2C主-从模式并结合中断处理的关键技能,这对于任何涉及I2C通信的嵌入式系统设计都是极其有价值的。
标题“Master_slave_multi_machine.rar_Master-slave_Master/Slave_multi m”暗示了我们正在讨论的焦点是关于主从结构在多机器环境中的应用。 描述“主从多机通信系统问题研究建模及其实性研究”表明我们将深入探讨...
在 Arduino 的上下文中,主从架构常用于多设备通信,其中一个设备作为主控器(Master),其余作为从设备(Slave)。这种架构允许多个 Arduino 板协同工作,主设备负责协调和控制,而从设备执行特定任务。 【描述】...
实现PWM Master-Slave通信,首先需要配置ATMEGA 8的USART(Universal Synchronous/Asynchronous Receiver Transmitter),它是微控制器中的串行通信接口。USART允许ATMEGA 8与其他设备进行全双工数据传输,可以设置...
5. **启动复制**:在从服务器上,使用`START SLAVE`命令启动复制进程。此时,从服务器将开始读取主服务器的binlog并执行相应的SQL语句。 二、主从复制工作原理 1. **写操作**:在主服务器上,任何数据修改都会被...
5. **仿真和测试向量**:为了验证设计的正确性,实例可能包含用于测试 GPIF 功能的仿真文件和输入/输出数据序列,这些可以帮助检查 Master 和 Slave 模式的通信是否符合预期。 通过这个实例,学习者可以了解到 GPIF...
在本项目“tvip-axi-master_Master/Slave_axivip_tvip_vip_AMBA”中,我们主要探讨的是与AXI协议相关的VIP(Verification Intellectual Property)组件,包括Master和Slave端。 VIP是验证IP的核心组件,用于在系统...
在这个“i2s_master_slave_vhdl.rar”压缩包中,包含的是用VHDL语言实现的I2S主从模式的代码,同时也有一个Verilog版本的I2S slave模块,这对于理解和设计嵌入式音频系统非常有帮助。 首先,我们要理解I2S总线的...
在这个名为"master_slave_tx_rx_code-master.zip_Master/Slave"的压缩包中,我们很显然会找到与CC2500相关的主(Master)从(Slave)模式的传输和接收代码。这种通信模式是许多无线网络协议的基础,如I2C、SPI和UART...
总之,“Auto-Mode.rar_Master/Slave_gpif master” 提供的资源对于理解并实现 Cypress GPIF 的自动模式和主从模式通信具有重要价值。通过深入研究和应用这些代码,开发者可以优化其嵌入式系统中的数据传输性能,...
《Modbus_Master_slave_STM32modrtu主从站_modbusRTU_modbus_Master/Slave》 在工业自动化领域,Modbus协议是广泛应用的一种通信协议,尤其在嵌入式系统如STM32微控制器中,它扮演着重要的角色。本资源主要涵盖STM...
Master-Slave的数据库机构解决了很多问题,特别是read/write比较高的web2.0应用: 1、写操作全部在Master结点执行,并由Slave数据库结点定时(默认60s)读取Master的bin-log 2、将众多的用户读请求分散到更多的...
标题中的“Modbus_master.zip_ S7 200_Master/Slave_VBA modbus_modbus s7 200”表明这是一个与西门子S7-200 PLC(可编程逻辑控制器)相关的项目,该项目涉及到Modbus通信协议,且包含主站(Master)和从站(Slave)...