lotha2023 发表于 2023-1-19 13:11:27

Snowplow Java 跟踪器 发布

我们很高兴地宣布发布我们的 Java 跟踪器 版。在此版本中,我们专注于改进事件的缓冲和发送方式。 头条新功能是向事件发送添加重试(具有指数退避)。发送失败的事件——除 2xx 之外的 HTTP 请求代码——将返回到缓冲区以供后续重试。以前,处理未发送的事件是开发人员的责任:用户可以提供回调,目的是回调将重新跟踪失败的事件。我们很高兴现在用更复杂的自动重试解决方案取代了事件发送回调。 添加重试机制让我们开始思考 HTTP 请求和响应代码。到目前为止,我们的跟踪器将响应代码视为“成功”(2xx) 或“不成功”(任何其他)。如果不成功,那么跟踪器应该继续尝试发送事件:不丢失数据是我们的首要任务。但是一些响应代码表明重试是不可取的。例如,返回“401 Unauthorised”或“403 Forbidden”的收集器在下次收到该请求时不太可能改变主意。如果一个请求包含一个巨大的事件,并且收集器返回“403 Payload Too Large 那么浪费带宽再次发送它是没有意义的。

这是 Snowplow Trackers 团队内部正在进行的对话。让我们明确一点:不重试意味着事件被删除。作为临时解决方案, 为了更好地控制事件缓冲,我们提供了一个新EventStore接口和默认InMemoryEventStore类。此类将有效负载存储在队列中,特别是一个LinkedBlockingDeque我们强烈建议在初始化时设置默认事件缓冲区队列的最大容量。这是可以存储的事件数。当缓冲区已满时,新的跟踪有效负载将 美籍华人电话号码表 被丢弃(再次丢失数据!),因此选择正确的容量很重要。默认缓冲区容量为LinkedBlockingDeque: 。在缓冲那么多事件之前,您的应用程序很可能会耗尽内存。 Java 跟踪器提供两个Emitter类:BatchEmitter和Simple这些类负责缓冲跟踪的事件,并将它们发送到事件收集器。它们都是异步工作的 除了BatchEmitter使用 POST 请求和SimpleEmitter使用。

https://www.gilists.com/wp-content/uploads/2023/01/%E7%BE%8E%E7%B1%8D%E5%8D%8E%E4%BA%BA%E7%94%B5%E8%AF%9D%E5%8F%B7%E7%A0%81%E8%A1%A8-1-300x179.jpg

我们想不出在任何情况下BatchEmitter都不是更好的选择,因此SimpleEmitter已被弃用。如果您需要通过 GET 或同步发送事件,还有一个Emitter接口供您使用自己的类。 此版本中的重构范围很广,包括更新Event类。在 Java 跟踪器中,通过将Event对象传递给对象来跟踪事件Tracker,使用内置事件类型,如PageView或Structured事件,都是Event子类。我们从和不再是属性,而是在 期间自动eventId生成。的主要目的是在收集器收到事件并在管道中后为事件提供 UUID。允许自定义 UUID 可能会意外导致非唯一的“唯一”标识符,这会给管道带来大问题,并有数据丢失的风险。如果您需要使用deviceCreated您的应用程序或第三方应用程序的其他地方,我们已将返回类型添加到跟踪事件有效负载的 UUID 字符串 如果事件缓冲区已满 则事件丢失。

页: [1]
查看完整版本: Snowplow Java 跟踪器 发布