java – 二进制和文本结构(数据包)的高效解码
背景
有一个名为Wireshark的着名工具.我已经使用了很长时间.这很棒,但性能是问题所在.通用使用场景包括若干数据准备步骤,以便提取稍后要分析的数据子集.如果没有这一步,则需要几分钟才能进行过滤(Wireshark旁边的大痕迹无法使用). 实际的想法是创建一个更快,更平行,更高效的更好的解决方案,用作数据聚合器/存储. 要求 实际要求是使用现代硬件提供的所有电源.我应该说有一个不同类型的优化空间,我希望我在上层做得很好,但技术是现在的主要问题.根据目前的设计,有几种类型的包解码器(解剖器): >交互式解码器:解码逻辑可以在运行时轻松更改.这种方法对协议开发人员非常有用 – 解码速度并不重要,但灵活性和快速结果更为重要 结果 我目前的解决方案是基于JVM的解码器.实际的想法是重用代码,消除移植等,但仍然具有良好的效率. >交互式解码器:在Groovy上实现 需要解决的问题 > Groovy提供了更多权力和一切的方法,但在这种特殊情况下运气表现力 我在各地使用JVM做得对吗?您是否看到了实现最初目标的任何其他优秀和优雅的方法:获得易于编写的高度可扩展且高效的协议解码器? 协议,结果格式等不固定. 解决方法
我发现了几个可能的改进:
交互式解码器 通过使用Groovy语法扩展,可以大大提高Groovy表达能力
我不想重新发明轮子引入另一种语言来定义/描述协议结构(它足以拥有ASN.1).这个想法是简化解码器开发,以提供一些快速原型技术.基本上,将引入某种DSL. Further reading 嵌入式解码器 Java可能会引入一些额外的开销.有几个库可以解决这个问题: > HPPC 坦率地说,除了Java之外,我没有看到任何其他选项. 解码器即服务 此层不需要Java.最后我有一个很好的选择,但价格相当高. GWan看起来真的很棒. 需要一些额外的移植,但绝对值得. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |