MST
星途 面试题库

面试题:Ruby中如何实现分布式系统的简单节点通信

在Ruby的分布式系统开发场景下,假设存在两个节点,简述如何使用Ruby的相关库实现这两个节点之间简单的消息通信,可举例说明主要步骤和涉及的关键代码。
25.7万 热度难度
编程语言Ruby

知识考点

AI 面试

面试题答案

一键面试

1. 使用 socket 库实现简单消息通信

  1. 服务端(接收消息的节点)
    • 创建套接字
require 'socket'
server = TCPServer.new('localhost', 12345)
- **监听连接并接收消息**:
loop do
  client = server.accept
  data = client.gets
  puts "Received: #{data}"
  client.close
end
  1. 客户端(发送消息的节点)
    • 创建套接字并连接到服务端
require 'socket'
client = TCPSocket.new('localhost', 12345)
- **发送消息**:
message = "Hello, Server!"
client.puts message
client.close

2. 使用 ZeroMQ 库(更适合分布式场景)

  1. 安装 ZeroMQ
gem install zmq
  1. 服务端(接收消息的节点)
    • 设置 ZeroMQ 上下文和套接字
require 'zmq'
context = ZMQ::Context.new
socket = context.socket(ZMQ::REP)
socket.bind('tcp://*:12345')
- **接收并回复消息**:
while true
  message = socket.recv_string
  puts "Received: #{message}"
  socket.send_string("Message received successfully")
end
  1. 客户端(发送消息的节点)
    • 设置 ZeroMQ 上下文和套接字
require 'zmq'
context = ZMQ::Context.new
socket = context.socket(ZMQ::REQ)
socket.connect('tcp://localhost:12345')
- **发送消息并接收回复**:
message = "Hello, Server!"
socket.send_string(message)
reply = socket.recv_string
puts "Received reply: #{reply}"