1、系统架构图如下:
2、系统各层介绍
以上采用五层的逻辑架构,第一层客户层,第二层前端优化层,第三层应用层,第四层服务层,第五层数据存储层,每层的介绍如下:
1、客户层:支持PC浏览器和手机APP,可以直接通过IP访问,反向代理服务器。
2、前端层:使用DNS负载均衡,CDN本地加速及反向代理服务。
3、应用层:网站应用集群;按照业务进行垂直拆分,比如应用商城,产品服务等。
4、服务层:提供公共服务,比如产品升级服务,搜索服务,账号管理服务等。
5、数据层:支持关系型数据库集群(支持读写分离),NOSQL集群,分布式文件系统集群,及分布式Cache
3、各部分技术介绍
3.1 基础设施技术介绍:
分布式缓存
在高并发环境下,大量的读、写请求涌向数据库,磁盘的处理速度和内存处理显然不在一个数量级,从减轻数据库压力和提高系统响应速度两个角度来考虑,一般都会在数据库之前加一层缓存。由于单台机器的内存资源和承载能力有限,并且如果大量使用本地缓存,也会使相同的数据被不同的节点存储多份,对内存资源造成较大的浪费,因此才催生出分布式缓存。
持久化存储
随着科技的不断发展,越来越多的人参与到互联网中,人们在网络上的活动,如发表心情动态、微博、购物、评论等,这些信息最终被转换为二进制字节的数据存储下来。面对并发访问量的激增和数据几何级的增长,如何存储正在迅速膨胀并且不断积累的数据,以及应对日益增长的用户访问频次,成为亟待解决的问题。
消息系统
在分布式系统中,消息系统应用十分广泛,消息可以作为应用间通信的一种方式,消息被保存在队列中,知道被接收者取出,由于消息发送者不需要同步等待消息接收者的响应,消息的异步接收降低了系统集成的耦合度,提升了分布式系统协作的效率,使得系统能够更快地响应用户,提供更高的吞吐。当系统处理峰值压力时,分布式消息队列还能够作为缓冲,削峰填谷,缓解集群的压力,避免整个系统被压垮。
开源的消息系统有很多,包括Apache的ActiveMQ,Apache的Kafka、RabbitMQ、memcacheQ等。
搜索引擎
这里说的垂直化搜索引擎,与大家所熟知的Google和Baidu等互联网搜索引擎存在着一些差别,垂直搜索引擎主要针对企业内部的自由数据的检索,而不像Google和Baidu等搜索平台,采用网络爬虫对全网数据进行爬取,从而建立索引并提供给用户进行检索、模糊匹配的需求,解决数据库like查询效率低下的问题,又能够解决分布式环境下,由于采用分库分表或者使用NoSQL数据库,导致无法进行多表联合查询或者进行复杂查询的问题。
其它
除了前面所提到的分布式缓存、持久化存储、分布式消息系统、搜索引擎,大型的分布式系统的背后,还依赖于其他支撑系统,还包含实时计算、离线计算、分布式文件系统、日志收集系统、监控系统、数据仓库等,还有CDN系统、负载均衡系统、消息推送系统、自动化运维系统等。
3.2 基础设施技术技术特点
5、开发过程中的新的体会