http://blog.csdn.net/chaofanwei/article/details/29191073

扩展性是指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。

设计网站可扩展架构的核心思想是模块化,并在此基础上,降低模块间的耦合性,提供模块的复用性。模块通过分布式部署,独立的模块部署在独立的服务器上(集群)从物理上分离模块之间的耦合关系。

模块分布式部署以后具体聚合方式主要有分布式消息队列和分布式服务

1、利用分布式消息队列降低系统耦合性

如果模块之间不存在直接调用,那么新增模块或者修改模块对其他模块影响最小,这样系统的可扩展性无疑更好一些。

        事件驱动框架:通过在低耦合的模块之间传输事件消息,以保持模块的松散耦合,并借助事件消息的通信完成模块间合作,典型的架构就是生产者消费者模式。在大型网站架构中,具体实现手段很多,最常用的就是分布式消息队列,如下图所示:

消息队列利用发布-订阅模式工作,消息发送者发布消息,一个或者多个消息接收者订阅消息。

由于消息发送者不需要等待消息接受者处理数据就可以返回,系统具有更好的响应延迟;同时,在网站访问高峰,消息可以暂时存储在消息队列中等待处理,减轻数据库等后端存储的负载压力。

目前开源的和商业的分布式消息队列产品有很多,比较著名的有Apache ActiveMQ等,如下是分布式消息队列的架构原理:

2、利用分布式服务打造可复用的业务平台

使用分布式服务是降低系统耦合性的另一个重要手段。如果说分布式消息队列通过消息对象分解系统耦合性,不同子系统处理同一个消息;那么分布式服务则通过接口分解系统耦合性,不同子系统通过相同的接口描述进行服务调用。

大型网站分布式服务的需求与特点:

  1. 负载均衡
  2. 失效转移
  3. 高效的远程通信
  4. 整合异构系统
  5. 对应用最小入侵
  6. 版本管理
  7. 实时监控

目前国内有较多成功实施案例的开源分布式服务框架是阿里巴巴的Dubbo,下图是Dubbo的架构原理:

服务消费程序通过服务接口使用服务,而服务接口通过代理加载具体服务,具体服务可以是本地的代码模块,也可以是远程的服务,因此对应用较小入侵;应用程序需要调用服务接口,服务框架根据配置自动调用本地或远程实现。

服务框架客户端模块通过服务注册中心加载服务提供者列表(服务提供者启动后主动向服务注册中心注册自己可提供的服务接口列表),查找需要的服务接口,并根据配置的负载均衡策略将服务调用请求发送到某台服务提供者服务器。如果服务调用失败,客户端模块会自动从服务提供者列表选择一个可提供同样服务的另一台服务器重新请求服务,实现服务的自动失效转移,保证高可用服务。

3、利用开放平台建设网站生态圈

大型网站为了更好的服务自己的用户,开放更多的增值服务,会把网站内部的服务封装成一些调用接口开放出去,共外部的第三方开发者使用,这个提供开放接口的平台被称作开放平台。

开放平台是网站内部和外部交互的接口,外部需要面对众多的第三方开发者,内部需要面对网站内诸多的业务服务。虽然每个网站的业务场景和需求都不相同,但开发平台的架构设计却大同小异,如下图所示:

API接口:是开发平台暴露给开发者使用的一组API,其形式可以是RESTfull,WebService,RPC等各种形式。

协议转换:将各种API输入转换成内部服务可以识别的形式,并将内部服务的返回封装成API格式。

安全:除了一般应用需要的身份识别、权限控制等安全手段,开放平台还需要分级的访问带宽限制,以保证资源被公平合理的使用。

审计:记录第三方应用的访问情况并进行监控、计费等。

路由:将开放平台的各种访问路由映射到具体的内部的服务。

流程:将一组离散的服务组织成一个上下文相关的新服务,隐藏服务细节,提供统一接口供开发者调用。

转载于:https://www.cnblogs.com/telwanggs/p/6782624.html

