微服务架构

时间:2017-07-19 01:37:15

标签: java scala lambda soa microservices

我几乎没有与MicroServices Architecture相关的问题。

  • MicroServices的粒度应该是多少?我们在Relational和NoSQL数据库中都有表。每张桌子应该有一个服务吗?我认为每个数据源的服务会更有意义,但那就是SOA。

  • 如果我们创建一堆MicroServices,我们是否还应该提供客户端库来促进服务的消费?或者只是让调用者使用任何REST库来进行调用。不管怎样,这听起来很多。

  • 每个MicroService应该有三个GIT仓库吗?

  • 在同一个EC2实例中部署多个MicroServices是否可以?

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

1 个答案:

答案 0 :(得分:3)

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

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

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

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

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

相关问题