2

我有一个特定的场景,我们想使用 Coherence 作为 Sitributed 缓存。我将在这里描述。

  1. 我有 20 多个独立进程,它们将不断地将数据放入缓存中。它们的频率各不相同,尽管这不是问题。
  2. 以及 2 个将从这些缓存中读取数据的进程。
  3. 除了连贯性提供的方式外,我不需要任何基础数据库。数据将被写入缓存并从缓存中读取。
  4. 我有 4 个节点集群可供我使用(无论成本约束),并且一致性集群将位于不同的盒子上(无论是基础设施约束),并且缓存的填充部分和读取部分都将位于不同的 nmachines 上。
  5. 每天缓存的峰值内存大小将徘徊在最大 6 GB 左右,最小为 2 GB。缓存将只有每日数据,我将有单独的归档过程来模拟继续归档它。关键是缓存大小现在只有这个大小。可以说我要把日期排除在关键方程之外。
  6. 虽然想探索我是否可以将更多存储到这 4 个节点中。现在它的简单序列化,可以探索其他 nbinary 格式。或者我应该明确地使用这个大小的缓存?
  7. 我的读写操作在一天中相当分散。这意味着读取和写入将继续由这 2 个读取客户端和 20 多个写入客户端进行。它不像其中之一更多。尽管在所有后台进程中都有一个启动批处理,但它比之后的连续推送更多地推送到缓存。但持续推送也会推送大量数据。

现在我关于上述几点的问题(也因为一些混乱)

  1. 最大的一个是有人告诉我,我的连接数量有限,具体取决于我们购买的节点。所以他说如果它是 4 个,理想情况下你应该最多只有 4 个连接。所以,开发一种看门人的应用程序,什么不是。即使我们使用 TCP Extend。现在从我目前的阅读来看,我不这么认为。是吗?关键是如果它真的不是约束,就不想那样做。

换句话说,通过代理服务的连接是否有限制取决于集群中的节点?

  1. 仅与上述有关的一些内容。在最大情况下,只有当我采用扩展方式时,我才会在推送缓存时对性能造成一些损失,对吗?

  2. 分区缓存/近缓存。由于读取时间以及最更新缓存都非常关键。(我最讨厌的问题)。

  3. 真的很想看看使用 POF 可以获得的好处,而不是说序列化/externalizatble/protobuf。coherence 可以开箱即用地支持 protobuf 吗?(以后可能会)

4

1 回答 1

1

除了正常的网络和硬件资源限制外,Coherence Extend 代理可以支持的连接数量没有技术限制。如果有许可限制,您必须询问 Oracle 销售人员。

使用代理会对性能产生一些影响,因为您要添加一个额外的网络跃点(客户端到代理到集群)。如果您使用 POF 序列化,则代理不必序列化/反序列化值。它只能以序列化的形式传递对象。在大多数应用程序中,使用代理对性能的影响很小,因为 Coherence 针对网络速度进行了高度优化。除非您的客户端是 .NET 或 C++,否则您不需要使用代理,但是将客户端性能与影响缓存隔离开来是有好处的。

如果客户端有许多频繁检索的项目,近缓存将显着提高检索性能,因为它们将在进程中找到。

POF 基于更快的序列化/反序列化和更紧凑的存储提供了性能改进。最好根据您的真实生产数据尝试测试数据并自己测量差异。Coherence 不支持开箱即用的 protobuf。

于 2010-08-26T21:37:12.000 回答