0

我需要更改应用程序的属性,并且我知道我可以通过管理服务器 API 调用来做到这一点。

使用管理服务器 API 的两个问题是:

  1. 性能:当它可能直接在消息处理器中调用时,它正在调用管理服务器。性能问题可能可以通过缓存来缓解。
  2. 可用性:必须使用管理服务器 API 意味着系统依赖于可用的管理服务器。而如果直接在代理本身中完成,则会减少故障点的数量。

有什么推荐的替代品吗?

4

2 回答 2

3

最后,所有实体都存储在 cassandra 中(用于运行时)

您最好的选择是使用访问实体策略来获取有关实体的任何信息。那不会击中MS。但仅供参考 - 大多数情况下,您甚至不需要访问实体策略。当您使用验证 apikey 或验证访问令牌策略时 - MP 将所有相关实体详细信息作为流变量提供。所以不需要额外的访问实体调用。

当您更新任何实体(如开发人员、应用程序)时 - 我真的认为它是管理类型用例而不是运行时用例。因此,使用管理 API 应该没问题。

如果您的用例需要运行时 API 调用来依次更新应用程序中的属性,那么该属性可能不应该是应用程序的一部分。想想如何将它放到缓存、KVM 或其他可以从 MP 访问它的地方(只是一个想法,不完全了解用例)。

于 2014-02-06T01:47:48.347 回答
1

该系统的设计是所有实体编辑都经过管理服务器,而管理服务器又负责以高性能和可扩展的方式执行编辑。Management Server 还负责了解哪些消息处理器需要通过 zookeeper 注册来获知更改。这也确保了如果给定的消息处理器不可用,例如,因为它正在升级,它会在可用时获取更新。Management Server 是事实的来源。

对于开发人员应用程序属性(或实际上任何应用程序元数据),这些值会被缓存 3 分钟(我认为),因此消息处理器最多可能会在 3 分钟内看不到新值。

就可用性而言,Management Server 设计为高度可用的,依赖于与消息处理器设计相同的底层架构。

于 2014-02-05T20:23:03.107 回答