人人网技术架构演进:从Resin到NoSQL
需积分: 9 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支持对数据的灵活查询,适应不规则的数据模型。
通过这些技术,人人网成功地应对了用户量增长带来的挑战,构建了一个高效、可扩展、高可用的社交网络平台。
2019-03-22 上传
2011-04-21 上传
点击了解资源详情
2022-06-09 上传
2019-08-09 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
2020-07-15 上传
DragonFly-9
- 粉丝: 2
- 资源: 11
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析