我有一个由Postgres支持的后端微服务。 我在应用程序中还具有微服务功能,例如聊天(消息传递应用程序),类似于Instagram。
原因,为什么我为聊天功能提供其他服务:
我想为Messages表(以及其他相关表,例如Conversation表,Conversation_Participants表等)提交异步提交。 如果我错了,请纠正我,但是我不能使某些查询异步,而让其他查询同步。就是这个或那个。因此,我需要一个单独的数据库来进行聊天。
**每个查询我都可以使用SET LOCAL synchronous commit TO OFF:'
之类的东西,但我假设
那不是很明智,也不安全。
减轻来自主后端微服务的负载。
问题:
在我的主微服务中,我有一个名为user_relations
的表,可以在该表中判断某个用户是否阻止了其他用户。
显然,这是Chat微服务应注意的事情,因此用户将无法向阻止他们的人发送消息。
但是,聊天微服务如何访问该数据?
是否应该维护uer_relations表的副本,然后对主服务进行每次更改,都将向聊天服务发送gRPC请求,以便相应地更新其自己的user_relations表?
还是有更好的解决方案?
答案 0 :(得分:0)
您可以将asynchronous_commit
设置为多个级别,包括user
或transaction
级别(请参阅doc),因此可以共享同一张表服务之间。
如果您确实想要两个DB,则可以考虑从DB2到DB1的链接,甚至可以考虑DB1上的另一个服务,该服务允许(或不允许)两个用户之间的通信。