与其他Postgres数据库共享表

时间:2020-04-14 08:54:28

标签: postgresql microservices chat

我有一个由Postgres支持的后端微服务。 我在应用程序中还具有微服务功能,例如聊天(消息传递应用程序),类似于Instagram。

原因,为什么我为聊天功能提供其他服务:

  1. 我想为Messages表(以及其他相关表,例如Conversation表,Conversation_Participants表等)提交异步提交。 如果我错了,请纠正我,但是我不能使某些查询异步,而让其他查询同步。就是这个或那个。因此,我需要一个单独的数据库来进行聊天。

    **每个查询我都可以使用SET LOCAL synchronous commit TO OFF:'之类的东西,但我假设 那不是很明智,也不安全。

  2. 减轻来自主后端微服务的负载。

问题:

在我的主微服务中,我有一个名为user_relations的表,可以在该表中判断某个用户是否阻止了其他用户。 显然,这是Chat微服务应注意的事情,因此用户将无法向阻止他们的人发送消息。 但是,聊天微服务如何访问该数据? 是否应该维护uer_relations表的副本,然后对主服务进行每次更改,都将向聊天服务发送gRPC请求,以便相应地更新其自己的user_relations表? 还是有更好的解决方案?

1 个答案:

答案 0 :(得分:0)

您可以将asynchronous_commit设置为多个级别,包括usertransaction级别(请参阅doc),因此可以共享同一张表服务之间。

如果您确实想要两个DB,则可以考虑从DB2到DB1的链接,甚至可以考虑DB1上的另一个服务,该服务允许(或不允许)两个用户之间的通信。