分布式程序员缺少哪些工具?

jkf*_*kff 49 language-agnostic distributed

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

特别是,我觉得缺乏必要的工具来调试,监控,理解和可视化分布式系统的行为(哎呀,我必须编写自己的记录器和可视化器来满足我的要求),而且我正在写一对这些工具在我的空闲时间.

社区,在这方面缺少什么工具?请描述每个答案,并大致了解该工具应该做什么.其他人可以指出这些工具的存在,或者有人可能会受到启发并编写它们.

jkf*_*kff 14

好的,让我开始吧.

具有高精度全局时间轴的分布式记录器 - 允许在分布式系统中注册来自不同机器的事件,具有高精度且独立于时钟偏移和漂移; 具有足够的可扩展性,可处理数百台机器和数千个日志记录过程的负载.这样的记录器允许通过查看例如消息通过消息队列从发布者到订户实际花费多少毫秒来查找分布式系统中的传输级延迟瓶颈.

Syslog不行,因为它不够可扩展 - 每秒50000个日志记录事件对它来说太多了,并且在这种负载下时间戳精度会受到很大影响.

Facebook的Scribe不合适,因为它没有提供全球时间轴.

实际上,syslog和scribe都在到达时间戳下注册事件,而不是在出现时间戳下.

老实说,我并不缺少这样的工具 - 我为自己编写了一个工具,我对它非常满意,我将开源它.但其他人可能.

PS我是开源的:http://code.google.com/p/greg

  • 你是怎么做到的?你的工具不违反物理定律吗?:)根据狭义相对论,没有全球绝对时间这样的东西. (7认同)
  • 它的精度是有限的,但对于我在快速LAN上的目的来说足够高(精度〜=网络延迟的不对称性,ti微秒或最多毫秒).它测量客户端的事件并校准客户端的时钟偏移. (3认同)

And*_*mas 10

亲爱的圣诞老人,我想要了解分布式系统中组件之间交互的可视化.

我想要一个直观的表示:

  • 组件之间的交互,可以是UML协作图或序列图.
  • 组件关闭和启动时间作为自我交互.
  • 当前正在运行的主机组件.
  • 这些主机的位置(如果有),在建筑物内或地理位置.
  • 主机关闭和启动时间.

我希望能够:

  • 过滤显示的组件和/或交互以仅显示感兴趣的组件和/或交互.
  • 记录互动.
  • 在静态图中显示所需的时间范围.
  • 播放动画中的交互,使用典型的视频控件进行播放,暂停,倒带,快进.

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


jkf*_*kff 9

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

替代文字

(I'm shamelessly refering to my own stuff, but that's because the problems solved by this stuff were important for me, and the current question is precisely about problems that are important for someone).


Ama*_*iro 5

您可以查看一下erlang/OTP附带的一些工具.它没有其他人建议的所有功能,但其中一些非常方便,并且具有丰富的经验.其中一些是,例如:

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

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