`
yangzb
  • 浏览: 3474034 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

sequoia中的自动故障处理

 
阅读更多

Sequoia 提供了完全透明的故障处理。这意味着只要保证至少有一个后端处于enable状态,客户端应用就感觉不到故障的发生。因此,客户端不需要针对集群的异常做任何处理。

下面将更详细地说明不同情况的故障处理:

处理控制器连接失败

如果一个控制器实例连接失败,Sequoia 连接器会根据预定义的规则透明地将客户端连接重新连接到另一个控制器。参考在控制器之间分配客户端连接。

如果是在一个事务内部发生故障,事务的上下文会在重新连接时自动保存。

处理控制器失败

如果一个控制器失败,这个控制器上的后端会被disable掉。现有的客户端连接也会自动的根据预定义的规则重新连接到另外一个控制器上。

正在执行的查询,按下面方法处理:

  • 如果控制器在读写查询执行之前失败,那么这些读写查询会被自动恢复重新执行(甚至在事务内部也可以) 。
  • 如果查询已经执行了但是尚未返回结果,这个时候控制器失败了,那么结果仍然可以得到。

当控制器无法从错误中恢复时,Sequoia 会在log目录自动生成一个名为sequoia.report的 trace文件.

处理后端错误

如果后端失败了,它会从负载均衡器上自动去掉。失败操作的处理则取决于查询类型:

  • 如果在读操作时后端失败,这个操作会在另外一个后端上重试。如果重试成功了,第一个后端会被disabled掉。如果在所有的后端上都失败了,那么这个查询可能有问题。.
  • 如果在写操作的过程中后端失败,但是这个写操作在其他后端上执行成功,那么这个失败会被忽略。

这样,所有的失败都可以对客户端透明地处理。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics