在微服务中监控系统状态的架构
Architecture for monitoring system state within microservices
我正在尝试构建一个服务,它将以图形结构监视当前系统状态。例如,如果用户 A 订阅了用户 B 并与其聊天,则该图应包含下一个关系:
A -- 订阅于 --> B
A --正在和 --> B
聊天
B --正在与 --> A
聊天
如果userA退出聊天,那么关系应该被删除。
另外,应该引入新的微服务,所以没有硬编码的决定(比如支持关系的子集)不能实现。
主要问题是数据的一致性和无法硬编码的新关系。
我想知道是否有任何解决方案或库可以帮助我解决这个问题。任何建议将不胜感激。
听起来您的系统应该支持事件驱动架构。例如,任何可能与系统其他部分相关的操作都应记录在事件队列中。因此,现在只要您的图形服务准备好更新,它就可以读取事件队列到最后并更新自己的状态。这将是一个尽可能解耦并且能够应对数据丢失或其他潜在问题的解决方案。
通常人们会使用像 Apache Kafka 这样的技术来实现一个简单、轻量级、快速的事件队列来实现这些目的。它允许您定义队列、称为主题和处理主题的消费者。参见 the docs。
我正在尝试构建一个服务,它将以图形结构监视当前系统状态。例如,如果用户 A 订阅了用户 B 并与其聊天,则该图应包含下一个关系:
A -- 订阅于 --> B
A --正在和 --> B
聊天B --正在与 --> A
聊天如果userA退出聊天,那么关系应该被删除。
另外,应该引入新的微服务,所以没有硬编码的决定(比如支持关系的子集)不能实现。
主要问题是数据的一致性和无法硬编码的新关系。
我想知道是否有任何解决方案或库可以帮助我解决这个问题。任何建议将不胜感激。
听起来您的系统应该支持事件驱动架构。例如,任何可能与系统其他部分相关的操作都应记录在事件队列中。因此,现在只要您的图形服务准备好更新,它就可以读取事件队列到最后并更新自己的状态。这将是一个尽可能解耦并且能够应对数据丢失或其他潜在问题的解决方案。
通常人们会使用像 Apache Kafka 这样的技术来实现一个简单、轻量级、快速的事件队列来实现这些目的。它允许您定义队列、称为主题和处理主题的消费者。参见 the docs。