如何解决GCP:按区域划分流量比例主动-主动
我正在设计在多个区域上运行的应用程序。例如R1,R2。
文件被提交到多区域云存储桶。存储桶中的PUT事件将发布通知,以直接触发云功能或发布/订阅主题。
我希望R1可以完成80%的处理,R2可以完成20%的处理。
方法1: 具有2种云功能:CF-R1,CF-R2。 如何确保80%的存储桶通知触发CF-R1和20%触发CF-R2?
方法2: 具有pub / sub主题,可从存储桶中捕获通知。 是否可以在该主题上配置CF-R1和CF-R2,以便我可以拆分流量?
或任何其他方法来处理这种情况。
解决方法
方法1:对URL映射使用负载均衡器
您可以使用Cloud函数或Cloud Run并使用带有URL映射的负载均衡器(此blog post于6月宣布-请参见documentation)。
如果使用负载平衡器,则可以直接或通过带有PUSH订阅的pubsub触发向平衡器的通知。
请注意,负载均衡器是单独的产品,您必须仔细查看使用情况和价格。
方法2:几个具有过滤器的pubsub订阅
我认为第二个选项可以是可行的。为您的情况而疯狂,但这会奏效。
Google现在在Beta版中提供了在创建订阅时将过滤器应用于pubsub主题的选项。
然后,您可以具有云功能(或云运行),以响应他们根据自己的订阅收到的pubsub通知。
使用此beta功能,您可以按消息值(等于==,不等于!=,并具有hasPrefix)进行过滤。
这里的诀窍是要有足够的信息来均匀地在函数 之间分配消息,因为创建订阅后就无法更改过滤器。
如果您可以在应用中或作为文件名的一部分传递该信息,则可以通过一种简单的方式来实现。
如果没有,我猜想crc32可能具有足够的信息来满足您需要的过滤器的要求。 但是此过滤器有128个字符的限制,您可以通过以下方式达到此目的:
hasPrefix(attributes.crc32,"A") OR hasPrefix(attributes.crc32,"B") OR hasPrefix(attributes.crc32,"C") OR hasPrefix(attributes.crc32,"D") OR hasPrefix(attributes.crc32,"E")
使用上面的过滤器,您有几乎 10%的CRC32情况。在某些简单情况下还不错,但对您却不利,因为您必须配置很多订阅。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。