java - 微服务架构

标签 java scala lambda soa microservices

<分区>

我有几个与微服务架构相关的问题。

  • 微服务的粒度应该是多少?我们在关系数据库和 NoSQL 数据库中都有表。每张 table 应该有一项服务吗?我认为每个数据源的服务更有意义,但它会是 SOA。

  • 如果我们创建一堆微服务,我们是否也应该提供客户端库来促进服务的使用?或者让调用者使用任何 REST 库进行调用。不管怎样,这听起来工作量很大。

  • 对于每个微服务,三个应该是一个 GIT 存储库吗?

  • 可以在同一个 EC2 实例中部署多个微服务吗?

  • 我认为在 AWS Lambda 上部署微服务是完美的,但整个应用程序将只是一堆 Lambda 函数。更不用说与 AWS Lambdas 的紧密耦合了。有人在 Lambdas 上实现过微服务吗?如果对此有任何反馈,我将不胜感激。

最佳答案

微服务的实现通常因系统或开发人员而异。然而,微服务的一些基本特征是,

  • 小焦点(做一件事并做好那件事)
  • 松散耦合(彼此独立运作)
  • 中性语言
  • 限界上下文(不需要知道其他微服务的实现)

我们可以利用 AWS lambda 来实现上述特性。但是维护和管理 Lambda 端点可能很棘手,而且通常很麻烦。您可以使用 Serverless Framework轻松管理 lambda 函数。您可以用简单的 YAML 格式定义服务配置,框架会创建一个 CloudFromation 堆栈并进行部署。

使用无服务器框架,您可以定义多个服务。每个服务都可以是小焦点、松散耦合、语言中立和有界上下文。例如:用户 CRUD、电子邮件通知、预定作业等...当您使用无服务器框架部署服务时,它会创建与各自的 lambda 链接的不同 API 网关。您可以使用 API 网关端点与每个服务进行交互。

正如您所提到的,lambda 可以与其他 AWS 服务相关联。但我认为,只要它不依赖于其他微服务并且具有明确定义的服务集成点,例如 Dynamodb 表或 S3 存储桶,我们就可以使用 Lambda 来开发微服务。

关于java - 微服务架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45179621/

相关文章:

java - 找到txt文件,为每个文件创建一个空文件,然后删除原始文件

scala - 编写性能 scala 不可变集合

scala - 如何在 PlayFramework (scala) 中启动 TCP 服务器

c# - λ "cannot be inferred from the usage"

java - 如何查找从类文件生成的 native 指令

java - 调用 thread.isInterrupted 并打印结果时的不同行为

java - 键匹配,但 get/containsKey 找不到它

java - Cassandra 绑定(bind)语句和内存泄漏

python-3.x - 如何按姓氏对姓名进行排序

java - 使用 Java lambda 的外部可配置过滤