大型网站技术架构--网站的可扩展性架构(转)

疯子加天才 疯子加天才     2022-08-29     409

关键词:

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格式。

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

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

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

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

 

大型网站技术架构--大型网站架构演化(转)

...了有一本书,就应该有所收获,有所总结,最近把《大型网站技术架构》一书给看完了,给人的印象实在深刻,再加上之前也搞过书本上讲的反向代理和负载均衡以及session独立存储和缓存,因此书本看起来还是挺通俗易懂的,... 查看详情

大型网站架构系列:电商网站架构案例

转自itfly8:大型网站架构系列:电商网站架构案例(1)大型网站架构是一个系列文档,欢迎大家关注。本次分享主题:电商网站架构案例。从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型。除具... 查看详情

大型网站架构系列:电商网站架构案例

大型网站架构是一个系列文档,欢迎大家关注。本次分享主题:电商网站架构案例。从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型。除具备功能需求外,还具备一定的高性能,高可用,可伸... 查看详情

大型网站架构系列:电商网站架构案例

大型网站架构是一个系列文档,欢迎大家关注。本次分享主题:电商网站架构案例。从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型。除具备功能需求外,还具备一定的高性能,高可用,可伸... 查看详情

《大型网站技术架构》--第七章:网站的可扩展架构

扩展性:在对现有系统影响最小的情况下,系统功能可持续扩展和提升的能力。表现在系统基础设施稳定不需要经常变更,应用间较少依赖和耦合,对需求变更可以敏捷响应。它是系统架构设计层面的开闭原则,架构设计考虑未... 查看详情

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

此篇已收录至《大型网站技术架构》读书笔记系列目录贴,点击访问该目录可获取更多内容。一、可伸缩与可扩展—傻傻分不清楚  上篇笔记我们学习了可伸缩架构,但在实际场合中,包括许多架构师也常常混淆可伸缩和可扩... 查看详情

大型网站技术架构--网站高可用架构(转)

  网站的可用性(Avaliability)描述网站可有效访问的特性。1、网站可用性的度量与考核     网站不可用时间(故障时间)=故障修复时间点-故障发现(报告)时间点     网站年度不可用... 查看详情

大型网站技术架构-入门梳理

罗列了大型网站架构涉及到的概念,附上了简单说明前言本文是对《大型网站架构设计》(李智慧著)一书的梳理,类似文字版的“思维导图”全文主要围绕“性能,可用性,伸缩性,扩展性,安全”这五个要素性能,可用性,伸... 查看详情

大型网站技术架构--架构核心要素(转)

  http://blog.csdn.net/chaofanwei/article/details/27046795 所谓架构,一种通俗的说法就是“最高层次的规划,难以改变的决定”,这些规划和决定奠定了事物未来发展的方向和最终的蓝图。      而软... 查看详情

大型网站技术架构--网站的伸缩性架构(转)

 网站系统的伸缩性架构最重要的技术手段就是使用服务器集群功能,通过不断地向集群中添加服务器来增强整个集群的处理能力。“伸”即网站的规模和服务器的规模总是在不断扩大。1、网站架构的伸缩性设计网站的... 查看详情

大型网站技术架构:核心原理与案例分析阅读笔记六

大型网站核心架构要素之可扩展性   扩展性是指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。它是系统架构设计层面的“开闭原则”。伸缩性是指系统能够通过增加(减少)自身资源规模的方式增强... 查看详情

大型网站技术架构--网站的高性能架构(转)

http://blog.csdn.net/chaofanwei/article/details/27168603 网站性能是客观的指标,可以具体体现到响应时间、吞吐量、并发数、性能计数器等技术指标。1、性能测试指标1.1响应时间     指应用执行一个操作需要的时间,... 查看详情

《大型网站技术架构》核心原理与案例分析

内容简介  本书通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计案例,为读者呈现一幅包括技术选型、架构设计、性能优化、Web安全... 查看详情

mysql在大型网站的应用架构演变

...述在网站的不同的并发访问量级下,Mysql架构的演变可扩展性架构的可扩展性往往和并发是息息相关,没有并发的增长,也就没有必要做高可扩展性的架构,这里对可扩展性进行简单介绍一下,常用的扩展手段... 查看详情

《大型网站技术架构》--第三章:大型网站核心架构要素

软件架构需要关注以下部分:1.性能;2.可用性;3.伸缩性;4.扩展性;5.安全性一.性能以用户为中心,提供快速的网页访问体验。主要参数有较短的响应时间,较大的并发处理能力,较高的吞吐量,稳定的性能参数。可分为前端... 查看详情

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

此篇已收录至《大型网站技术架构》读书笔记系列目录贴,点击访问该目录可获取更多内容。一、网站应用攻击与防御二、信息加密技术与密钥安全三、信息过滤与反垃圾四、电子商务风险控制五、学习总结  转眼之间,《大... 查看详情

阅读《大型网站技术架构》第三章心得

  今天阅读了《大型网站技术架构》的第三章,这一章主要讲解了大型网站核心架构要素,并且概括的讲解了相应的实现方法。  软件架构除了系统功能需求外,还需要关注性能、可用性、伸缩性、扩展性、安全性... 查看详情

《大型网站技术架构:核心原理与案例分析》笔记03

《大型网站技术架构:核心原理与案例分析》笔记011.大型网站核心架构要素。  架构:“最高层次的规划,难以改变的决定。”从这个角度而言,人生规划也是一种架构。选什么学校、学什么专业、进什么公司、找什么对象... 查看详情