常见的服务间通信方式
- HTTP:基于RESTful架构风格,使用HTTP协议进行通信。它简单、通用,可跨平台、跨语言。许多现代微服务框架都支持基于HTTP的API设计。
- 消息队列:如RabbitMQ、Kafka等。通过异步消息传递,解耦服务间的直接依赖,提高系统的可扩展性和容错性。适用于处理高并发、异步任务等场景。
- RPC(远程过程调用):像gRPC,允许像调用本地方法一样调用远程服务。它基于HTTP/2协议,性能高,适合对性能要求较高的场景。
使用HTTP实现两个微服务之间简单数据传递
思路
- 服务端:创建一个基于Ruby的HTTP服务器,定义接收数据的接口,并处理接收到的数据。
- 客户端:构建HTTP请求,将数据发送到服务端定义的接口。
关键代码片段
- 服务端(使用Sinatra框架):
require 'sinatra'
post '/receive_data' do
data = JSON.parse(request.body.read)
# 处理接收到的数据,例如存储到数据库
puts "Received data: #{data}"
'Data received successfully'
end
- 客户端:
require 'net/http'
require 'json'
uri = URI('http://localhost:4567/receive_data')
data = { key: 'value' }.to_json
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request.body = data
response = http.request(request)
puts response.body