面向海量数据的高并发高可用分层系统架构设计
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向海量数据的高并发高可用分层系统架构设计相关的知识,希望对你有一定的参考价值。
近期参与一个互联网项目,按照该项目的需求设计了分层的系统架构,主要目的是高并发高可用,能够根据用户访问量和并发情况进行伸缩。
第一个部分是由Web服务器和应用服务器构成的负载均衡区。该区域的主要目标是分散用户的访问量,平衡各服务器的压力,提高各服务器的资源利用率,因为大多数网站都是属于IO密集型,因此可以利用线程池增加并发处理能力,采用多核多内存的资源配置模式。可以采用Apache+Tomcat或nginx+Jboss来实现,其中消息服务器通过异步处理机制可以提高系统响应速度,增加用户体验。
第二个部分是数据存储区。包括了NoSql数据库和关系型数据库,NoSql数据库主要目的是实现快速缓存,通过主从结构提高处理能力,NoSql数据库可以存储需要经常访问的数据,可以选择redis、Memcache、berkelydb等。关系型数据库主要存储交易和行为数据,通过读写分离和业务拆分提高数据库的负载能力。同时,数据在写入关系型数据库时候同时更新读库和Nosql数据库,以保证数据的一致性。数据一致性符合CAP原理。同时数据库存储的大量交易、行为数据可以通过ETL的形式提供给数据仓库作为数据分析和报表使用。
第三个部分是数据采集区。包括了多并发多线程的采集服务器集群,以提高数据更新的实时性。数据采集后存入分布式数据库,因存在大量非结构化数据,所以可以采用Monogodb、Hbase等文档或列表型数据库存储海量数据。Monogodb内置Map-reduce处理,Hbase可以结合Hadoop做Map-reduce大数据分析。生成的结果可以同步到数据存储区,以便于用户的查询。
整个体系结构如下图:
以上是关于面向海量数据的高并发高可用分层系统架构设计的主要内容,如果未能解决你的问题,请参考以下文章
做了两年java,这些高性能高可用高并发的技术架构你都知道吗?