Oracle coherence Oracle一致性的客户端和缓存配置

Oracle coherence Oracle一致性的客户端和缓存配置,oracle-coherence,Oracle Coherence,我有一个特定的场景,我们希望使用一致性作为分布式缓存。我将在这里描述 我有20多个独立进程,它们将连续地将数据放入缓存。虽然这不是一个问题,但它们的频率都不同 和2个从缓存中读取数据的过程 我不需要任何基础数据库,除了提供一致性的方式。数据将写入缓存并从缓存中读取 我有4个节点的集群供我使用(成本约束无论如何),一致性集群将位于不同的盒子上(infra约束无论如何),缓存的填充部分和读取部分将位于不同的N机器上 每天缓存的最大内存大小将徘徊在6 GB左右,最小值为2 GB。 缓存将只包含每日数据

我有一个特定的场景,我们希望使用一致性作为分布式缓存。我将在这里描述

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

  • 最大的一个是有人告诉我,根据我们购买的节点,我的连接数量有限。所以他说如果是4个,你最好最多只能有4个连接。所以,开发一个网守类的应用程序。即使我们使用TCP扩展。从我目前的阅读来看,我不这么认为。它是?关键是,如果它真的不是一个约束,那么你就不想这样做
  • 换句话说,依赖于集群中的节点,通过代理服务的连接是否有限制

  • 仅与上述内容相关的内容。在最大情况下,只有在扩展的情况下,我才能在推缓存时获得性能上的一些惩罚,对吗

  • 分区缓存/近缓存。由于读取时间和最快的更新缓存都非常关键。(这是我遇到的最重要的问题)

  • 我真的很想看到使用POF而不是serialization/externalizatble/protobuf的好处。一致性可以支持protobuf开箱即用吗?(以后可能会用到)


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

    使用代理会对性能产生一些影响,因为您要添加额外的网络跃点(从客户端到代理再到集群)。如果使用POF序列化,则代理不必序列化/反序列化值。它可以以序列化的形式传递对象。在大多数应用中,使用代理对性能的影响很小,因为一致性在网络速度方面得到了高度优化。除非客户端是.NET或C++,否则不需要使用代理,但有隔离客户端性能以影响缓存的优点。 如果一个客户端有许多频繁检索的项目,近缓存将显著提高检索性能,因为它们将在进程中找到


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

    Hi David-您声明“除非您的客户端是.NET或C++,否则您不需要使用代理”。请允许我问一下:即使对于具有近缓存的.NET也是如此吗(即,对于具有近缓存的.NET是否需要代理/网络跃点)?嗨,Dave,代理和网络跃点仅适用于分布式缓存。对于近缓存,跳是因为它通常由远程(分布式)缓存支持。对C++和.NET的近程缓存,您不需要代理,因为后备远程缓存将进行远程访问。戴维-请让我确认:…)因此,如果您有一个使用近缓存的.NET应用程序,则不需要运行*Extend TCP/IP Proxy/Listener?这取决于近缓存的配置方式。如果要完全避免网络访问,请使用本地缓存。