mysql

qyswt5oh  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(221)

我所在的公司正在考虑迁移到microservice/kubernetes体系结构,但在研究中遇到了一些障碍,所以我想我应该把它们放在这里。
对于一个典型的单片数据库,许多查询从其他源/表连接,这通常被视为不同的微服务职责(例如customers->orders)。
我现在的问题是,对于微服务,什么是最佳实践?
我发现了一些建议的方法:
1) 加入代码。基本上是运行多个查询。如: const user = UserService.getUserById(1); const order = OrderService.getForUser(user); 我喜欢这种方法,可以清楚地看到数据来自何处,需要什么等等。但是这会引起额外延迟的问题。像以前一样,我可以加入这个查询,只需访问一次数据库。我现在有2个(或更多,取决于所需的数据)对数据库的请求。
2) 参加对外服务。建立一个独立的服务来处理查询。-这感觉很像有一个每个服务都依赖的内部api,而且作为一个单点故障似乎是一个糟糕的做法。也许我看错了。
3) 加入mysql。将所有数据放在同一个数据库中,并像以前一样进行查询。这样做的好处是可以一次访问mysql,但是打破了microservice方法,并取消了每个服务都有数据库/模式的功能。
我个人觉得选项1是最通用的选项,但我很好奇多个往返的额外延迟,以及你们是如何处理的。或许还有另一个我没有看到的解决方案。

0kjbasz6

0kjbasz61#

我不会太担心延迟,因为所有的调用都是异步的。
微服务都是关于选项的,有选择性的:可伸缩性、健壮性/敏捷性、部署等。你不能使整个系统健壮,但你可以使其中一些(重要的部分)健壮。
我将专注于领域模型/边界上下文的建模,尝试将单一责任原则正确化,这将有望帮助您避免功能复制、死星依赖。
非常基本µ服务体系结构
阅读:
构建微服务
领域驱动设计:解决软件核心的复杂性

相关问题