我们有一个应用程序处理来自kinesis的数据并维持一些状态几秒钟。我们担心维持状态是否会受到KCL多线程特性的影响。
有人能告诉我们KCL的RecordProcessor是否是线程安全的?。
答案 0 :(得分:3)
KCL是一个围绕您的自定义逻辑的包装程序库,用于处理您的记录。 该库的目的是在您专注于记录处理逻辑的同时管理Kinesis方面。 KCL会将EC2工作者与某个碎片或碎片(通常是1个EC2工作者到1个碎片)对齐,并维护一个存储序列密钥的DynamoDB表。
您的自定义应用程序逻辑负责维护状态和线程安全。
默认情况下,您从分片中获取的Kinesis记录列表(目标大小由您定义)将传递给您要处理的代码。您可以按顺序执行此操作,或者根据需要将它们分叉到线程。直到您从此处理方法返回后,KCL才会从分片中请求更多记录。