人人网技术架构的演进

上传人:飞*** 文档编号:51604202 上传时间:2018-08-15 格式:PPT 页数:42 大小:1.35MB
返回 下载 相关 举报
人人网技术架构的演进_第1页
第1页 / 共42页
人人网技术架构的演进_第2页
第2页 / 共42页
人人网技术架构的演进_第3页
第3页 / 共42页
人人网技术架构的演进_第4页
第4页 / 共42页
人人网技术架构的演进_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《人人网技术架构的演进》由会员分享,可在线阅读,更多相关《人人网技术架构的演进(42页珍藏版)》请在金锄头文库上搜索。

1、人人网技术架构介绍人人网黄晶Guideline人人网架构发展NuclearRose架构发展2006 Lets Get it startedResin Pro MySQL InnoDB主从结构 单Storage+Squid架构发展2007 突飞猛进LVS Resin Web集群 大量使用Memcached 中间层,基于ICE MySQL集群,垂直分区 简单分布式Storage Lucence搜索架构发展2008 继续突破开放API,SOA MySQL集群,水平分区 加强监控和安全 DFS,龙存架构发展2009 2010 稳健发展紧耦合=松耦合,SOA Graceful degradation M

2、ySQL=NoSQL 多数据中心,可扩展,灾备 关注TCOGuideline人人网架构发展NuclearRoseNuclear 功能分布式key-value存储 数据自动复制到多个节点 数据自动分区到不同节点 存储容量无限扩展 CAP - CANuclear - CAP可用性 永远可写入(Hinted Handoff) 不存在单点风险Nuclear - CAP多一致性选项 DISCARD MIN QUOROM DISCARDUOROM ALL 提供最终一致性 Eventually ConsistentNuclear - OverviewNuclear - 原理构建 NIO Netty Prot

3、ocol Buffers Spring 富数据模型 Key=List 弱结构化查询Nuclear - 原理分区 Hash RingNode A 0 6148914691236517205Node B 6148914691236517205 12297829382473034410Node C 12297829382473034410 18446744073709551616Nuclear - 原理增加节点Node N 0 3074457345618258602Node A 3074457345618258602 6148914691236517205Node B 614891469123651

4、7205 12297829382473034410Node C 12297829382473034410 18446744073709551616Nuclear - 原理增加节点A c,a,b, c,a,bB a,b,c,a,b,cC b,c,a,b,c,aN c,n,b,c,a,bA n,a,c,n,b,cB a,b,n,a,c,nC b,c,a,b,n,aA a,b = NB b,c = NC c,n = NNuclear - 原理替换节点A d,a,c,d,b,cB a,b,d,a,c,dC b,c,a,b,d,aD c,d,b,c,a,bN d,n,c,d,b,cB n,b,d,n,c

5、,dC b,c,n,b,d,nD c,d,b,c,n,bB d,a = N C b,c = ND c,d = NNuclear - 原理删除节点A d,a,c,d,b,cB a,b,d,a,c,dC b,c,a,b,d,aD c,d,b,c,a,bB d,b,c,d,b,cC b,c,d,b,c,dD c,d,b,c,d,bC b,c = BD c,d = C B d,a = DNuclear - 原理节点状态迁移图Nuclear - 原理Consistency 和 NWR W+RN W=2 R=2 N=3 系统保障最终的一致性 Merkle TreeNuclear - 应用系统组件 普通节点

6、 (Node) 接收Client请求 提供数据存储 中心节点(Seed) 维护整个Nuclear Instance的拓扑关系 健康检测 客户端(Nuclear Client) 提供CRUD APINuclear - 应用Nuclear InstanceNode ANode BNode Z SeedNuclear - 应用节点变更 增加 sh node.sh new A 删除 delete node A (manage.sh) 替换 replace ANuclear - 应用性能 单节点处理最高 2.5Wreq/s 典型应用环境: 4 Node Mysql N=3 W=2 R=2 100 Cli

