分布式概要

2017-03-19  本文已影响37人  snakeSkin

分层:

在经历了分层(水平切分:应用层,服务层,数据层)后,系统的并发度仍然不断升高,压力不断持续增大,通过不断升级机器的性能已经无法满足系统增大的压力时,就需要考虑

分割:

分割(纵向拆分):

即将不同的功能和服务分割开来,包装成高内聚低耦合的模块单元,一方面有助于软件开发和维护;另一方面,便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力。
大型网站分割的粒度可能会很小。比如在应用层,将不同业务进行分割,如购物,论坛,搜索,广告分割成为不同的应用,由独立团队负责并部署在不同机器上,在同一个应用内部,如果规模庞大业务复杂,会继续执行分割,同样在服务层也能根据服务分割成合适模块。

分布式:

目的:

分层和分割的目的是为了切分后的模块便于分布式部署(将不同模块部署在不同的服务器上,通过远程调用协同工作)。分布式意味着可以使用更多的计算机完成同样的功能,计算机越多,CPU,内存,存储资源也就越多,能够处理的并发访问和数据量就越大,进而能够为更多的用户提供服务。

难度:

分布式意味着1.服务调用需要通过网络,这会对性能造成比较严重的影响。2.其次,服务器越多,服务器宕机的概率也会提高,一台服务器宕机造成的服务可能会影响很多应用不能访问,使网站可用性降低。3.另外,数据在分布式环境中保持数据一致性也非常困难,分布式事务也难以保证,这对网站业务正确性和业务流程可能造成很大影响 。4.分布式还导致网站依赖错综复杂,开发管理维护困难。因此分布式设计要量力而行,切莫为了分布式而分布式。

常用的分布式设计:

1.分布式应用和服务:

分布式应用和服务:

将分层和分割后的应用和服务模块分布式部署,除了可以改善网站性能和并发性,加快开发和发布速度,减少数据库连接资源消耗外;还可以使不同应用复用共同的服务,便于业务功能扩展。

分布式静态资源:

网站的静态资源如JS,CSS,Logo图片等资源独立分布式部署,并采用独立的域名,即人们常说的动静分离。静态资源分布式部署可以减轻应用服务器的负载压力;通过使用独立域名加快浏览器并发加速的速度;由负责用户体验的团队进行开发维护有利于网站分工合作,使不同技术工种术业有专攻。

分布式数据和存储:

大型网站需要处理以P为单位的海量数据,单台计算机无法提供如此大的存储空间,这些数据需要分布式存储,除了对传统的关系型数据库进行分布式存储外,为网站应运而生的各种NoSql产品几乎都是分布式的。

分布式计算:

严格说来,应用,服务,实时数据处理都是计算,网站除了要处理这些在线业务,还有很大一部分用户没有直观感受的后台业务要处理,包括搜索引擎的索引构建,数据仓库的数据分析统计等。这些业务的计算规模非常庞大,目前网站普遍使用Hadoop,MapReduce分布式计算框架进行此类批处理计算,其特点是移动计算而不是移动数据,将计算程序分发到数据所在的位置以加速计算分布式计算。

其他:

分布式配置(如可以支持网站线上服务器配置实时更新的分布式配置)。
分布式锁(分布式环境下实现并发和协同的分布式锁)。
分布式文件系统(支持云存储的分布式文件系统)。

本文参考:大型网站技术架构-核心原理与案例分析 (李慧智)

上一篇下一篇

猜你喜欢

热点阅读