Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Remote » 管理 SQL Remote 系统

 

保证消息传送系统

保证消息传送系统可确保:

  • 按正确顺序应用所有复制的操作。

  • 不丢失任何复制的操作。

  • 不会将复制的操作应用两次。

保证消息传送系统使用以下信息:

  • 在 SYSREMOTEUSER 系统表中保留的状态信息   对于每个预订者,此表中都有与之对应的一行,其中包含向该预订者发送的和该预订者接收的消息的状态信息。例如:

    • 在统一数据库中,对于每个远程用户,SYSREMOTEUSER 系统表都有与之对应的一行。

    • 在每个远程数据库中,SYSREMOTEUSER 系统表都包含一个具有统一数据库信息的单独行。

    SYSREMOTEUSER 系统表由 SQL Remote 消息代理 (dbremote) 来维护。

    在预订者数据库中,SQL Remote 消息代理 (dbremote) 会向发布者数据库发送确认,以确保 SYSREMOTEUSER 系统表在预订所涉及的各方均得到正确维护。

  • 消息标头中的信息   SQL Remote 消息代理 (dbremote) 读取消息的标头信息,并使用此信息更新 SYSREMOTEUSER 系统表。消息的标头包含以下信息:

    • 消息的 resend_count   跟踪接收数据库丢失消息的次数的计数器。

      在下例中,resend_count 为 1。

      Current message's header: (1-0000942712-0001119170-0)

    • 上一条消息中最后一个 COMMIT 的事务日志偏移   在下例中,上一条消息中最后一次提交操作的事务日志偏移为 0000942712。
      Previous message's header:(0-0000923357-0000942712-0)
      Current message's header: (0-0000942712-0001119170-0)

    • 当前消息中上一个 COMMIT 的事务日志偏移   在下例中,当前消息中上一次提交操作的事务日志偏移为 0001119170:
      Current message's header: (0-0000942712-0001119170-0)

      如果事务跨多条消息,则两个事务日志偏移在最后一条消息包含 COMMIT 之前可以相同。

      在下例中,直到第四条消息才发生 COMMIT:

      (0-0000942712-0000942712-0)
      (0-0000942712-0000942712-1)
      (0-0000942712-0000942712-2)
      (0-0000942712-0001119170-3)

    • 序列号   当事务跨多条消息时,使用此序列号正确排列消息的顺序。

      序列号零可表示:

      • 如果事务日志偏移不同,则消息不属于包含由多个部分组成的消息的一部分。

        在下例中,消息不属于包含由多个部分组成的消息的一部分:

        (0-0000923200-0000923357-0)
        (0-0000923357-0000942712-0)
        
      • 如果事务日志偏移相同,则消息是由多个部分组成的消息的第一部分。

        在下例中,第一条消息是由多个部分组成的消息的一部分:

        (0-0000942712-0000942712-0)
        (0-0000942712-0000942712-1)
        (0-0000942712-0000942712-2)
        (0-0000942712-0001119170-3)

 另请参见

操作的顺序
丢失或损坏的消息
仅应用消息一次