Backend communication

master
Petr Stefan 8 years ago
parent addd575b8a
commit 26f1c1b269

@ -714,9 +714,40 @@ interesting observations will be discussed in this chapter.
### General communication ### General communication
@todo: what type of communication within backend could be used, mention some Overall design of the project is discussed above. There are bunch of components
frameworks, queue managers, protocols, which was considered - why we don't use with their own responsibility. Important thing to design is communication of
CORBA, RabbitMQ and why is ZeroMQ great these components. All we can count with is that they are connected by network.
To choose a suitable protocol, there are some additional requirements that
should be met:
- reliability -- if a message is sent between components, the protocol has to
ensure that it is received by target component
- working over IP protocol
- multi-platform and multi-language usage
TCP/IP protocol meets these conditions, however it is quite low level and
working with it usually requires working with platform dependent non-object API.
Often way to reflect these reproaches is to use some framework which provides
better abstraction and more suitable API. We decided to go this way, so the
following options are considered:
- CORBA -- Corba is a well known framework for remote object invocation. There
are multiple implementations for almost every known programming language. It
fits nicely into object oriented programming environment.
- RabbitMQ -- RabbitMQ is a messaging framework written in Erlang. It has
bindings to huge number of languages and large community. Also, it is capable
of routing requests, which could be handy feature for job loadbalancing.
- ZeroMQ -- ZeroMQ is another messaging framework, but instead of creating
separate service this is a small library which can be embedded into own
projects. It is written in C++ with huge number of bindings.
We like CORBA, but our system should be more loosely-coupled, so (asynchronous)
messaging is better approach in our minds. RabbitMQ seems nice with great
advantage of routing capability, but it is quite heavy service written in
language no one from the team knows, so we do not like it much. ZeroMQ is the
best option for us. However, all of the three options would have been possible
to use.
Frontend communication follows the choice, that ReCodEx should be primary a web Frontend communication follows the choice, that ReCodEx should be primary a web
application. The communication protocol has to reflect client-server application. The communication protocol has to reflect client-server

Loading…
Cancel
Save