微服务是否与现有的SQL数据库兼容?

时间:2017-10-18 15:21:30

标签: sql database-design architecture rabbitmq microservices

我正在使用Core,rabbitMQ,strangler模式创建微服务架构......但我必须使用现有的SQL数据库(Transaction requeriment)。

进行研究我没有发现很多关于如何实现SQL数据库的信息,但我认为不可能同时对不同的服务进行事务操作。

1-每个服务必须能够访问完全数据库吗?

2-做一个专门做交易操作的服务是个好主意吗?

3-带有微服务的SQL它可能太慢了?

我不知道是否存在此标准。

感谢。

3 个答案:

答案 0 :(得分:3)

微服务的重点在于提供尽可能小的独立服务。

共享公共数据库会引入非常强大的耦合,不建议这样做。

如果两个服务需要相同的数据,您可以(a)为每个服务创建不同的数据库,然后复制数据,或者(b)引入负责访问数据库的第三个服务。

如果您正在寻找跨微服务的更大规模的分布式事务,那么您应该研究像sagas这样的事情。通常,您将拥有跟踪各种操作的协调员("流程管理员"在某些文献中),并且如果整个事务必然会失败,则可以补偿或取消已执行的操作。

  

3-带有微服务的SQL它可能太慢了?

是什么让你这么想?

没有任何关于SQL的东西使它不适合微服务。微服务在他们的工作和需求方面可能会有很大差异。 SQL将非常适合某些微服务,并且可能不适合其他微服务。这取决于服务。

答案 1 :(得分:1)

您的系统中看起来需要分布式事务 https://msdn.microsoft.com/en-us/library/windows/desktop/ms681205(v=vs.85).aspx

还有一本专门讨论微服务的好书。它包括分布式事务和微服务基础应用程序中使用的其他模式。 http://shop.oreilly.com/product/0636920033158.do

答案 2 :(得分:0)

  

1-每个服务必须能够访问完全数据库吗?

没有。微服务具有与其提供的聚合根/服务相关的自己的模式。如果服务需要另一个实体的数据,它会调用另一个微服务提供的API。

  

2-做一个专门做交易的服务是个好主意   操作

没有。每个微服务本身就是一个事务边界。分布式事务,特别是使用2PC,并不是特别好。

  

3-带有微服务的SQL它可能太慢了?

我不清楚为什么要发表这样的声明。