代码之家  ›  专栏  ›  技术社区  ›  JDev

AWS RDS到AWS ES

  •  3
  • JDev  · 技术社区  · 7 年前

    :在插入/更新特定表时,创建数据流并将其推送到弹性搜索。

    想法 AWS RDS(MariaDb)----- 插入/更新用户表 ---&燃气轮机;AWS运动流——使用AWS Lambda——>AWS ES

    问题

    2 回复  |  直到 6 年前
        1
  •  6
  •   Noel Llevares    3 年前

    如果你使用亚马逊极光,你可以这样做。

    Amazon Aurora最近的更新之一是支持从存储过程调用Lambda函数。

    因此,为了实现您的需求,您可以创建一个SQL触发器,该触发器调用一个SQL存储过程,然后该存储过程调用一个Lambda函数,该函数将数据发送到弹性搜索。

    Invoking a Lambda Function from an Amazon Aurora DB Cluster

    关于交易的说明 :

    @Ahmad Nabil comments below ,可以在提交事务之前执行触发器。因此,调用Lambda的SQL触发器可能不是您想要的。


    如果您使用的不是Aurora,而是MySQL或MariaDB,如果这个功能对您的应用程序真的很重要,我建议您切换。

    如果您使用的数据库不是Aurora、MySQL或MariaDB,那么您必须重新考虑您的应用程序,以便将数据同时写入RDS和ElasticSearch。我还推荐以下架构模式:

        2
  •  0
  •   Ahmad Nabil    3 年前

    我尝试使用Amazon Aurora触发器调用lambda函数,但在使用事务时出现了一些问题,因为 可以在提交事务之前执行触发器

    所以我最后做的是修改应用层,在向数据库发送数据的同一“事务”中异步调用lambda函数,

    如果lambda函数出现故障,您可以重试并使用DLQ(死信队列)确保数据不会丢失,并实际将其发送到elasticsearch。