美文网首页
分布式概要

分布式概要

作者: snakeSkin | 来源:发表于2017-03-19 22:24 被阅读37次

    分层:

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

    分割:

    分割(纵向拆分):

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

    分布式:

    目的:

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

    难度:

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

    常用的分布式设计:

    1.分布式应用和服务:

    分布式应用和服务:

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

    分布式静态资源:

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

    分布式数据和存储:

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

    分布式计算:

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

    其他:

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

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

    相关文章

      网友评论

          本文标题:分布式概要

          本文链接:https://www.haomeiwen.com/subject/dwjvnttx.html