kdb和x2B;RDB和HDB的复制

kdb和x2B;RDB和HDB的复制,kdb,Kdb,我试图弄清楚如何实现/配置kdb的RDB和HDB复制+ 如何将RDB和HDB配置为在不同主机上有两个具有相同数据的实例?最简单的方法是交叉装载tickerplant日志位置和HDB位置,并从两台主机访问。然后,第二台主机上的RDB实例只需像往常一样重播tickerplant日志,并订阅相同的tickerplant,但重要的是不要让第二台RDB进行日终减记。它的.u.end应该只是从内存中清除数据 第二个HDB没有我能想到的任何特殊条件,但是为了让实例自动刷新/重新加载(并拾取最新的日期片),那么

我试图弄清楚如何实现/配置kdb的RDB和HDB复制+
如何将RDB和HDB配置为在不同主机上有两个具有相同数据的实例?

最简单的方法是交叉装载tickerplant日志位置和HDB位置,并从两台主机访问。然后,第二台主机上的RDB实例只需像往常一样重播tickerplant日志,并订阅相同的tickerplant,但重要的是不要让第二台RDB进行日终减记。它的.u.end应该只是从内存中清除数据


第二个HDB没有我能想到的任何特殊条件,但是为了让实例自动刷新/重新加载(并拾取最新的日期片),那么执行写操作的原始RDB也需要触发第二个HDB的刷新/重新加载

您还可以尝试其他几种方法。由于KDB没有复制管理系统,复制副本上存在数据丢失或数据无序的可能性。因此,你必须考虑如何处理这些情况

处理这些情况的一个简单解决方案是维护每次更新的序列号。如果复制副本检测到缺失序列或无序序列,它可以要求primary发送这些缺失序列的数据

  • 链接式tickerplant:您可以尝试类似于链接式tickerplant样式的设置。二级自动售检票机设备订阅主设置,然后二级设置像正常设置一样运行

  • 次要RDB/TP订阅主要RDB:次要RDB或TP从主要RDB获取更新。辅助HDB将正常工作

  • 复制管理的单独过程:如果您需要多个副本,那么如果所有副本都连接到主副本,则会增加主副本上的负载。此外,管理数据丢失场景也很困难

    相反,您可以创建一个单独的进程,所有副本都将订阅该进程。主TP/RDB将向该manager服务发送数据,然后该服务可以处理副本。这样,您还可以将所有与副本问题相关的处理逻辑保留在一个位置

    这种方法的另一个好处是不需要更改主要TP/RDB服务/逻辑来处理数据问题。经理服务会处理一切


  • “那么第二台主机上的RDB实例只需要重播tickerplant日志”——我认为重播tickerplant日志是tickerplant本身的责任。RDB是否可以仅触发tickerplant以在没有tickerplant的情况下重播日志?如果没有,RDB如何触发just tickerplant来重播日志,而不影响其他RDB?这是否意味着RDB的每个实例都需要tickerplant的实例?tickerplant不会重放tickerplant日志,只有订阅者(.例如RDB)重放tickerplant日志。RDB的标准方法是1。连接到tickerplant以注册订阅并确定当前日志计数2。重放tickerplant日志(完全独立于tickerplant),直到第一步3中找到的日志计数为止。日志重播完成后,实时订阅将从步骤1中注册订阅时开始恢复。重播时,RDB使用
    -11从磁盘读取tickerplant日志。这不会影响任何其他流程(不会影响tickerplant或任何其他RDB)。最后不需要-您不需要多个TickerPlant。一个tickerplant可以为多个RDB和订阅服务器提供服务。我应该澄清一下“它不会影响tickerplant”-当然,它会在tickerplant中创建一个输出队列,因为它会在RDB准备开始排空输出队列并接收实时更新之前,等待RDB从日志重播中恢复过来。因此,它会使tickerplant保持此输出队列,但重要的是,它不会阻止tickerplant。tickerplant可以正常继续为其他订户提供服务。只有当这个输出队列变得巨大并接近tickerplant或box的内存限制时,它才会成为一个问题