【发布时间】:2015-07-13 16:28:07
【问题描述】:
微服务作为一种软件架构风格正在获得关注,它将更好地支持持续交付,提供快速部署和关注点分离的模型。
Vert.x 3 和 Vert.x-Apex 为构建微服务提供了一个有趣的模型。如其中一个示例所示,一个简单的 Verticle 可以公开 HTTP 服务,因此可以使用 REST 服务。 verticle绑定了自己的tcp端口。
当扩展到多个微服务以支持一个完整的应用程序时,您最终会有很多选择。有什么想法可以最终支持持续交付,并最大限度地减少升级停机时间?
选项
- 运行多个 Verticle 可能是一个解决方案,它们都包含自己的路由,因此 http 处理包含在 Verticle 中。请求/响应可以完全由 Verticle 处理。这可能意味着每个 Verticle 在它自己的 tcp 端口上运行。
- 使用路由器,您可以在单个端口上公开所有路径,并相应地处理它们。数据将由包含路由器的 Verticle 处理,可能会将其传递给其他 Verticle。然后,这开始看起来像是一种更单一的方法。
- 运行包含服务的单独的 vert.x 实例(可能对它们进行集群)。这可以更容易地使用持续交付,因为整个事情都是独立的。
- 其他可能的选择?
部署
在部署方面,需要快速部署新服务,而不会使整个应用程序瘫痪。
- 选项 3. 可以为此提供一种方法,但也可能导致开销,尤其是当每个 Verticle 中都有一个 DB Verticle 运行时。
- 选项 1. 可能更简单,但是重新加载新的和更新的 Verticle 怎么样。
独立的微服务提供了一种有趣的开发方式,但在编排和部署方面带来了一些挑战。
有什么想法吗?
【问题讨论】:
标签: architecture vert.x microservices