7、ent Write Request 单个Node 15862 req/s 平均单次请求耗时 5ms 99.51% 请求耗时 param dataIDparam consistencyLevelListparam keyparam Conditionparam consistencyLevelNextDataIDPut param key param dataID param value param consistencyLevel Replace 同 Put dataID可选 Delete param key param dataID param consistencyLevelNuclear

8、 - 应用Code Example DataID Protocol BufferNuclear - 应用Nuclear Manage Client QPS查看 Node接收请求总数 Node处理请求耗时数据 节点信息查看 集群拓扑信息查看 动态更改节点处理线程数Nuclear - 展望Eventually Consistent Vector Clock Async Store Read Cache Balance Monitor BigTable ?Nuclear - 参考 Amazons Dynamo http:/ _dynamo.html Cassandra http:/incubator

9、.apache.org/cassandra/ Voldemort http:/project- 主创人员:冷昊人人网UGC团队 http:/Guideline人人网架构发展NuclearRoseRose是什么Rose 人人网释出的开源Web开放框架(Java) 主创:王志亮人人网架构组REST式Web开发 基于Spring技术 支持服务端portalRose的应用100%覆盖人人网Web网站 首页、个人主页 状态、日志、分享 公共主页 开放平台Rose的发展人人网支持 全线使用 不断更新 稳定发布开源路线 Wiki 电子书Rose开发示例资源 假设有2个只读资源 GET /blog/25137

10、5230/459764084 o这是一篇日志的URL o251375230是作者的ID o459764084是该日志的ID GET /blog/251375230 o这是某个人的日志的URL o251375230是作者的IDRose开发示例控制器骨架package com.renren.blog.controllers.blog;ReqMapping(“userId:0-9+“)public class BlogController Getpublic String list(Param(“userId“) long userId) return “blog-list“;Get(“entryI

11、d:0-9+“)public String show(Param(“userId“) long userId,Param(“entryId“) long entryId) return “blog-show“;Rose开发示例视图文件骨架 根存放地址:webapp / views BlogController视图地址:webapp / views / blog oblog-list.jsp oblog-show.vmRose开发示例model: 控制器视图 AutowiredBlogService blogService;Getpublic String list(Invocation inv

12、, Param(“userId“) long userId) List entries = blogService.findUserEntries(userId);inv.addModel(“entries“, entries);return “blog-list“; Rose开发示例使Autowired工作 实现步骤 o创建com.renren.blog.service.BlogService及其实现 o在WEB-INF下创建spring配置文件:applicationContext- blog.xml o把BlogService实现配置到该文件中 oBlogController将自动通过类

13、型找到BlogService实例并注入 (dependecy injection) autowired机制 o在纯粹spring中默认是关闭的 o在rose下默认是打开的,而且无法关闭Rose开发示例部署 在sourceFolder/META-INF/目录下创建rose.properties,写上 rose=controllers,messages,applicationContext,dao jar包发布,确认rose.properties存在于目标jar的META-INF下 web.xml配置roseFilterroseFilternet.paoding.rose.RoseFilterro

14、seFilter/*REQUESTFORWARDINCLUDE ./start.shRose其他特性 可扩展、可订制 o参数解析器 o参数验证器 o拦截器 o统一错误处理器 flash:在重定向前后传递信息 简单、可层级化的国际化支持 rose重量级插件:服务端portal技术 调试工具:/rose-info/jar、/rose-info/mapping等 jade项目集成:annotation式的DAORose - Statement开源化:使用Apache License, Version 2.0; 通用化:不做只适合某个公司假设的事情; 安全:不含法律、道德、业内所不允许行为的代码 调试工具默认关闭; 稳定发布:在人人网经受每日数亿访问冲击,稳定发布; 支持:提供丰富的wiki、电子书(2010 Q2-Q3)公共主页: http:/ You!

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 研究报告 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号