1、zipkin4net 的大致逻辑:
本质上就是创建span对象并提交
根据设定的采样率SamplingRate确定是否创建和提交
数据提交通过 IRecordDispatcher -> IReporter -> IZipkinSender
span是周期性提交的,到达周期后会将两种span提交:已完结的、超过一个周期时间但仍未完结的(会标记Tag为flush.timeout)
如果span未完结就已经被提交,不影响后续对span的操作(标记完成/设置Tag),但ServerName等信息就会丢失(因为在提交span数据时会丢弃span对象数据)
2、zipkin4net最低支持fx4.5.1版本,但可以通过简单修改源码支持fx4(为了支持顽强的XP系统)
3、缺省支持HTTP方式提交(直接调用的zipkin的API),也可以自行实现。如:提交到kafka/rabbitmq
4、在调用频率高的时候,最好合理设置采样率,否则对性能影响还是不小的(至少zipkin4net是这样,构造span、序列化、提交等都是消耗)。
备注:zipkin4net并不是官方实现,但是目前相对好用的一个。