deepflow icon indicating copy to clipboard operation
deepflow copied to clipboard

deepflow-agent技术实现咨询

Open taohorse opened this issue 1 year ago • 2 comments

1.请问下agent中proxy_controller_ip是做什么用的 个人理解是agent上报数据/同步数据到server的时候,先请求proxy_controller_ip,然后由proxy_controller_ip代理到controller_ip

2.请问下agent中analyzer_ip是做什么用的,貌似有关联一个数据节点 没有看明白analyzer_ip的上下游功能

taohorse avatar Mar 31 '24 13:03 taohorse

  1. agent 启动后会根据本地 agent.yaml 配置文件中的 controller-ip 请求 server 的 controller 模块。但为了实现负载均衡,server 会回复一个 proxy-controller-ip 地址,让 agent 后续请求它。主要目的是负载均衡
  2. 这里 analyzer 的叫法有些陈旧了,实际上是指的 server 中的 ingester 模块。

sharang avatar Mar 31 '24 15:03 sharang

@TomatoMr 后面找个时间将 agent 中的 analyzer 改为 ingester,改之前先看看是否所有地方语义都能通顺。

sharang avatar Mar 31 '24 15:03 sharang

关于agent和server通讯方式的疑问 1.看agent数据流图,agent上报网络流量数据到server是通过GRPC。 https://github.com/deepflowio/deepflow/blob/main/docs/design/data-flow.md image image

2.分析agent源码,agent上报网络流量数据到server是通过TCP/IP(没有使用PB) let result = tcp_stream.write(&buffer[write_offset..]); struct Encoder<T> { id: usize, header: Header,

buffer: Vec<u8>,
_marker: PhantomData<T>,

}

想请教下关于agent和server通讯方式,是由于我自己没有理解源码,还是数据流图没有更新

taohorse avatar Apr 01 '24 11:04 taohorse

@taohorse 是 TCP + pb。数据应该是有 pb 序列化的。

不是 grpc

sharang avatar Apr 01 '24 12:04 sharang

agent中,网络时延是在单点计算的。 对于TCP/ICMP协议来说,可以通过seq_id可以唯一区分同一个会话中某个请求。 请问下对于UDP协议来说,可以通过什么方式唯一区分同一个会话中某个请求。想到一个方式是使用IPID,但是IPID最大到65535就被重置到0了,所以流量大了,使用IPID貌似不太可靠。

taohorse avatar Apr 07 '24 04:04 taohorse

agent中,网络时延是在单点计算的。 对于TCP/ICMP协议来说,可以通过seq_id可以唯一区分同一个会话中某个请求。 请问下对于UDP协议来说,可以通过什么方式唯一区分同一个会话中某个请求。想到一个方式是使用IPID,但是IPID最大到65535就被重置到0了,所以流量大了,使用IPID貌似不太可靠。

对,UDP 没有很好的区分方法。但

  1. 一般使用 UDP 的业务比较少,主要的只有 DNS
  2. 由于 UDP 是不可靠协议,几乎可以肯定上层应用会有 request_id 之类的信息,我们解析 DNS 时延也是用到了这点

IP ID 确实信息量太低

sharang avatar Apr 09 '24 05:04 sharang

@taohorse 是 TCP + pb。数据应该是有 pb 序列化的。

不是 grpc

比较好奇server和agent之间的通信方式有两种,部分业务使用gRPC,部分业务使用TCP(PB)。 对于TCP(PB)来说,如果是流需求的话,也可以使用grpc streaming的。其实可以统一使用grpc的。请问下根据业务区分不同通信方式,是有什么考量吗 @sharang

taohorse avatar Apr 15 '24 03:04 taohorse