分布式程序员缺乏什么工具?

我有一个梦想,改善分布式编程的世界:)

特别是,我感觉缺乏必要的工具来debugging,监视,理解和可视化分布式系统的行为(我必须编写自己的logging器和可视化器来满足我的需求),而且我正在编写一对这些工具在我的空闲时间。

社区,你有什么工具缺乏这方面的? 请描述一个答案,粗略地说明这个工具应该做什么。 其他人可以指出这样的工具的存在,或者有人可能会得到启发和写作。

好的,让我开始吧。

具有高精度全球时间轴的分布式logging器 – 允许高精度地在分布式系统中logging来自不同机器的事件,并且独立于时钟偏移和漂移; 具有足够的可扩展性来处理几百台机器和几千个日志进程的负载。 这种logging器允许通过查看消息从发布者到订阅者通过消息队列等实际需要多less毫秒来find分布式系统中的传输级延迟瓶颈

系统日志不好,因为它不够可扩展 – 每秒50000个日志事件对它来说太多了,在这样的负载下,时间戳精度将受到很大的影响。

Facebook的抄写员并不好,因为它没有提供全球时间轴。

实际上,syslog和抄写员都在到达时间戳之前注册事件,而不是在发生时间戳之下。

老实说,我并不缺乏这样一个工具 – 我为自己写了一个,我对它很满意,而且我打算开源。 但其他人可能会。

PS我已经开源: http : //code.google.com/p/greg

亲爱的圣诞老人,我希望可视化分布式系统中组件之间的交互。

我想要一个视觉performance显示:

  • 组件之间的交互,或者作为UML协作图或者序列图。
  • 组件closures和启动时间作为自我交互。
  • 当前正在运行哪些主机组件。
  • 这些主机的位置,如果有的话,在build筑物内或地理上。
  • 主机关机和启动时间。

我希望能够:

  • 过滤显示的组件和/或交互,以仅显示感兴趣的组件。
  • logging交互。
  • 在静态图中显示所需的时间范围。
  • 通过典型的video控件播放,暂停,倒带,快进,在animation中回放交互。

我一整年都是一名优秀的开发人员,而且真的很喜欢这个。

然后再看看这个问题 – 如何可视化许多并发的多阶段过程的行为? 。

替代文字

(我很无耻地提到我自己的东西,但那是因为这个东西解决的问题对我来说很重要,而现在的问题恰恰是关于某个人的重要问题)。

你可以看看erlang / OTP的一些工具。 它没有其他人提出的所有function,但其中一些function非常方便,并且build有很多经验。 其中一些是,例如:

  • debugging器,可以debugging并发进程,也可以远程AFAIR
  • mnesia / ets表的内省工具以及过程堆
  • 消息跟踪
  • 在本地和远程节点上加载监视
  • 分布式日志和错误报告系统
  • 探查器适用于分布式场景
  • 分布式系统的进程/任务/应用程序pipe理器

当然,除了平台提供的基本function,如节点发现,IPC协议,RPC协议和服务,透明分配,分布式内置数据库存储,进程名称的全局和节点本地注册以及所有其他基础东西,使平台tic。

我认为这是一个很好的问题,这里是我对0.02的工具,我会发现真正有用的。 我在分布式编程中遇到的挑战之一是将代码部署到多台机器上。 通常这些机器可能会有轻微变化的configuration,或者更糟的是有不同的应用设置。

我所想到的工具将是一个可以根据需要伸出应用程序部署的所有机器并提供系统信息的工具。 如果指定了一个设置文件或registry等资源,它将提供所有机器的列表。 它也可以查看运行应用程序的用户的用户访问权限。

当设置与开发者提供的主列表不匹配时,一个改进就是提供指示。 它也可以指示具有不同configuration并提供差异function的服务器。

这对于.NET应用程序来说是非常有用的,因为有很多configuration(machine.config,application.config,IIS设置,用户权限等),因此不同configuration的可能性很高。

在我看来,缺less的是一个分布式编程平台……一个使分布式系统上的应用程序编程像非分布式编程一样透明的平台。

你也可以看看Akka: http : //akka.io

当我们甚至不同意一个平台时,使用Tools是不是有点早? 我们有几种types的演员模型,虚拟共享存储器,UMA,NUMA,同步数据stream,带标记的令牌数据stream,多层存储器向量处理器,集群,消息传递网格或片上networking,PGAS,DGAS等。

随意添加更多。

贡献:通过构build一个DAG,我发现自己编写了大量的分布式程序,这个DAG被转化为平台特定的代码。 每个平台优化都是这个DAG上的一种不同types的转换规则。 您可以在Microsoft Accelerator和Dryad,Intel的Concurrent Collections,MIT的StreaMIT等中看到相同的情况。收集所有这些DAG转换的与语言无关的库将节省您每次重新发明轮子的时间。

让我通过指向Greg logger( http://code.google.com/p/greg)来通知那些喜欢这个问题的人。; 这是一个高精度的全球时间轴的分布式logging器,我在这个线程的另一个答案中已经谈到了。

除了上面提到的“可视化多个并发多级进程的行为”(splot)的工具之外,我还写了适合在日志中显示定量模式的“tplot”。

关于这两个工具的大型演示文稿,这里有很多漂亮的图片 。