What tools do not have distributed programmers?

I have a dream to improve the world of distributed programming :)

In particular, I lack the necessary tools for debugging, monitoring, understanding and visualizing the behavior of distributed systems (hell, I had to write my own logger and visualizers to satisfy my requirements), and I wrote a couple of such tools in my free time.

Community, what tools are you missing in this regard? Please describe one answer to one question, with a rough idea of ​​what this tool should do. Others may indicate the existence of such tools, or someone may be inspired and write them.

+49
language-agnostic distributed
Nov 23 '10 at 8:25
source share
10 answers

OK, let me start.

Distributed recorder with a high-precision global time axis - allows you to register events from different machines in a distributed system with high accuracy and independent in offset and drift of the clock; with sufficient scalability to handle loads of several hundred machines and several thousand logging processes. Such a registrar makes it possible to find bottlenecks of delays at the transport level in a distributed system, seeing, for example, how many milliseconds it actually takes for a message to move from the publisher to the subscriber through a message queue, etc.

Syslog does not work because it is not scalable enough - 50,000 logging events per second will be too large for it, and the accuracy of the timestamp will suffer greatly with such a load.

Facebook Scribe does not work because it does not provide a global time axis.

In fact, both syslog and scribe log events under timestamps, not timestamps.

Honestly, I miss this tool - I wrote one for myself, I am very pleased with this, and I'm going to open it up with open source code. But others can.

PS I opened it: http://code.google.com/p/greg

+14
Nov 23 2018-10-11T00:
source share

Dear Santa, I would like to visualize the interactions between the components in a distributed system.

I would like a visual presentation to show:

  • The interaction between the components is either a UML collaboration diagram or a sequence diagram.
  • Component shutdown and startup time as separate interactions.
  • Which host components are currently running.
  • The location of these hosts, if available, within the building or geographically.
  • Shutdown and host startup time.

I would like to be able to:

  • Filter the displayed components and / or interactions to display only those of interest to you.
  • Recording interactions.
  • Display the desired time range in a static diagram.
  • Play interactions in animations with typical video controls for playback, pause, rewind, fast forward.

I have been a good developer all year long and really enjoyed it.

+10
Nov 23 2018-10-11
source share

Then look again at this question - How to visualize the behavior of many parallel multi-stage processes? .

alt text

(I shamelessly refer to my own things, but this is because the problems solved by this material were important to me, and the current question is about problems that are important to someone).

+9
Nov 23 2018-10-11T00:
source share

You can take a look at some of the tools that come with erlang / OTP. It does not have all the functions that other people offered, but some of them are very convenient and built with great experience. Some of them, for example:

  • A debugger that can debug concurrent processes, also remotely, AFAIR
  • Introspection tools for mnesia / ets tables, as well as process heaps.
  • Message tracing
  • Monitoring load on local and remote nodes.
  • distributed logging and error reporting system
  • which works for distributed scripts
  • Process / task / application manager for distributed systems

This, of course, in addition to the basic functions provided by the platform, such as Node discovery, IPC protocol, RPC protocols and services, a transparent distribution kit, distributed built-in database storage, global and node-local registry for process names and all other basic elements that make the tic platform.

+5
Nov 23 '10 at 23:36
source share

I think this is a great question, and here is my 0.02 on a tool that I would find really useful. One of the problems I find in distributed programming is deploying code on multiple machines. Quite often, these machines may have slightly changing configurations or, even worse, have different application settings.

The tool that I mean is one that, upon request, can access all the machines on which the application is deployed and provide system information. If you specify a settings file or resource as a registry, it will provide a list for all machines. It can also view user access rights for users running the application.

Clarification will be to provide guidance when the settings do not match the main list provided by the developer. It can also point to servers that have different configurations and provide diff functionality.

This would be very useful for .NET applications, as there are so many configurations (machine.config, application.config, IIS Settings, User permissions, etc.) that the chances of various configurations are high.

+2
Nov 23 '10 at 9:15
source share

In my opinion, there is no distributed programming platform ... a platform that makes applied programming on distributed systems transparent, like non-distributed programming.

+2
Nov 23 '10 at 12:32
source share

You can also take a look at Akka: http://akka.io

+2
Nov 23 '10 at 18:23
source share

Isn’t it too early to work with tools when we don’t even agree on the platform? We have several varieties of acting models, virtual shared memory, UMA, NUMA, synchronous data stream, labeled token stream, multi-core vector memory processors, clusters, message or network-on-a-chip networks, PGAS, DGAS, etc.

Feel free to add more.

To contribute: I find that I write many distributed programs by creating a DAG that transforms into platform-specific code. Each platform optimization is a different type of translation rule in this DAG. You can see the same in Microsoft Accelerator and Dryad, Intel Concurrent Collections, MIT StreaMIT, etc. A language agnostic library that compiles all of these DAG transformations will save you from time to time reinventing the wheel.

+1
Nov 23 '10 at 13:27
source share

Let me notify those who took advantage of this issue by pointing to the Greg registrar - http://code.google.com/p/greg . This is a distributed journal with a high point of global time, which I talked about in another answer in this thread.

0
Dec 6 '10 at 20:27
source share

Besides the mentioned tool for “visualizing the behavior of many parallel multi-stage processes” (splot), I also wrote “tplot”, which is suitable for displaying quantitative patterns in magazines.

A great presentation about all the tools, with lots of nice pictures here .

0
Dec 16 '10 at 18:25
source share



All Articles