[英]AWS RDS to AWS ES
要求:在插入/更新到特定表时创建数据流并将其推送到弹性搜索。
想到AWS RDS(MariaDb) -----插入/更新说用户表---> AWS Kinesis 流 -- 使用 AWS Lambda--> AWS ES
问题如何在插入/更新到特定表时创建运动流? 我可以通过 AWS Lambda 完成吗?
如果您使用的是Amazon Aurora,则可以执行此操作。
Amazon Aurora最近的一个更新是支持从存储过程调用Lambda函数。
因此,要实现您的需求,您可以创建一个SQL触发器来调用SQL存储过程,然后调用将该数据发送到Elastic Search的Lambda函数。
参考: 从Amazon Aurora数据库群集调用Lambda函数
如果您没有使用Aurora但使用的是MySQL或MariaDB,我建议您切换此功能对您的应用程序非常重要。
如果您使用的是Aurora,MySQL或MariaDB以外的数据库,则必须重新考虑应用程序以将数据并行写入RDS和ElasticSearch。 我还建议使用以下架构模式:
我尝试使用 Amazon Aurora 触发器来调用 lambda 函数,但这在使用事务时会导致一些问题,因为可以在提交事务之前执行触发器。
所以我最终做的是修改应用程序层以在与向数据库发送数据相同的“事务”中异步调用 lambda 函数,该 lambda 函数将序列化的 JSON 作为输入(来自应用程序层)然后发送该输入到弹性搜索。
如果该 lambda 函数出现故障,您可以重试并使用 DLQ(死信队列)来确保数据不会丢失并实际进入 elasticsearch。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.