On Mon, Dec 6, 2021 at 6:24 AM Henry lol <pub.virtualization(a)gmail.com>
wrote:
2021년 12월 3일 (금) 오후 7:39, Piotr Kliczewski
<pkliczew(a)redhat.xn--com>-4f21ay07k 작성:
>
>
>
> On Fri, Dec 3, 2021 at 11:22 AM Henry lol <pub.virtualization(a)gmail.com>
wrote:
>>
>> In my understanding, an internal broker was introduced with benefits
and enough to cover the workload, right?
>
>
> In general it is correct. There is no broker process running but rather
the code is spread between the client (engine) and server (vdsm).
>
>>
>>
>> but not clear about the need for it on oVirt because I'm not sure there
are so many message flows(or message topics).
>
>
> We created a topic per type of interactions (commands) that are being
called. Good number of them are defined.
>
>>
>> I felt like it acts as just a proxy only between engine and rpc server,
so it looks more desirable to me to directly communicate without message
queues in the middle.
>> (even internal broker is coupled with vdsm)
>
>
> We were concerned about topology complexity and never decided to use an
external (proxy) broker. The transport communication hides details so from
a logic perspective it
> looks like direct communication. Please remember that in the past
transport was fully synchronous and one of the requirements was to abstract
async so the business layer
> can work without changes.
>
yeah as you said, the business layer can focus on their own logic
thanks to the transport layer.
I thought that the transport layer could be also abstracted and
implemented from raw tcp or websocket, and at first that using msg
protocol with the broker is just an additional overhead. (correct me
if i'm wrong)
(i.e. json-rpc communication through tcp or websocket)
During the transition process we had several protocols being supported so
the abstractions are
there. Raw tcp is there and you can implement "just" json-rpc on top of it.
In the past we were using xmlrpc
so with this approach you would have unidirectional communication and no
notifications.
It was our starting point with the transport changes we did.
but as Artur said, the main reason for using stomp here seems to
easily propagate and define msg flows, right?
There is more to it. We use stomp heartbeats
<
https://stomp.github.io/stomp-specification-1.2.html#Heart-beating>to
determine if a host is healthy. It is used to trigger fencing flow when the
host is not reachable.
sorry again in advance if it sounds foolish.
>>
>>
>> could I know usecases of it in oVirt compared to raw tcp?
>
>
> Interesting one is bidirectional notifications which need to be
delivered to specific parts of the logic on either side.
> For most of use cases we could get away with raw tcp.
>
>>
>>
>> sorry in advance if it sounds foolish.