大型网站技术架构(七)--网站的可扩展性架构(转)相关推荐

  1. 阅读《大型网站技术架构:核心原理与案例分析》第五、六、七章

    阅读<大型网站技术架构:核心原理与案例分析>第五.六.七章,结合我们的系统,分析如何增加相应的功能,提高系统的可用性和易用性. 这三章主要讲述的是网站的可用性.伸缩性和可扩展性. 高可用架 ...

  2. 读书笔记 之《软件架构设计: 大型网站技术架构与业务架构融合之道》

    大家好呀,我是小菜~ 帅哥美女,知道你们时间宝贵,那么就由小菜为你读好一本书,读一本好书,取其精华,与你共享~! 本文主要分享 <软件架构设计:大型网站技术架构与业务架构融合之道> 如有需 ...

  3. 大型网站技术架构笔记(7-8章)随需应变:网站的可扩展架构; 固若金汤:网站的安全架构

    ​第七章 随需应变:网站的可扩展架构 扩展性:只对现有系统形象最小的情况下,系统的可持续扩展或提升能力. 伸缩性:指系统通过增加(减少)自身资源规模的方式,增加(减少)系统计算处理事务的能力. 7.1 ...

  4. 小白入门:大型网站技术架构负载均衡技术介绍及学习资源推荐

    十年间,负载均衡的前沿技术层出不穷,令用户眼花缭乱.经常在技术网站.文档中出现的"四层负载均衡"."七层负载均衡"字眼有什么含义?有什么区别?对客户网络有哪些不 ...

  5. 读书笔记-大型网站技术架构(核心原理与案例分析)

    一.大型网站架构演化 1.1 大型网站软件系统的特点 高并发.大流量:高可用:海量数据:用户分布广泛,网络情况复杂:安全环境恶劣:需求快速变更,发布频繁:渐进式发展: 1.2 大型网站架构演化发展历程 ...

  6. 各种大型网站技术架构

    引言近段时间以来,通过接触有关海量数据处理和搜索引擎的诸多技术,常常见识到不少精妙绝伦的架构图.除了每每感叹于每幅图表面上的绘制的精细之外,更为架构图背后所隐藏的设计思想所叹服.个人这两天一直在搜集各 ...

  7. 大型网站技术架构:摘要与读书笔记

    花了几个晚上看完了<大型网站技术架构>(https://book.douban.com/subject/25723064/)这本书,个人感觉这本书的广度还行,深度还有些欠缺(毕竟只有200 ...

  8. 《大型网站技术架构》读书笔记之八:固若金汤之网站的安全性架构

    一.网站应用攻击与防御 二.信息加密技术与密钥安全 三.信息过滤与反垃圾 四.电子商务风险控制 五.学习总结 转眼之间,<大型网站技术架构>的读书笔记到此就结束了.最近时间非常紧,因此本篇 ...

  9. 《大型网站技术架构》读书笔记之七:随需应变之网站的可扩展架构

    来源:http://www.cnblogs.com/edisonchou/p/3862389.html 此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. ...

  10. 大型网站技术架构03

    永无止境:网站的伸缩性架构 1. 所谓网站的伸缩性是指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务能力. 2. 网站架构的伸缩性设计: 1). 不同功能进行物理 ...

最新文章

  1. CSS元素的基本应用(附加京东面试题)
  2. Spring事务支持:利用继承简化配置
  3. 关于this的指向问题
  4. JavaScript的一些实用技巧收藏
  5. 四旋翼姿态解算——基础理论及推导
  6. 数据分析的必备材料:学完可以解决90%以上的数据分析问题
  7. abaqus pythonreader_【技术邻】Abaqus里应用Python的一些技巧
  8. seo 伪原创_如何判断外包的seo文章是否是抄袭或伪原创?
  9. linux里的进程简介
  10. 2018年,你想从InfoQ获取什么内容?丨Q言Q语
  11. html特殊文字符号
  12. 在window7 64位下Oracle 10g 数据库中PLSQL Developer配置和使用
  13. 使用 jQuery 修改 css 中带有 !important 的样式属性
  14. 二叉树学习之二叉树的构建及操作
  15. 视频教程-OCJP认证考试复习课-其他
  16. qq实验报告c语言,C语言实现QQ密码大盗(没试验过,下回验证一下)
  17. 李群和李代数以及李代数求导(扰动模型)
  18. 云文件共享服务器,云文件共享服务器
  19. 三分钟读懂新一代人工智能——ChatGPT
  20. 关于java.lang.IllegalArgumentException: DrawerLayout must be measured with MeasureSpec.EXACTLY异常处理

热门文章

  1. (34)FPGA分频设计-奇数分频(第7天)
  2. oracle强制走索引_实验验证:Oracle聚簇因子对索引使用的影响
  3. 18. GD32F103C8T6入门教程-adc-使用教程5-定时器TIM2更新事件触发adc0
  4. 17. QTreeView 简单用法
  5. 【蓝桥杯单片机】NE555在CT107D上的使用
  6. 【蓝桥杯单片机】矩阵键盘和独立键盘新解(更稳定更高复用性)
  7. python算法应用(八)——优化
  8. 用Openswan组建Linux IPSec ---第一部分
  9. Linux中断(interrupt)子系统之一:中断系统基本原理
  10. 信号量与线程互斥锁的区别