gpt4 book ai didi

java - 在 AWS、Azure 之间切换。设计模式

转载 作者:行者123 更新时间:2023-12-02 04:47:42 25 4
gpt4 key购买 nike

我们开发了一些 lambda 函数并部署在 AWS 上,运行良好,不管怎样,客户现在正在规划 AZURE。

他们将来甚至可能会切换回 AWS 或任何其他供应商。

我们有一个单独的 Maven 项目用于与 AWS 相关的内容。因此,我们的业务逻辑和类保持不变。

我所做的是创建一个 Maven 项目,并将单独的 lambda 函数作为依赖项添加到该项目中。然后创建一个工厂类,它将根据属性 AZURE 或 AWS 获得 impl(使用 class.forName 和反射)。因此,我只需删除 Maven 依赖项并添加 AZURE 依赖项即可切换到 Azure。

Design is somewhat like this

根据图片,我的计划是创建新的 AzureUtils 和 AzureWrapper 项目,并通过在通用 utils 中存在的 cloudFactory 中切换云来直接使用 Azure Cloud,这甚至有望工作(未经测试)AWS 无论如何都是这样工作的。

现在的问题是客户不希望所有东西都打包在 1 个 jar 中,即对所有 lambda 表达式都放在一个 jar 中。他想要某个应该发生切换的层。

现在哪种设计模式有用,方法是什么。

目前我的 Lambda 函数如下所示

public class Hello implements RequestHandler<S3Event, Context > {

public String handleRequest(S3Event s3event, Context context) {

.................
call to business processor as in diag
}
}

Azure 函数看起来有点像带有注释的简单类

public class Function {

@FunctionName("hello")
public HttpResponseMessage run(
@HttpTrigger(name = "req", methods = { HttpMethod.GET, HttpMethod.POST }, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request,
final ExecutionContext context) {
context.getLogger().info("Java HTTP trigger processed a request.");

// Parse query parameter
String query = request.getQueryParameters().get("name");
String name = request.getBody().orElse(query);

if (name != null) {
call to business processor as in diagram
}
}
}

毕竟我只有两个问题

我想先知道图表中的设计是否正确。

我的客户要求一个包装器,它应该处理两种类型的云实现。这可能吗?

如果可能的话引导我走向正确的方向

非常感谢任何帮助。

最佳答案

关于您的第二个问题如何处理这两种类型的云,请查看第三部分解决方案 serverless.com 。这是一家创建自己的无服务器包装器的公司,这样您就可以摆脱供应商锁定

关于java - 在 AWS、Azure 之间切换。设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56470997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com