全链路追踪中,针对部分特殊的流量,希望将它引导到特定服务上――问题可以被抽象为解决进程间通信过程中目标进程的选择。进程间通信方式很多,本篇只关注 Java 进程间套接字通信下 HTTP 形式的请求劫持,引导特定流量到特定进程。可行的处理方案繁多。自顶向下从应用、框架、JVM、Container Runtime、System Call、网络协议栈等级别,均可着手解决。侵入性最强的操作就是要求所有业务应用都主动实现 HTTP 请求分流逻辑;次一级是提供二方库供业务应用主动集成;或者从系统层面进行改造,基于改写系统调用对请求进行劫持。回顾两年前的所学,JVM TI 为劫持 HTTP 请求提供了一个全新的解决思路。识别流量,并对特定流量改写请求的 Host 即可。
暂无评论