简友广场每天写1000字程序员

分布式容错系统设计

2019-03-01  本文已影响4人  皮皮杂谈

        系统设计上考虑实时数据服务集群和历史数据服务集群。实时数据服务集群采用Zookeeper集群管理技术,搭建数据采集适配解析器(控制转发器)程序、在线数据流处理(Storm)、分布式消息队列(Kafka)的集群应用;采用redis-cluster技术,搭建内存数据库(Redis)的集群应用;采用MySQL Cluster技术,搭建关系型数据库MySQL的集群应用;采用Nginx配置和管理Web服务(Tomcat)的负载均衡应用;历史数据服务集群采用 Zookeeper集群管理技术,搭建时间序列大数据库 OpenTSDB,依靠自身的节点发现、加入和恢复功能。

        通过Zookeeper对至少3台台服务器上分布式消息队列Kafka构建集群,至少3个Kafka作为消息代理,其中运行着若干个Partition,由Zookeeper决定解析适配器的消息推送到哪个Partition,实现负载均衡,同时保证无单点故障。当任何一套服务出现故障,将数据流立即切换到其他负载最小的服务上。

        实时数据处理采用流式数据处理服务Storm完成。通过Zookeeper对至少3台服务器上Storm构建集群,无单点故障,至少3个节点是平等的,通过选举机制实现负载均衡,集群控制单元会选择最适合的Storm服务处理进入的数据流。Storm中的Spouts作为Kafka消费者,通过Bolts和Streams Groupings对实时采集的监测、状态和告警等消息进行过滤、合并、保存等处理,处理结果保存至内存数据库Redis中。

        实时数据存储采用Key-Value内存数据库Redis实现。采用Redis4.0自带的集群能力构建集群,主从节点读写分离,高效运行,无单点故障。Storm将处理完的数据发送到Redis的内存中存储,Redis之间通过集群同步数据。每个Redis中缓存实时的告警数据、状态变化数据和测量数据,用作监测、查询和实时汇总。

        Web服务层采用tomcat作为容器,在至少3台服务器上部署tomcat,通过Nginx构建WebSever集群。通过Nginx实现客户端浏览器请求的负载均衡,保证客户端web请求无单点故障,同时能够实现不间断服务更新和扩展业务系统。实时监测和展示所需要的实时数据将通过Redis内存+WebSocket方式推送到浏览器中,秒级响应,能够保证50万/秒峰值并发量,保证客户端3秒之内的查询效率。

        采用Zookeeper集群管理技术,搭建时间序列大数据库 OpenTSDB集群。至少3台服务器构建集群,保证无单点故障的前提。

上一篇下一篇

猜你喜欢

热点阅读