我想尝试编写可以跨多个端点执行操作的东西,这样当一台计算机上发生事情时,其他事件上就会发生事件。显然,这里的问题是将命令发送到其他端点。
我只是不确定我将使用哪个程序来执行此操作,我猜测它必须使用使用某种客户端服务器模型的API。我希望人们可以使用这些东西,但我不知道它们叫什么。
我该怎么做呢?是否有允许人们这样做的常见API?
答案 0 :(得分:2)
有(至少)两种类型可以区分: RPC API和消息队列(MQ)
RPC样式API 可以像远程可调用接口一样成像,它通常会为每个请求提供一个响应。 Apache Thrift 1)是为此目的而设计的框架之一:易于使用的跨平台,跨语言的RPC框架。 (哦,是的,它也支持Erlang,以防万一......)。还有其他几个,比如Googles协议缓冲区,Apache Avro等等。
消息队列系统更适用于需要或接受更松散耦合的情况。与RPC样式的框架和API相比,消息传递队列将请求和响应分离得更多。例如,MQ系统更适合于将工作分发给多个处理程序,或者通过生产者/消费者或发布/订阅模式将一个事件分发给多个接收者。典型的候选者可能是MSMQ,ApacheMQ或RabbitMQ
虽然使用RPC也可以实现,但它更复杂,并且在更低的抽象级别上运行时需要更多的工作。当您需要更多的请求/响应样式并且值性能高于MQ的舒适度时,RPC会闪耀。
在MQ系统之上有更复杂的 Service Bus 系统,例如NServiceBus。服务总线在更高的抽象级别上运行。他们也有自己的职业和对手,但也可以提供帮助。最后,这取决于您的使用案例。
1) 免责声明:我积极参与该项目。
答案 1 :(得分:0)
如果没有更多信息,我建议您查看Erlang。它可能是学习分布式系统最简单的语言,因为发送消息是内置于语言中的,如果消息是在同一台PC,LAN或通过互联网发送到不同的机器上,则它与语言和命令本身无关。