人人网技术架构演进:从Resin到Nuclear

需积分: 10 54 下载量 175 浏览量 更新于2024-08-17 收藏 1.35MB PPT 举报
"人人网架构的发展历程展示了从早期的单一架构到复杂分布式系统的演变,包括ResinPro、MySQL主从结构、LVS Resin Web集群、Memcached、ICE中间层、MySQL集群、DFS等技术的应用。随着业务增长,人人网引入了Nuclear,一个分布式键值存储系统,支持数据复制、分区、高可用性和多种一致性选项。Nuclear基于Netty、Protocol Buffers和Spring构建,使用HashRing进行数据分区,并能无缝添加新节点。" 在早期,人人网的架构始于2006年,主要依赖ResinPro作为Web服务器,配合MySQL InnoDB主从结构来处理数据存储,单个Storage配合Squid缓存来提升性能。随着用户量的快速增长,2007年,人人网开始采用LVS(Linux Virtual Server)和Resin组成的Web集群,大规模引入Memcached来缓解数据库压力,并构建了基于ICE的中间层服务,实现MySQL的垂直分区,同时引入了简单的分布式Storage和Lucene搜索引擎。 进入2008年,人人网进一步优化架构,开放API支持SOA(面向服务架构),实现了MySQL的水平分区,增强了监控和安全性,并开始使用DFS(分布式文件系统,如Hadoop的HDFS)以及自研的龙存系统。2009至2010年间,架构趋于稳定,转向更松耦合的SOA,引入Graceful Degradation策略,开始考虑NoSQL数据库,例如BigTable或Cassandra,建立多数据中心以实现扩展性和灾备,同时关注总体拥有成本(TCO)。 关键的创新在于Nuclear项目,这是一个分布式键值存储系统,旨在提供无限的存储容量和数据分区。Nuclear通过数据自动复制和分区确保了系统的高可用性,避免了单点故障。它提供了多种一致性选项,如DISCARD、MIN、QUORUM、DISCARD_QUORUM、ALL,以适应不同场景的需求,保证最终一致性。在实现上,Nuclear采用了高性能的NIO框架Netty、Google的Protocol Buffers进行序列化,以及Spring框架。其数据分区策略是基于HashRing,允许平滑地添加和移除节点,以应对数据量的增长和系统扩展。这种灵活的架构设计使得人人网能够处理海量用户和数据,同时保持服务的稳定和高效。