微服务:更有味道的 shell 命令

微服务:更有味道的 shell 命令

原文:https://medium.com/hackernoon/microservices-shell-commands-with-added-flavor-b3c0bcfe12fb

现在在闪亮的新包装中有了更多的网络。

Shell 命令很神奇。对于不经常使用某种形式的 shell 交互的人来说,通过 shell 观看某人工作是一种神奇的计算机语言。你可能会想到一部流行电影中的场景,经典的黑客刻板印象坐在那里,用看起来像外星语言的东西敲着

然而,我在 shell 中花了相当多的时间,我知道它不是一种外星语言。然而,shell 命令仍然很神奇,只是出于不同的原因。

我看过其中一些的代码。我敢肯定,成千上万个小时已经花在编码和测试每一个命令上了。我知道有些被放入我正在使用的 shell 中,而其他许多是存储在我的路径中某处的独立实用程序。它们为什么有魔力?

是因为他们把“把一件事做得非常非常好”这个概念发挥到了极致。比起怀疑 lstrgrep 的正确运行,我更有可能怀疑自己的技能。

那么这和微服务有什么关系呢?我认为彼得·西巴赫的《编写 Linux 实用程序的艺术》中的这句话很好地总结了这一点:

一个好的公用事业公司是尽可能把工作做好的公司。它得和别人玩得好;它必须能够与其他实用程序相结合。一个不与其他程序结合的程序不是一个实用程序;这是一个应用程序。

事实证明,微服务在很多方面都是可以远距离访问的 shell 命令。有时候是基本的 IPC。在许多情况下,它是通过网络。

丹尼尔·p·德恩在《Linux.com》上发表的文章对此有一个很好的解释:“微服务是‘小型特定任务组件’(例如子程序、Unix 命令)和‘大块巨石’之间的宇宙方法钟摆的最新例子之一。”"

那么这一切意味着什么呢?有几个重要的想法适用于微服务和 shell 命令。我们来看几个。

做好一件事

这是微服务和 shell 命令的核心。当然,这并不意味着它必须局限于一个用例。无论您希望通过网络还是通过命令行被调用,您都希望在您的程序中构建一定的灵活性和覆盖范围。

您是否正在尝试查询系统数据、解析关键行、格式化数据并将其保存到文件中?太棒了,结合了 procps 工具,grep,和 sed。您是否有一个正在尝试构建的复杂应用程序?好,写多个微服务。

这里的想法是组装你的解决方案,而不是把它建成一个整体。

持久性

这就是事情变得有点棘手的地方。Shell 命令不会像微服务一样失败。然而,这里的核心概念是耐用性。

对于 shell 命令,该软件旨在处理边缘情况、畸形数据、资源问题等。同时,以预期的方式报告。即使在故障模式下,也可以依赖退出代码和错误消息。

对于微服务,类似的假设也适用。应该预测故障模式,虽然这可能意味着一个节点将关闭,但这也是可以预测和设计的。

耐用不代表完美。它意味着能够承受你扔给它的任何东西。

使用计划

有无数种方法可以组合 shell 命令。shell 脚本的整个基础依赖于以新颖的方式混合和匹配命令的能力。

这也适用于微服务:构建一个持久的、可预测的、足够通用的微服务,并期待大量的使用。

那么这对 shell 命令或者微服务的开发者意味着什么呢?有些事情你需要记住:

  • 以性能为目标:没有人想依赖一个缓慢的组件
  • 期望被用作更大整体的一部分:使用标准数据格式、简单标志/选项等。
  • 透明:无论是传递数据还是返回响应,都要让人们容易理解发生了什么

这些只是开始。你需要从一个寻找解决特定问题的工具的人的角度来思考。你的 shell 命令或者微服务管用吗?他们T5 会想要 用吗?

从这里去哪里?

围绕微服务有很多讨论,但这些讨论忽略了一个想法,即我们在之前就已经经历过了。高质量 shell 命令的普遍存在可以作为构建高质量微服务的指南,因为许多相同的原则也适用。

Shell 命令是工程师工作流程的重要组成部分。难道我们不应该期望微服务也一样耐用、可用,并且随时可以组装吗?

下次你在一个团队谈论微服务的时候,只要记住:这是一个 UNIX 系统!你知道这个!

如果你有兴趣接触,我在 LinkedIn Twitter,Medium 和许多其他平台上。


本站为非盈利网站,作品由网友提供上传,如无意中有侵犯您的版权,请联系删除