本节主要分析pinpoint-collect的源码。
采用Spring MVC构架,所以入口在web.xml,web中主要引入了applicationContext-collector.xml和servlet-context.xml文件。
servlet-context.xml中主要定义了spring中相关内容,包括扫描control类,jsp视图,以及拦截器等。
applicationContext-collector.xml是collector的重点,包括加载属性文件,hbase配置文件,以及相关的一些bean。
这些bean中非常重要的一个bean就是serverAcceptor,主要作用是定义管理Thrift传输的服务端,
他是由类PinpointServerAcceptor定义的,PinpointServerAcceptor的构造函数中主要是
ServerBootstrap bootstrap = createBootStrap(1,WORKER_COUNT);
setOptions(bootstrap);
addPipeline(bootstrap);
这三句,createBootStrap中定义了boss和worker线程池,addPipeline是将handler添加到管道中,这个handler 主要是由nettyChannelHandler定义的,nettyChannelHandler是由
PinpointServerChannelHandler nettyChannelHandler =new PinpointServerChannelHandler();
初始化的,在PinpointServerChannelHandler类中,定义了channelConnected,channelDisconnected,channelClosed和messageReceived方法,
messageReceived方法根据packetType来处理包,有的存入Hbase数据库,有的产生response返回Agent。