大型互联网架构基础概述学习

2017-07-12  本文已影响0人  书海拾貝
以下内容主要摘自Jimmy Huang《大型互联网架构概述

大型互联网架构的特点,依旧遵循着“分而治之”的理念。下图是目前大型互联网架构常见的逻辑架构:
传统大型互联网逻辑架构图

互联网架构的主要目标,是满足以下非功能的需求:

基于逻辑架构图,对整个调用过程的简要分析如下:
1.DNS

2.CDN
CDN(Content Delivery Network,内容分发网络)部署在网络提供商的机房里面。在用户请求网站服务时,可以从距离自己最近的网络提供商获取数据。比如视频网站和内容网站的热点内容。

如果需要自己搭建CDN系统,有3种主流方案可以选择:

3.LB
LB(Load Balance,负载均衡)就是将负载(用户的请求)根据某些策略,将负载分摊给多个操作单元执行。该技术可以提供服务器的响应速度以及利用效率,避免出现单点失效。
这里回顾下前面介绍的两个小节,其实本质上把数据分类(根据数据更新频率,分为动态文件,静态文件),并把数据放在离距离用户最近的地方。另外一点就是,在DNS和CDN具体实现时,也是大量使用了负载均衡技术。
常见的负载均衡算法由:RR(Round Robin,轮询),WRR(Weighted RR,加权轮询),Random(随机),LC(Least Connection,最少连接),SH(Source Hash,源址哈希)
在常见的互联网架构中,通常使用软件负载:

4.WEB APP

5.SOA
网站架构的演进之路,从单一应用架构到垂直应用架构,分布式服务架构以及流动计算架构,越来越体现SOA框架的重要性。这里以优秀的开源实现dubbo为例,简单介绍下。
dubbo的功能介绍见服务治理过程,对dubbo架构详细介绍的有如何学习dubbo源代码dubbo源代码阅读
简而言之,就是使用了spring的schema的扩展机制,进而支持自定义dubbo标签;通过类似serviceload机制配置多个可选服务。通过jdk动态代理和Javassist,使服务调用透明化。结合ZooKeeper实现高可用元数据管理

6.MQ
MQ(Message Queue,消息队列)使服务调用异步化,可以消除并发访问洪峰,提升网站响应速度。 在MQ实现中,可以参考Kafka/Metaq设计思想学习笔记

7.CACHE
Cache就是将数据放到距离计算最近的地方,用来加快处理速度。通常对一定时间内的热点数据进行缓存。 在使用缓存时,需要注意缓存预热和缓存穿透问题。
一般海量数据的缓存系统不会使用Java来实现,是因为Java有额外的对象大小开销以及GC压力。所以一般是用ANSI C来实现。目前用的比较火的是Redis,更多介绍请查看Redis资料汇总

**8.Storage **
在出现NOSQL之前,一统天下的是MySQL分库分表技术。结合类似TDDL等SQL agent技术,也能够执行类似join的操作。后来,就像忽如一夜春风来,出现了很多NOSQL/分布式存储系统产品。
分布式存储系统是分布式系统中最复杂的一部分,相比较SOA,CACHE等框架,它需要解决的问题更加复杂。常见的问题如下:

延伸理解可阅读《大规模分布式存储系统原理解析与架构实战》和google的两篇存储论文。

其它

上一篇 下一篇

猜你喜欢

热点阅读