如何对抗影子网络的流量?

Nel*_*elz 13 traffic web-server

对不起,如果这是一个新问题...

我听说过 Netflix 和 Twitter 能够在两个独立的基础设施之间复制网络流量的故事:一个是返回给用户的权威/受信任的基础设施;另一个是“影子”或测试基础设施,它认为它正在返回给用户,但实际上并没有。重点是在实际负载和时间测试辅助基础设施。

我很确定有一个词来描述这一点,但“桥”似乎不是正确的,“重播”也不是。

任何人都可以帮助我了解这项技术的名称和/或可以使用哪些工具来实现这一目标?

我想我应该补充一点,我听说过有效地“重放日志”的技术,但是在真正的速度/分布下很难获得。

而且,我们不是要验证输出的“正确性”,而是要确保在新基础架构中看不到错误/堆栈跟踪/等。

Eva*_*son 7

我个人称其为“通过会话重播进行负载测试”。我不知道这种测试技术有什么简单的笼统术语。

我见过的用于此类负载测试的基本策略是从生产系统获取日志文件并在测试系统上重放它们。

您可以使用JMeterApache Bench等工具重放来自日志文件的请求。如果您正在考虑重放非常复杂的客户端/服务器交互(具有基于原始日志流的特定时间细节),希望真正锻炼您的应用程序的内部结构(寻找竞争条件、与时间相关的错误等),您可能会考虑编写特定于应用程序的测试工具来大规模模拟客户端。

您将无法简单地捕获大量原始网络流量并使用任何基于 TCP 或 IP 的协议“重放”它。TCP 序列号不会与原始捕获的流量匹配,并且不会起作用。IP 层捕获将有问题,因为您的模拟客户端需要回答捕获的发件人的 IP 地址。您最好捕获更接近第 7 层的流量并使用它来重播会话,否则,您也在考虑编写 TCP 模拟器。(例如,我可以想象使用类似的东西tshark从 TCP 流中取出第 7 层数据和时间并重放它。)

简单地重放网络流量模拟负载,但不一定捕获缺陷。如果您想对应用程序正确响应的任何测试进行负载测试,您的模拟客户端将需要接收来自测试服务器的响应并解析它们的正确性。由于您的应用程序将生成动态响应数据,因此您的模拟客户端不太可能简单地将测试服务器的响应与来自生产服务器的记录响应进行比较。这是您将开始编写特定于您的应用程序及其输出的测试工具的地方。