分布式架构-设计模式

本文是 《大型网站技术架构:核心原理与案例分析》的学习和记录css

// 前言sql

若是是看过概述了,那么主要须要看异步、安全和自动化部分缓存

模式是可复用的解决方案安全

分布式架构总共用到 分层、分割、分布式、集群、缓存、异步、备份、自动化和安全几种模式服务器

一、分层网络

分层是将服务器的处理逻辑分红多层,如你们熟知的将服务器分红控制器,服务层和dao数据层多线程

二、分割架构

分割是将能够互相解耦的业务分红不一样的子系统去操做,好比将购物,付款,订单,推广,客服等分红不一样的子系统去由不一样的团队维护。并发

三、分布式负载均衡

分布式的解释概述里讲过,分布式采用增长服务器,分解业务过程的方法去提升性能,可是有一个缺点就是业务之间交互都须要以网络的形式,多服务器网络交互确定是比单服务器内存交互要慢的多的,另外因为分布式部署虽然互相业务依赖性不强可是某台服务器宕机也可能会致使其余服务器不可用。

分布式主要有分布式应用和服务,分布式静态资源(将图片js,css,logo等部署独立服务器,采用独立域名,减轻应用服务器压力),分布式数据和存储(将数据分布式存放),分布式计算(如搜索引擎,大量数据的分析统计,这些计算规模大,一般使用hadoop或者mapReduce分布式计算框架进行处理和计算),配置实时更新的分布式配置,实现并发和协同的分布式锁和云存储的分布式文件等。

四、集群

分布式是将一个处理逻辑分红多个部分,而集群是将访问比较集中的模块(如首页淘宝首页)集群化,即多个服务器部署相同应用,经过负载均衡去访问。在小的应用中能够部署两台服务器做为集群,这是为了防止一台服务器不可用的状况下系统能够正常运行,提升系统的可用性。

五、缓存

缓存是将经常使用的数据放在获取速度更快的地方,一方面能够提升数据访问速度,另外一方面能够减轻数据访问压力和应用处理压力,常见的有cdn,反向代理,本地缓存,分布式缓存。

六、异步

异步的操做是指在将业务分红多层的过程当中,之间信息交互并不直接交互,而是经过使用生产者-消费者模式去交互,生产者将数据产生好后放置在分部署消息队列中吗,由消费者去取而后执行,两者不直接作信息交互。在多线程开发中,生产者也是在生产数据后将数据存放在共享内存中,由消费者去取。

异步模式有以下好处:

提升可用性:若是消费者宕机了,数据只会堆积在消息队列,生产者能够继续正常运行。

加快响应速度:生产者将数据交给消息队列后不须要等消费者处理完成 就能够将结果返回给用户,用户不须要等待消费者的处理过程所花费的时间。

消除并发高峰:如双十一,准点抢等活动会在某个时间节点访问量忽然增多,若是都交付给服务器处理可能会致使宕机,若是这里将消息存储在消息队列则能够避免宕机。

异步处理须要业务流程的支持,即消费者的处理能保证是对生产者对用户的响应没有影响。

七、备份

主要是数据备份和服务器集群备份,包括数据按期备份,存档保存等冷备份和主从分离的热备份发。

八、自动化

包括

发布自动化:减小人为干预,减小发布过程当中人为故障。

代码管理自动化:使用版本控制工具。

自动化测试:代码提交后自动部署到测试环境,自动化测试根据测试用例对上线的功能进行测试。

自动化安全测试:自动模拟攻击

自动化部署:部署上线

自动化监控:监控线上生产环境

九、安全

主要是隐私信息加密,防止sql注入和xss攻击