云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

谷歌云_亚马逊云电脑_企业0元试用

小七 141 0

谷歌云_亚马逊云电脑_企业0元试用

SAP HANA系统复制提供了将SAP HANA数据库复制并连续同步到同一个或另一个数据中心的辅助位置的可能性。通常使用系统复制来支持高可用性和灾难恢复。SAP HANA 2.0引入了主动/主动(启用读取)系统复制操作模式,数据更新,云服务器好,允许以只读方式访问辅助站点。

SAP HANA 2 SPS 03引入了不可见接管功能,在发生接管时自动将客户端连接重新路由到辅助系统。然而,在目前的状态下,从主系统到辅助系统的接管会导致连接到数据库的Java应用程序中挂起JDBC连接或事务状态无效。

本博客将说明如何在应用程序端处理接管,以防止错误到达最终用户,直到接管完成。

先决条件

您例如,如SAP HANA Academy视频教程所示,设置了SAP HANA主动/主动(启用读取)系统您已经使用Hibernate作为JPA实现创建了一个springbootjava应用程序您已经为数据库主机设置了虚拟IP地址或虚拟主机名,在JDBC连接字符串中用作主机名。这将允许接管后恢复客户端连接。

调整应用程序

应用程序的连接池必须配置为在从池借用连接时验证连接。

如果使用Tomcat连接池,将以下属性添加到应用程序属性文件:

如果使用不同的连接池,您需要查看它的文档,了解如何配置连接验证。

应用程序的结构应确保操作可以重试,直到成功为止成功。这通常意味着这些操作必须在数据库事务中执行,该事务可以根据事务的结果回滚或提交操作。

Spring提供@Transactional注解,告诉框架一个注解的方法应该在一个事务中执行。您还可以将注释添加到类中,这意味着该类的所有方法都应在事务中执行。

现在,通过事务行为,各个操作是原子的,可以设置自动重试来重试操作,直到接管完成。

提供了一种易于使用的重试机制到春天再试试。要使用Spring Retry,必须将其添加为Maven依赖项。

添加依赖项后,可以将@EnableRetry注释添加到@Configuration类之一,将@Retryable注释添加到任何应重试的方法。注释定义了允许您配置重试行为的属性,例如重试之间的延迟或最大重试次数。

在上述代码中,操作最多重试60次,每次重试之间等待10秒。执行过程中发生的任何错误都将被捕获并忽略。只有在最大重试次数用完后,错误才会传播到调用者。

现在在接管过程中重试操作,您需要注意处于未注意到主数据库服务器失败状态的连接。这样的连接将继续尝试对失败的主服务器执行查询,直到所有重试都结束,好评返现卡,即使辅助服务器已经接管。这些连接必须手动断开,以便在接管后重新连接到新的主连接。

有两种可能实现挂起连接的断开

Spring Retry通过所谓的重试侦听器提供额外的自定义选项。重试侦听器可用于对"重试开始"、"重试错误"和"重试完成"等重试事件作出反应。

对于处理"重试错误"的连接,回调是最合适的。每当重试失败时都会调用此回调,它提供有关重试操作的当前状态和捕获的异常的信息。

有两种情况需要处理

对于第一种情况,云教云,重试处理程序必须检查异常的根本原因是SQLNonTransientConnectionException还是SQLNonTransientConnectionExceptionJDBCDriverException。这两个异常都表明与服务器的连接已丢失。如果遇到这样的异常,重试侦听器必须手动断开连接。如果可能,下次重试时将重新建立连接。

第二种情况可能发生在接管使事务对象处于不一致状态时。在这种情况下,必须重置事务对象,以便下次重试时可以重新使用它。

要使用重试侦听器,只需将其作为bean添加到应用程序配置中。

也可以使用自定义事务管理器,而不是处理断开连接的重试侦听器。事务管理器可以截获"begin transaction"、"rollback"和"commit"调用,并在此调用中进行必要的清理。

注意Spring retry的一般重试机制仍然是必需的。事务管理器只能替换重试侦听器。

实现自定义事务管理器的最简单方法是扩展提供的一个Spring事务管理器,例如JpaTransactionManager。

要使用事务管理器,只需将其作为bean添加到应用程序配置中。

现在就可以尝试

应用程序被设置为处理接管,通过添加重试侦听器或事务管理器,您可以将其作为一个测试驱动器。

要使系统处于负载状态并模拟一些查询,您可以使用您喜欢的负载测试工具(例如Apache JMeter)。

一旦系统处于负载状态,就触发对辅助系统的接管。

在您的负载测试工具您不应该看到任何应用程序错误,物联网概念,因为连接失败应该被重试代码隐藏。