我有多个守护进程(一个网关和多个服务,全部运行在同一节点上),其中一些服务守护进程需要在“软实时”响应网络上的到达请求,我的拱门就像我有一个网关守护进程,它将基于协议标记的传入数据包路由到相应的服务守护进程。服务守护进程处理这些请求并将响应发送回放在线路上的gw守护进程。所有的工作都很好,但我没有达到“软实时”并看到滞后。Linux上进程之间共享套接字
我打算在下面以这种方式即兴发挥,共享网关和服务守护程序之间的网络连接,我将有一个通知方案,通过该方案,当数据包到达连接时,gw守护程序不会退出来自套接字队列的数据包在接收到服务守护进程抓取二进制信号量并从套接字队列中取出队列数据的通知时查看协议头并“通知”相应的服务守护进程“数据已到达”。会有2个这样的信号量用于写入,另一个用于读取。当服务守护进程需要发送数据时,它会抓取写入信号并发送数据。当它从网关守护进程收到“数据到达”通知时,它会抓取读取的信号并从套接字中取出数据。在每个新的连接请求上,网关守护进程都会使用“sendmsg”将连接发送到服务守护进程。
任何时候有没有任何机构试过这个方案?你看到这种方法有什么问题吗?请发表评论/建议。
是否建立网关和服务守护程序之间的复制开销造成您的问题?如果你还没有,是什么让你觉得这会有所帮助? –
您目前使用的是什么IPC,并且处理是否需要按照严格的FIFO顺序进/出网关连接? – Duck
#Provost,当数据从gw守护进程传递到服务守护进程时,整个想法是避免用户空间和内核空间之间的数据副本。我相信这是一个重要的头脑,不用说很多文章都谈到过它,很多程序试图避免这种情况。仍然回答你的问题,我还没有找到它。 –