资源描述:
《人人网技术架构的演进》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、人人网技术架构介绍人人网·黄晶Guideline人人网架构发展NuclearRose架构发展2006Let’sGetitstartedResinProMySQLInnoDB主从结构单Storage+Squid架构发展2007突飞猛进LVSResinWeb集群大量使用Memcached中间层,基于ICEMySQL集群,垂直分区简单分布式StorageLucence搜索架构发展2008继续突破开放API,SOAMySQL集群,水平分区加强监控和安全DFS,龙存架构发展2009~2010稳健发展紧耦合=>松耦合,SOAGrace
2、fuldegradationMySQL=>NoSQL多数据中心,可扩展,灾备关注TCOGuideline人人网架构发展NuclearRoseNuclear–功能分布式key-value存储数据自动复制到多个节点数据自动分区到不同节点存储容量无限扩展CAP-CANuclear-CAP可用性永远可写入(HintedHandoff)不存在单点风险Nuclear-CAP多一致性选项DISCARDMINQUOROMDISCARDUOROMALL提供最终一致性EventuallyConsistentNuclear-OverviewNu
3、clear-原理构建NIONettyProtocolBuffersSpring富数据模型Key=>List弱结构化查询Nuclear-原理分区-HashRingABCNodeA0~6148914691236517205NodeB6148914691236517205~12297829382473034410NodeC12297829382473034410~18446744073709551616Nuclear-原理增加节点NodeN0~3074457345618258602NodeA3074457345618258602
4、~6148914691236517205NodeB6148914691236517205~12297829382473034410NodeC12297829382473034410~18446744073709551616Nuclear-原理增加节点A{[c,a],[b,c],[a,b]}B{[a,b],[c,a],[b,c]}C{[b,c],[a,b],[c,a]}N{[c,n],[b,c],[a,b]}A{[n,a],[c,n],[b,c]}B{[a,b],[n,a],[c,n]}C{[b,c],[a,b],[n,a]
5、}A[a,b]=>NB[b,c]=>NC[c,n]=>NNuclear-原理替换节点A{[d,a],[c,d],[b,c]}B{[a,b],[d,a],[c,d]}C{[b,c],[a,b],[d,a]}D{[c,d],[b,c],[a,b]}N{[d,n],[c,d],[b,c]}B{[n,b],[d,n],[c,d]}C{[b,c],[n,b],[d,n]}D{[c,d],[b,c],[n,b]}B[d,a]=>NC[b,c]=>ND[c,d]=>NNuclear-原理删除节点A{[d,a],[c,d],[b,c]}B
6、{[a,b],[d,a],[c,d]}C{[b,c],[a,b],[d,a]}D{[c,d],[b,c],[a,b]}B{[d,b],[c,d],[b,c]}C{[b,c],[d,b],[c,d]}D{[c,d],[b,c],[d,b]}C[b,c]=>BD[c,d]=>CB[d,a]=>DNuclear-原理节点状态迁移图Nuclear-原理Consistency和NWRW+R>NW=2R=2N=3系统保障最终的一致性MerkleTreeNuclear-应用系统组件普通节点(Node)接收Client请求提供数据存储中心
7、节点(Seed)维护整个NuclearInstance的拓扑关系健康检测客户端(NuclearClient)提供CRUDAPINuclear-应用NuclearInstanceNodeANodeBNodeZ……SeedClientRequestNuclear-应用节点变更增加shnode.shnewA删除deletenodeA(manage.sh)替换replaceANuclear-应用性能单节点处理最高2.5Wreq/s典型应用环境:4NodeMysqlN=3W=2R=2100ClientWriteRequest单个N
8、ode15862req/s平均单次请求耗时5ms99.51%请求耗时<50msNuclear-应用性能Nuclear-应用NuclearClientAPIGet@paramkey@paramdataID@paramconsistencyLevelList@paramk