Design a template for monitoring a distributed system?

I have a distributed system: 12-14 applications running on 10 mailboxes (each of which contains about 8 cores). My applications are highly multithreaded.

My apps are pretty busy during the day. Delay is critical to what I am doing.

Given the circumstances, I have a new additional requirement that I have to keep track of the many memory objects distributed in these applications and generate some reports (maybe a web page or text file does not matter).

I am looking for design patterns related to monitoring work. My concern is that I should not introduce any delay in the form of monitoring / observer streams doing something unpleasant. If this helps, I am mostly C ++ at this point, so such low-level things like shared memory, etc. are certainly on the table.

+4
source share
1 answer

You have a very wide question!

Here are some ideas:

  • An event-driven architecture allows you to invert message flow and simplifies work with asynchronous workflows.

  • EDA also works great with an Event Search Strategy for State Management.

  • Message queues are generally well suited as a transport mechanism for events and, well, messages. They usually adhere to a specific set of performance characteristics, but you must make sure that they are suitable for your purposes.

  • If you need even more speed, you can use a blocking structure such as a ring buffer as a queue in memory to separate the main business logic from the reporting logic.

I understand that my answer is very general, but I hope this helps.

+6
source

Source: https://habr.com/ru/post/1485678/


All Articles