在一个云函数中编写所有函数



如果我把多个函数放在一个云函数中,使其实例的寿命达到最大值,并且我将不得不处理一次冷启动,该怎么办?

为什么这是个坏主意

export const shop = functions.https.onCall(async (data, context) => {
switch (data.type) {
case "get_fruits":
return await getFruits();
case "place_order":
return await placeOrder();
case "add_to_cart":
return await addToCart();
default:
return;
}
});

它会起作用,但IMO,这不是一件好事。目前存在许多原则和模式,但您没有强制执行您的解决方案。

微服务

其中之一就是微服务的拆分。构建一个整体没有问题,但当我看到您的示例(get_fruit、place_order、add_to_art(时,我看到了不同的角色和职责。我喜欢关注的分离:一个服务做一件事。

路由

但是,也许您的服务只是独立部署的路由和调用功能的服务(并且您强制执行微服务原则(。如果是这样的话,如果存在大量条目和大量查询,那么您的服务可能会成为瓶颈。

此外,还有专门用于路由的服务:负载均衡器。他们使用请求的URL路径,并到达正确的微服务为其提供

开发者使用

是的,是URL,而不是邮件正文中用于路由流量的字段。今天,开发人员已经熟悉REST API。为了获得水果,他们对/fruitURL执行get请求,并且他们知道他们将获得水果。如果他们想添加到购物车中,他们会对/cartURL执行POST请求,这很有效!

您使用URL、标准REST定义、负载均衡器和微服务。

你可以想象其他好处:

  • 每个微服务都可以独立扩展(你可以有更多的get_fuit请求而不是place_order,服务的规模不同(
  • 安全性更容易控制(没有获取目录(水果(的安全性(,但您必须通过身份验证才能下订单
  • 演进速度可以在服务之间解耦

相关内容

  • 没有找到相关文章

最新更新