better MQ analysis

master
Teyras 8 years ago
parent 7e0d70c33c
commit cf867f2906

@ -902,10 +902,11 @@ following options are considered:
remote procedure calls. There are multiple implementations for almost every remote procedure calls. There are multiple implementations for almost every
known programming language. It fits nicely into object oriented programming known programming language. It fits nicely into object oriented programming
environment. environment.
- RabbitMQ -- RabbitMQ is a messaging framework written in Erlang. It has - RabbitMQ -- RabbitMQ is a messaging framework written in Erlang. It features a
bindings to a large number of languages and large community. Also, it is message broker, to which nodes connect and declare the message queues they
capable of routing requests, which could be handy feature for job work with. It is also capable of routing requests, which could be a useful
load-balancing. feature for job load-balancing. Bindings exist for a large number of languages
and there is a large community supporting the project.
- ZeroMQ -- ZeroMQ is another messaging framework, which is different from - ZeroMQ -- ZeroMQ is another messaging framework, which is different from
RabbitMQ and others (such as ActiveMQ) because it features a "brokerless RabbitMQ and others (such as ActiveMQ) because it features a "brokerless
design". This means there is no need to launch a message broker service to design". This means there is no need to launch a message broker service to
@ -917,12 +918,20 @@ following options are considered:
CORBA is a large framework that would satisfy all our needs, but we are aiming CORBA is a large framework that would satisfy all our needs, but we are aiming
towards a more loosely-coupled system, and asynchronous messaging seems better towards a more loosely-coupled system, and asynchronous messaging seems better
for this approach than RPC. RabbitMQ seems nice with great advantage of routing for this approach than RPC. Moreover, we rarely need to receive replies to our
capability, but it is a quite heavy service written in language no one from the requests immediately.
team knows, so we do not like it much. ZeroMQ is the best option for us, even
with the drawback of having to implement a load balancer ourselves (which could RabbitMQ seems well suited for many use cases, but implementing a job routing
also be seen as a benefit). However, all of the three options would have been mechanism between heterogenous workers would be complicated -- we would probably
possible to use. have to create a separate load balancing service, which cancels the advantage of
a message broker already being provided by the framework. It is also written in
Erlang, which nobody from our team understands.
ZeroMQ is the best option for us, even with the drawback of having to implement
a load balancer ourselves (which could also be seen as a benefit and there is a
notable chance we would have to do the same with RabbitMQ). It also gives us
complete control over the transmitted messages and communication patterns.
However, all of the three options would have been possible to use.
### Frontend - backend communication ### Frontend - backend communication

Loading…
Cancel
Save