SODBASE CEP学习(八):高可用性HA

在许多领域,流式计算CEP和它的高可用性方案发挥着重要的作用。我们往往需要HA方案保证窗口数据和执行计划不丢失。同时,有时也需要深入进程中的某个线程(任务)监测它的运行状态。如果心跳机制只建立在Worker(JVM进程)级别,往往会存在Worker还在,Task线程停掉了的情况。

本文将介绍SODBASE CEP基本的HA方法和概念。举几个常见应用场景:

(1)实时交易中,根据前面时间窗口的数据进行交易策略判断,服务器宕机了

(2)计算5分钟股价K线。数据还没累积到5分钟,服务器宕机了

(3)数据批量操作,一个批次还没有到累积满,服务器宕机了

(4)监测每个任务的查询执行状态、输入状态、输出状态,满足生产环境运维需求

1. 示例操作步骤

下面是一个批量操作中Hot-Hot HA的示例。批量窗口操作过程中,这些状况如客户端不稳定、输入数据的fail重传机制、网络通信中的各种故障等等,都给保证高可用性带来困难。 

目标:保证所有数据包括中间状态、缓存数据全部入库,即使集群中存在服务器宕机的情况。

前提:存储入库接口需有健壮,且能够判断将要插入的数据是否在库中已经存在。因为用户写的客户端可能有缓存重发,集群节点间也可能出现连不通的情况,不是单纯内存同步可以解决的。所以需要在存储级别的同步,即对已经存在的数据不进行重复入库。除非重复入库不影响应用使用。

(1)下载一个CEP服务器安装介质SODBASE-CEP-SERVER,解压。这里用的是Tomcat容器,支持其它J2EE容器。

在一台机器上模拟两个服务器。解压后的目录复制一份,这里取名为SODBASE-TOMCAT-7.0.56-2,如下图所示


将SODBASE-TOMCAT-7.0.56-2的conf目录下的server.xml删掉,将server-2.xml重命名为server.xml

两个服务器分别运行bin目录下的startup.bat,就启动CEP Server了。

注:如果在控制台提示 WARNING: Tables are not initialized in the database, please install the database.则在Web浏览器中输入

http://localhost:16111/sodbase-cep-server-webservice-1.0.1/install 回车,初始化服务器1状态数据库

http://localhost:16121/sodbase-cep-server-webservice-1.0.1/install 回车,初始化服务器2状态数据库。

默认每个服务器实例使用自己状态数据库。如果两个Server实例在db.properties配置指向同一数据库,则采用任一URL请求初始化一遍就可以了。

(2)下载本文的模型示例CEP HA的模型示例

query1hhnode1.soddata2 //部署到服务器1上

query1hhnode2.soddata2//部署到服务器2上

query1hhclient.soddata2//客户端,模拟了股票数据的生成

query1hhnode1和query1hhnode2的CEP模型功能一样,都是模拟分批窗口操作,每隔10秒,将积攒的股票数据批量操作。这里没有连存储,用屏幕打印来演示。


(3)下载CEP Server Admin程序SODBASE-CEP-Server-Admin,解压

运行cepserver-admin.exe

登陆到服务器1。localhost端口16111,默认用户名admin密码cep,安装query1hhnode1.soddata2 ,启动hhnode1模型。

点击右上角注销按钮后,同样的方式登陆到服务器2。localhost端口16121,安装query1hhnode2.soddata2 ,启动hhnode2模型。


这样,HA双热服务器就部署好了。

(4)运行客户端

以下两种方法任选一个

方法1:下载Java-API-Example HA示例,解压导入为Exlipse工程,运行com.example.ha.HotHotExample.java。

方法2:如果没有Eclipse环境。用CEP Server Admin登陆到服务器1。localhost端口16111,默认用户名cep密码cep,安装query1hhclient.soddata2 ,启动query1hhclient模型。

(5)结果输出

可以看到服务器2屏幕打印输出,一条输出代表一个批次处理完成。


(6)模拟宕机

关掉服务器2,可以用server admin将cep模型停掉,也可以直接关掉Tomcat

可以发现批次处理已经转移到了服务器1。如下图显示,以45开头的batch是服务器2处理的,从50开始转到了服务器2。而且不会丢失中间结果。


(7)检查模型运行状态

在浏览器(极速模式)地址栏输入

http://localhost:16111/sodbase-cep-server-webservice-1.0.1/servermonitor?username=admin&password=cep&modelspacename=admin&modelname=hhnode1&version=1.0

查看hhnode1的详细运行状态。如果有故障可以检查出来,如下图所示。


总体信息没有固定格式,只用于运维检查使用。查询单条SODSQL语句的执行状态。例如,在浏览器(极速模式)地址栏输入

http://localhost:16111/sodbase-cep-server-webservice-1.0.1/querymonitor?username=admin&password=cep&modelspacename=admin&modelname=hhnode1&version=1.0&queryname=admin.hhnode

,如果运行正常应该处于"waitingevent"或"computing"状态。要实现Hot-Standby或自动化监测,建议使用单条SODSQL监测的接口。


2.工作原理

2.1. Hot-Standby

2.1.1特点

Hot-Standby即主备方式,这种类型的HA有以下几个特点:

(1)有Heartbeat监测,可以做细粒度监测。

可以节点主动汇报,也可以由管理节点轮询。通常是定时监测。

(2)对于特定的任务,在主备机器中的一台上运行,并能进行任务迁移。

这里的任务是指已经并行化后的任务,例如计算车流量的任务,如果并行化成两个任务,任务1接收奇数尾号的数据,任务2接收偶数尾号的数据。那么任务1总得有一台服务器在运行它,要么在主服务器上运行,要么在备服务器上运行。任务2也一样。

"主"和"备"的概念是相对的,"备"指的是任务可以迁移到的服务器。可以是一主一备,也可以是一主多备。

(3) 通常没有内存同步和执行计划、中间结果和缓存同步的机制。


2.1.2HA的粒度

如果粒度在Worker进程级别,那么只需要监听进程的状态。

如果需要Task线程级别的细粒度HA,那么我们就需要监听线程的运行状态。


2.2 Hot-Hot (窗口聚合的HA问题)

2.2.1 特点

Hot-Hot双热方式的HA的特点是

(1)在集群中同步内存和执行计划状态,可以保证中间结果或缓存不丢失。

(2)节点输出同步。

2.2.1客户端示例代码

查看客户端数据源,也是由一个CEP模型实现的。里面有五条EPL语句。其中hhinput是股票数据源,hhtimerinput、hhtimer2是两个定时器,用于生成精确的滑动窗口开始结束时间。hhdispatcher1和hhdispatcher2则是负责通过发送数据到两台CEP Server上去。


 

SODBASE CEP用于轻松、高效实施数据监测、监控、实时交易类、日志分析类项目微笑。EPL语法见SODSQL写法与示例。图形化建模请使用SODBASE Studio。遇到任何问题可发站内消息微笑


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值