阅读文本大概需要4分钟。
近期参与一个互联网项目,按照该项目的需求设计了分层的系统架构,主要目的是高并发高可用,能够根据用户访问量和并发情况进行伸缩。
第一个部分是由Web服务器和应用服务器构成的负载均衡区。该区域的主要目标是分散用户的访问量,平衡各服务器的压力,提高各服务器的资源利用率,因为大多数网站都是属于IO密集型,因此可以利用线程池增加并发处理能力,采用多核多内存的资源配置模式。可以采用Apache+Tomcat或Nginx+Jboss来实现,其中消息服务器通过异步处理机制可以提高系统响应速度,增加用户体验。
第二个部分是数据存储区。包括了NoSql数据库和关系型数据库,NoSql数据库主要目的是实现快速缓存,通过主从结构提高处理能力,NoSql数据库可以存储需要经常访问的数据,可以选择Redis、Memcache、berkelydb等。关系型数据库主要存储交易和行为数据,通过读写分离和业务拆分提高数据库的负载能力。同时,数据在写入关系型数据库时候同时更新读库和Nosql数据库,以保证数据的一致性。数据一致性符合CAP原理。同时数据库存储的大量交易、行为数据可以通过ETL的形式提供给数据仓库作为数据分析和报表使用。
第三个部分是数据采集区。包括了多并发多线程的采集服务器集群,以提高数据更新的实时性。数据采集后存入分布式数据库,因存在大量非结构化数据,所以可以采用Monogodb、Hbase等文档或列表型数据库存储海量数据。Monogodb内置Map-reduce处理,Hbase可以结合Hadoop做Map-reduce大数据分析。生成的结果可以同步到数据存储区,以便于用户的查询。
整个体系结构如下图:
一个系统能不能支持百万并发或者千万并发需要一张牛逼的架构图,就像万丈高楼平地起,如果图纸设计不合理可能盖到一般就倒了。系统也一样,如果前期没有做好整体架构,后期业务量上来了想拓展发现只能推倒从来,这样的话有需要花费大量的人力物力,还不如前期好好搭建。
来源:https://blog.51cto.com/casey/1741461
作者: 清茶问道
☆
往期精彩
☆
03 精讲Spring Boot—入门+进阶+实例
关注我
每天进步一点点
很干!必须好看☟