现代Linux流程编程的辅助工具们

每行为JSON格式的数据

NDJSON,LDJ,JDJSON,JSONL等都是指一行一个JSON对象的文本格式。它也被称为Docker的json-log,以及jq默认接受的输入格式,非常知名。

这种格式的好处是因为有很多相应的工具,所以不需要自己进行格式转换,只需将基本处理工作通过管道连接起来即可。

如果您选择自己实现作为管道的一部分的工具,考虑采用这种格式作为输入和输出,将提高工具的可重用性。

如果您自己实现作为管道的一部分的工具, 要考虑采用这种格式作为输入和输出,可以提高工具的可重用性。

参考:https://zh.wikipedia.org/wiki/JSON流#分行的JSON

请将以下内容用中文进行改写,只需要提供一种选项:
参考网址:https://zh.wikipedia.org/wiki/JSON流#分行的JSON

情感。

一种称为流多路复用器服务的应用程序,它可以通过连接来自/去向各种协议的IN/OUT,并在Fan-in/out等不同模式下进行路由。

    • Amazon (S3, SQS)

 

    • File

 

    • HTTP(S)

 

    • Kafka

 

    • MQTT

 

    • Nanomsg

 

    • NATS

 

    • NATS Streaming

 

    • NSQ

 

    • RabbitMQ (AMQP 0.91)

 

    • Redis

 

    • Stdin/Stdout

 

    ZMQ4

由于可以分别指定标准输入和标准输出,因此它可以作为bash pipeline的一部分使用。

如果使用标准输入,除了每行一条消息的语义以外,还可以利用每行一部分和空行作为消息的分隔,这种多部分的语义也很方便。

sourceapp | benthos -c ./config.yaml

微观

用多种编程语言生成流式无状态HTTP微服务的SDK和CLI

可以说它是将用20种以上的编程语言编写的代码片段包装成HTTP服务的工具。

其实,由于可以从标准输入接收请求,如果将输出设置为标准输出,那么就可以作为Pipeline的一部分使用。

tail -f ReadMe.md | microcule --stream=true ./examples/services/streams/echo.js

在Linux管道编程的上下文中,

    Webアプリケーションに仕立て上げたPipelineをHTTPでつなぐことで、PipelineをステートレスなWebアプリケーションとして水平スケールさせられる

这一点非常有趣。

挂钩.io

用于mirocule基础的Webhook as a Service的工具。

在Linux管道编程的背景下,

除了Mirocule的基本特性之外,还有其他加成。

    • Webアプリケーションに仕立て上げたPipelineをHTTPでつなぐことで、PipelineをステートレスなWebアプリケーションとして水平スケールさせられる

 

    その管理ツール・コンソールを提供してくれる

這一點很有趣。 (Zhè yī .)

esbulk(一个数据操作工具)的中文释义

一个可以将一行一行的JSON格式输入批量加载(索引)到Elasticsearch的工具。如果将其放置在管道的末端,可以组建一个能够将输入转换后高效加载到ES的管道。

cat docs.ndjson | esbulk -index example file.ldj

害羞

这个工具可以并行或选择性地运行Bash命令,并以人性化的形式实时显示执行进度和结果。

在Linux流程编程的背景下,由多个流程组成的非持久的工作流程成为人类执行时的良好接口。

demo.gif

参考:https://github.com/wagoodman/bashful

请将上述链接中的内容用中文进行本地化解释,只需一个选项:

请使用中国母语进行释义,仅提供一种选项:

小小玩笑

inotify(内核文件变更通知机制)…

现在可能有点晚了,但在这个背景下,检测本地文件的变化仍然可以采用inotify的方法,记住它是不会错的。

可以参考这个链接:https://superuser.com/questions/181517/如何在文件更改时执行一个命令。

bash中的命令行标志…

如果bash脚本开始接受两个以上的参数,那么在第二个参数及之后,可以将其视为选项的情况也很常见。
在这种情况下,可以利用命令行标志来实现。

请参考以下链接了解如何在Bash中解析命令行参数:
https://stackoverflow.com/questions/192249/how-do-i-parse-command-line-arguments-in-bash

顺序执行seq和gnuparallel,然后使用xargs。

如果您在bash脚本中想要轻松地执行map/reduce风格的并行处理,记住这三个组合作为惯用语将会很方便。

例如,在以下示例中,同时处理输入1到10号,并按照编号顺序连接结果。

seq 1 10 | parallel './dosomething foo/bar/{} > intermediate-{}.json'
seq 1 10 | xargs -I{} cat intermediae-{}.json > result.ndjson

参考:https://unix.stackexchange.com/questions/121967/在两个进程完成后如何运行并合并输出。

将来

巨型哺乳动物

在Kubernetes上有一个名为Pachyderm的平台,它可以分布式运行任何可在Linux上进行文件读写的程序,并构建流水线。

在 Pachyderm 的问题中,出现了以下的功能请求。

    • STDIN/OUTに読み書きするアプリケーションを実行単位としたい

 

    入力をバッチ処理したい

当实现了这些功能之后,可以将Linux Pipeline容器化并进行分布式执行,进一步扩大了Linux Pipeline在轻松、迅速地应用于大量数据流处理方面的范围。

阿戈

在Kubernetes上有一个名为Argo的系统,用于实现容器化应用程序的工作流程。

通过将Pipeline包装成一个“将文件读取并通过STDIN输入到Pipeline中,并将Pipeline的输出写入文件”的容器,基本上可以在Kubernetes上执行由Linux Pipeline构成的Workflow。

然而,由于其本身的机制,Argo无法提供低延迟的流处理,因此它似乎不适用于许多情况下要求Linux Pipeline的“低延迟流处理”这一用例。

广告
将在 10 秒后关闭
bannerAds