分布式系统设计

Posted 鲁仕林

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式系统设计相关的知识,希望对你有一定的参考价值。

一、分布式系统基础设施简介

1、分布式协作及配置管理系统ZooKeeper

2、分布式缓存系统

     分布式缓存主要用于高并发环境下,减轻数据库的压力,提高系统的响应速度和并发吞吐。当大量的读、写请求涌向数据库时,磁盘的处理速度与内存显然不在

一个量级,因此,在数据库之前加一层缓存,能够显著提高系统的响应速度,并降低数据库的压力。

3、持久化存储

     常见的分布式系统存储解决方案,包括mysql的分布式扩展、HBase的API及使用场景、Redis的使用等。

4、分布式消息系统

     在分布式系统中,消息作为应用间通信的一种方式。消息可以被保存在队列中,直到被接收者取出,由于消息发送者不需要同步等待消息接收者的响应,消息的异

步接收降低了系统集成的耦合度,提升了分布式系统协作的效率,使得系统能够更快地响应用户,提供更高的吞吐。当系统处理峰值压力时,分布式消息队列还能作为

缓冲,峰值填谷,缓解集群的压力,避免整个系统被压垮。

5、搜索引擎

     垂直化的搜索引擎在分布式系统中是一个非常重要的角色,它既能够满足用户对于全文检索、模糊匹配的需求,解决数据库like查询效率低下的问题,又能够解

决,由于分库分表,或者使用NoSQL数据库,导致无法进行多表关联或者进行复杂查询的问题。

6、CDN系统

7、负载均衡系统

8、运维自动化系统

9、实时计算系统

10、离线计算系统

11、分布式文件系统

12、日志收集系统

13、监控系统

14、数据仓库

二、分布式缓存

  1、分布式Session

   传统的应用服务器,如tomcat、jboss等等,其自身所实现的session管理都是单机的。对于一个大型分布式网站,支持其业务的远远不止一台服务器,而是一个

分布式集群,请求在不同服务器之间跳转。那么,如何保持服务器见的session同步呢?传统网站一般将一部分数据存储在cookie中,来规避分布式环境下session的操作。

这样做的弊端很多,一方面cookie的安全性问题,另一方面cookie存储数据的大小也是有限的。随着移动互联网的发展,很多情况下还得兼顾移动端的session,使用采用

cookie进行session同步的方式的弊端更为凸显,分布式session就是在这种情况下应运而生。

      对于系统可靠性要求较高的用户,可以将session持久化到DB中,这样可以保证宕机是会话不易丢失,但缺点就是系统的整体吞吐将受到很大的影响。另一种解决方案

便是将session统一存储在缓存集群上,如memcache,这样可以保证较高的读、写性能,这一点对于并发量大的系统来说非常重要;从安全性考虑,session毕竟是有有效

期的,使用缓存存储,也便于利用缓存的失效机制。使用缓存的缺点是,一旦缓存重启,里面保存的会话也就丢失了,需要用户重新建立会话。      

三、持久化存储

   

 

四、消息系统

 

五、垂直化搜索引擎

引用自:http://www.cnblogs.com/SmartLee/p/5161630.html

以上是关于分布式系统设计的主要内容,如果未能解决你的问题,请参考以下文章

分布式系统设计应考虑的问题

分布式系统设计系列 -- 基本原理及高可用策略

分布式存储系统设计—— 系统架构

分布式系统如何设计?看Elasticsearch是怎么做的

分布式系统设计

经典分布式系统设计