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

需积分: 9 1 下载量 5 浏览量 更新于2024-07-25 收藏 1.35MB PPT 举报
"人人网的架构经历了从初期的单一架构到复杂分布式架构的演变,逐步适应了用户量的增长和业务需求的变化。在2006年,人人网采用Resin Pro作为Web服务器,配合MySQL InnoDB主从结构和单个Storage+Squid缓存。随着业务发展,2007年,他们引入了LVS负载均衡、Memcached缓存系统、ICE中间件、MySQL垂直分区以及简单分布式Storage,并开始使用Lucene进行搜索。2008年,人人网进一步推进SOA架构,开放API,使用MySQL集群进行水平分区,并加强了监控和安全。2009年至2010年,人人网开始转向松耦合的SOA,采用Graceful degradation策略,开始尝试NoSQL数据库,建立多数据中心以提高扩展性和灾备能力,并注重总体拥有成本(TCO)。 Nuclear是人人网自研的一款分布式键值存储系统,旨在实现数据的无限扩展、自动复制和分区。它支持CAP理论中的CA(一致性与可用性),通过Hinted Handoff保证始终可以写入,避免单点故障。Nuclear提供了多种一致性级别,包括DISCARD、MIN、QUORUM、DISCARD_QUORUM、ALL,以满足不同的应用场景,确保最终一致性。该系统基于NIO、Netty、Protocol Buffers和Spring构建,具有丰富的数据模型,如Key-List结构,支持弱结构化查询。数据分区通过HashRing算法实现,当添加新节点时,数据会自动重新分布,保证系统的稳定运行。" 知识点详细说明: 1. **Resin Pro**: 这是一个Java应用服务器,早期被用作人人网的Web服务器,处理HTTP请求。 2. **MySQL InnoDB主从结构**: MySQL的InnoDB引擎用于事务处理,主从结构用于数据备份和高可用性,主服务器处理写操作,从服务器处理读操作。 3. **LVS (Linux Virtual Server)**: 一种开源的负载均衡解决方案,能够将流量分发到多个服务器,提高系统的并发处理能力。 4. **Memcached**: 高性能的分布式内存对象缓存系统,用于减轻数据库压力。 5. **ICE (Integration and Communication Environment)**: 一个中间件框架,用于构建分布式系统,提供服务间通信。 6. **MySQL集群和垂直分区**: 数据库集群增强了可扩展性,垂直分区是将表的列按照相关性拆分成不同的表,降低数据访问的复杂度。 7. **SOA (Service-Oriented Architecture)**: 一种设计原则,将应用程序分解为一组可重用的服务,提高灵活性和互操作性。 8. **API (Application Programming Interface)**: 接口允许其他软件系统与人人网平台进行交互,扩展其功能。 9. **NoSQL数据库**: 为处理大规模数据而设计的非关系型数据库,例如MongoDB、Cassandra等,可能被人人网用作MySQL的替代品,以支持大数据和高并发场景。 10. **多数据中心和灾备**: 建立多个数据中心以分散风险,提高服务的连续性和可靠性。 11. **Nuclear**: 人人网的分布式键值存储系统,用于存储海量数据,支持多种一致性级别,具备高可用性和可扩展性。 12. **HashRing算法**: 数据分区策略,通过哈希函数确定数据存储在哪个节点上,便于水平扩展。 13. **弱结构化查询**: Nuclear支持对数据的灵活查询,适应不规则的数据模型。 通过这些技术,人人网成功地应对了用户量增长带来的挑战,构建了一个高效、可扩展、高可用的社交网络平台。