Q - 进程间通信(Q - Inter-Process Communication)

优质
小牛编辑
134浏览
2023-12-01

KDB +允许一个进程通过进程间通信与另一个进程通信。 Kdb +进程可以连接到同一台计算机,同一网络甚至远程的任何其他kdb +。 我们只需要指定端口,然后客户端就可以与该端口通信。 任何q进程都可以与任何其他q进程通信,只要它可以在网络上访问并且正在侦听连接。

  • 服务器进程侦听连接并处理任何请求

  • 客户端进程启动连接并发送要执行的命令

客户端和服务器可以在同一台机器上,也可以在不同的机器上。 进程可以是客户端和服务器。

沟通可以是,

  • Synchronous (等待返回结果)

  • Asynchronous (没有等待,没有返回结果)

初始化服务器

通过指定要侦听的端口来初始化q服务器,

q –p 5001/command line
\p 5001  /session command

沟通处理

通信句柄是以“:”开头并具有以下形式的符号 -

`:[server]:port-number

例子 (Example)

`::5001             /server and client on same machine
`:jack:5001         /server on machine jack
`:192.168.0.156     /server on specific IP address
`:www.myfx.com:5001 /server at <a href="www.myfx.com">www.myfx.com</a>

要启动连接,我们使用函数“hopen”返回一个整数连接句柄。 此句柄用于所有后续客户端请求。 例如 -

q)h:hopen `::5001
q)h"til 5"
0 1 2 3 4
q)hclose h

同步和异步消息

一旦我们有了句柄,我们就可以同步或异步发送消息。

Synchronous Message - 一旦发送消息,它就会等待并返回结果。 其格式如下 -

handle “message”

Asynchronous Message - 发送消息后,立即开始处理下一个语句,而不必等待并返回结果。 其格式如下 -

neg[handle] “message”

需要响应的消息(例如函数调用或select语句)通常使用同步形式; 而不需要返回输出的消息(例如,将更新插入表)将是异步的。