简单的一个分布式统计设计
结构如下:
统计节点:
1、启动注册到ZK集群上,在ZK上另外一台发生故障的时候,更新自己为主服务地址
2、主节点接收到数据的时候,将数据写入到Redis集群(redis定时落地),和从节点的同步有二种方式
a)主节点通知从节点,但是从节点不写redis,发生故障切换的时候,接收到数据提供方数据的时候开启写入到redis
b)从节点定时从redis集群中刷新相关数据
建议采用a方法
3、对外提供各种统计查询服务
数据提供方:
1、从zk获得服务地址,监听对应节点,动态的获得服务的主节点
2、向服务节点发送相关数据
其他问题:
统计的数据如果很大的情况下,单台容纳不下的情况下怎么处理,建议在服务节点也进行数据过期的处理,一般的中等规模的应用应该可以处理。另外一个可以在获得服务地址上做文章,针对数据提供方进行分组,不同组的统计服务是一统计服务的主从节点,结构如下: