【转载】数据平台技术架构

随笔转载自: http://www.cnblogs.com/deane163/p/6865911.html

这位兄弟写的,感觉不错,就转载了。

1、系统架构图如下:

 

NoSQL 1

 

 

2、系统各层介绍

 

如上拔取五层的逻辑架构,第一层客户层,第二层前端优化层,第三层应用层,第四层服务层,第五层数据存储层,每层的介绍如下:

1、客户层:襄助PC浏览器和手机APP,可以平素通过IP访问,反向代理服务器。

2、前端层:使用DNS负载均衡,CDN本地加速及反向代理服务。

3、应用层:网站使用集群;按照作业拓展垂直拆分,比如采取超市,产品服务等。

4、服务层:提供公共服务,比如产品升级服务,搜索服务,账号管理服务等。

5、数据层:协理关系型数据库集群(扶助读写分离),NOSQL集群,分布式文件系统集群,及分布式Cache

 

3、各部分技术介绍

 

3.1 基础设备技术介绍:

 

NoSQL 2

 

 

分布式缓存

       
在高并发环境下,大量的读、写请求涌向数据库,磁盘的处理速度和内存处理肯定不在一个数码级,从减轻数据库压力和增强系统响应速度五个角度来考虑,一般都会在数据库在此以前加一层缓存。由于单台机械的内存资源和承载能力有限,并且只要大度行使当地缓存,也会使相同的多寡被不同的节点存储多份,对内存资源造成较大的浪费,由此才催生出分布式缓存。

持久化存储

       
随着科技的持续上扬,越来越多的人涉足到互联网中,人们在网络上的移位,如宣布心绪动态、今日头条、购物、评论等,那多少个音讯最后被转移为二进制字节的多少存储下来。面对并发访问量的增产和多少几何级的增长,怎么样存储正在迅猛膨胀并且不断积聚的数量,以及应对增长的用户访问频次,成为迫切的题材。

音讯系统

       
在分布式系统中,消息系统利用分外普遍,音讯能够看做利用间通信的一种办法,信息被封存在队列中,知道被接收者取出,由于新闻发送者不需要一块等待信息接收者的响应,信息的异步接收降低了系统融为一体的耦合度,提高了分布式系统协作的频率,使得系统可以更快地响应用户,提供更高的吞吐。当系统处理峰值压力时,分布式信息队列仍可以够作为缓冲,削峰填谷,缓解集群的压力,制止一切系统被压垮。

       
开源的音信系统有好多,包括Apache的ActiveMQ,Apache的Kafka、RabbitMQ、memcacheQ等。

寻找引擎

       
 那里说的垂直化搜索引擎,与我们所明白的Google和Baidu等互联网搜索引擎存在着有些异样,垂直搜索引擎首要针对公司中间的随机数据的搜索,而不像Google和Baidu等寻找平台,选取网络爬虫对全网数据举行爬取,从而建立目录并提供给用户展开检索、模糊匹配的需要,解决数据库like查询成效低下的题目,又能够化解分布式环境下,由于应用分库分表或者拔取NoSQL数据库,导致不可能开展多表联合查询或者拓展复杂查询的题材。

其它

       
除了前方所关联的分布式缓存、持久化存储、分布式音讯系统、搜索引擎,大型的分布式系统的骨子里,还凭借于任何支撑序列,还富含实时总计、离线总结、分布式文件系统、日志收集系统、监控连串、数据仓库等,还有CDN系统、负载均衡系统、信息推送系统、自动化运维系统等。

 

3.2 基础设备技术技能特色

NoSQL, 

NoSQL 3

 

 

 

4、开发中的故障案例分析

 

(1)写日记引发的故障:

故障分析:由于日记等级为info或debug,导致爆发的日记卓殊多,磁盘被撑爆。

实例:
在图片服务器的Nginx服务器上,由于日记打印的过多,导致磁盘爆满,最终造成不可以写入数据音信。

釜底抽薪方案: 需要将Nginx的布局音信修改为Error,定时检测磁盘空间是否满,及时扩展硬盘空间。

(2) 高并发访问数据库引发的故障:

故障分析:当SQL的施行效用相当高时,会使得数据库的Load持续进步,影响数据库的习性。

解决方案:尽量扩展表的目录,缩短全表扫描,尝试使用分布式缓存和缓存设备。

(3)高并发情状下,锁引发的故障:

故障分析:由于锁的使用,某个操作,执行时间较长(如远程过程调用),长时间霸占锁,导致程序阻塞,当以此锁被放出时,此外 
          线程得以执行。

釜底抽薪方案:动用锁操作时要小心翼翼,慎之又慎。

(4)缓存应发的故障

故障分析:由于缓存服务器集群的闭馆,导致数据查询的下压力总体都到数据库层面,导致数据库的下压力较大。

化解方案:缓存服务器是当今网站中必要的一有些,我们要像管制其他服务器一样,认真管理缓存服务器。

(5)应用启动不一起引发的故障

故障分析:由于起步应用服务器的不一起,如 Apahce + 汤姆(Tom)cat 应用,服务
Apache先启动,会招致过多的请求到Apache上,导致Tomcat已开行后,过多的伏乞压力到Tomcat上,严重事态下促成汤姆(Tom)cat的垮台。

釜底抽薪方案:要严谨按照指定的依次举办启动应用,避免“姑娘还未曾穿好服装,老鸨就把客人给领进来了”,所以老鸨领客人进来时,要先认可姑娘有没有准备好。

(6)大文件读写独占磁盘引起的故障

故障分析:文件服务器中保存的有大文件和小文件,小文件有几十K 
到广大K,大文件有几十M到无数M,会导致用户下载大文件时,独占磁盘操作,影响小文件的读写操作。

化解方案:将图片服务器小的文书,使用专用的贮存服务器如阿里的分布式文件服务器,大的文本使用分布式文件服务器如HDFS服务器

(7)滥用生产环境滋生的故障

故障分析:开发人士尽量不要对运作条件开展处理

解决方案:将标准库的权限交给运维职员,严禁开发人士对业内数据开展处理。

(8)不正经流程引起的故障

故障分析:应用发表后,引起数据库LOAD快捷攀升,检查用户代码是否有生成,是否缓存给注释掉。如注释掉缓存代码。

缓解方案:代码提交前肯定要对代码举办DIFF相比,确认没有付诸不该提交的代码(如测试注释的代码,正式部署需要使用的)

(9)不佳的编程习惯引起的故障

故障分析:程序在处理一个输入的靶龙时,不肯定输入的对象是不是为空。

缓解方案:要养成好的编码习惯,输入的目标尽量保证不为空,必要时构造空对象。

 

5、开发过程中的心体面会

 

NoSQL 4

 

网站地图xml地图