您在全球分布的拍卖应用程序允许用户对物品进行投标。有时,用户在几乎相同的时间下相同的出价,而不同的应用服务器处理这些出价。每个出价事件都包含项目,金额,用户和时间戳。您希望将这些出价事件实时整理到一个位置,以确定哪个用户首先出价。你该怎么办?(选择一个)
(A)在共享文件上创建一个文件,并使应用程序服务器将所有出价事件写入该文件。使用Apache Hadoop处理文件,以确定哪个用户首先出价。
(B)让每个应用服务器在发生出价事件时将出价事件写入Cloud Pub / Sub。将事件从Cloud Pub / Sub推送到自定义端点,该端点将出价事件信息写入Cloud SQL。
(C)为每个应用程序服务器设置一个MySQL数据库,以将出价事件写入其中。定期查询每个分布式MySQL数据库,并使用出价事件信息更新MySQL主数据库。
(D)让每个应用服务器在发生出价事件时将出价事件写入Google Cloud Pub / Sub。使用拉取订阅通过Google Cloud Dataflow拉取出价事件。在首先处理的出价事件中,将每个项目的出价提供给用户。
答案 0 :(得分:1)
我个人选择(D)。原因如下:
Cloud Pub / Sub是一项托管服务和面向消息的中间件,换句话说,它传递消息。
“用户在几乎相同的时间发出相同的出价,而不同的应用服务器处理这些出价。”
使用发布/订阅,您只需要配置最终用户的发布商1,它将出价发送到主题,以后您就可以处理这些数据。因此,我将首先消除(A)(C),如果您有更好的选择,那就是 Cloud Pub / Sub 。您不想管理自己的Hadoop或MySQL服务器。
还有另一个关键句子
“将这些出价事件实时整理到一个位置。”
Cloud Dataflow(Apache Beam) 2支持流处理和批处理。有一个名为触发器的功能,您可以通过数据的事件时间触发,也可以与用户出价的时间相同。
您不想将这些实时数据存储到Cloud SQL 3中。