『大型网站技术架构:核心原理与案例分析』(五)
2015-04-16 19:42
597 查看
扩展性和伸缩性:
扩展性(Extensibility): 指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。目标是当系统新增功能时,不需要对现有系统的结构和代码进行修改。
伸缩性(Scalability):指系统能够通过增加/减少自身资源规模的方式增强/减少自己计算处理事务的能力。目标是利用集群的方式增加服务器数量,提高系统的整体事务吞吐能力,实现线性伸缩性。
一、构建可扩展的网站架构
终极目标:系统间低耦合。如何分解系统的各个模块、如何定义各个模块接口、如何复用组合不同的模块构造一个完整的系统。
核心思想:模块化,并在此基础上降低模块间耦合性,提高模块复用性。
二、利用分布式消息队列降低系统耦合性
分布式消息队列通过消息对象分解系统耦合性,不同子系统处理同一个消息。
事件驱动架构
定义:事件驱动架构(Event Driven Architecture)通过在低耦合的模块之间传输事件消息,以保持模块的松散耦合,并借助事件消息的通信完成模块间合作。
典型的EDA架构比如生产者消费者模式。利用分布式消息队列的发布-订阅模式工作。生产者只需生产消息到队列,消费者从队列获取消息进行处理。新增业务,只要对某类消息感兴趣,即可订阅该消息,对原有系统和业务没有任何影响。
三、利用分布式服务打造可复用的业务平台
分布式服务通过接口分解系统耦合性,不同子系统通过相同的接口描述进行服务调用。
巨无霸系统带来的问题:
编译、部署困难
代码分支管理困难:多个团队共同维护一份代码。
数据库连接容易耗尽:数据库连接数与应用数量成正比。
新增业务困难:老人不敢碰,新人不能接。
解决方法:拆分、模块独立部署
纵向拆分:将大应用拆分为多个小应用。
横向拆分:将复用业务拆分出来,独立部署为分布式服务,新增业务只需调用这些分布式服务,不需要依赖具体的模块代码。
Web Service与企业级分布式服务
Web Service: 服务提供者通过WSDL描述服务(接口),客户端通过WSDL生成客户端调用代码,通过SOAP协议与服务提供者通信,传输层协议可以是HTTP、SMTP、TCP等。
缺点:
臃肿的注册与发现机制
低效的XML序列化手段
开销相对较高的HTTP远程通信
复杂的部署与维护手段
大型网站分布式服务的需求
服务注册与发现
负载均衡:支持服务请求者使用可配置的负载均衡算法访问服务。
失效转移
高效的远程通信
整合异构系统
对应用最小侵入:适应服务架构的进化和反复(分布式或集中式部署)。
版本管理:支持服务接口的多版本。
实时监控
分布式服务框架设计
Thrift(远程服务调用框架):Facebook用它管理其分布式服务(注册、发现和调用),但是未开源基于Thrift的分布式服务框架。
Dubbo:阿里开源的分布式服务框架,较为成熟。
四、可扩展的数据结构
NoSQL: 宽列存储模型、ColumnFamily(列族)设计、面向列族的稀疏矩阵存储格式
五、利用开放平台建设网站生态圈
开放平台架构:
API接口:RESTful、Web Service、RPC等。
协议转换:将API输入转成内部服务可识别的形式,将内部服务返回值封装成API格式。
安全:身份识别、权限控制。
审计:监控、计费。
路由:将开放平台访问路由映射到具体的内部服务。
流程:将一组离散的服务组织成一个上下文相关的新服务,隐藏服务细节,提供统一接口。
扩展性(Extensibility): 指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。目标是当系统新增功能时,不需要对现有系统的结构和代码进行修改。
伸缩性(Scalability):指系统能够通过增加/减少自身资源规模的方式增强/减少自己计算处理事务的能力。目标是利用集群的方式增加服务器数量,提高系统的整体事务吞吐能力,实现线性伸缩性。
一、构建可扩展的网站架构
终极目标:系统间低耦合。如何分解系统的各个模块、如何定义各个模块接口、如何复用组合不同的模块构造一个完整的系统。
核心思想:模块化,并在此基础上降低模块间耦合性,提高模块复用性。
二、利用分布式消息队列降低系统耦合性
分布式消息队列通过消息对象分解系统耦合性,不同子系统处理同一个消息。
事件驱动架构
定义:事件驱动架构(Event Driven Architecture)通过在低耦合的模块之间传输事件消息,以保持模块的松散耦合,并借助事件消息的通信完成模块间合作。
典型的EDA架构比如生产者消费者模式。利用分布式消息队列的发布-订阅模式工作。生产者只需生产消息到队列,消费者从队列获取消息进行处理。新增业务,只要对某类消息感兴趣,即可订阅该消息,对原有系统和业务没有任何影响。
三、利用分布式服务打造可复用的业务平台
分布式服务通过接口分解系统耦合性,不同子系统通过相同的接口描述进行服务调用。
巨无霸系统带来的问题:
编译、部署困难
代码分支管理困难:多个团队共同维护一份代码。
数据库连接容易耗尽:数据库连接数与应用数量成正比。
新增业务困难:老人不敢碰,新人不能接。
解决方法:拆分、模块独立部署
纵向拆分:将大应用拆分为多个小应用。
横向拆分:将复用业务拆分出来,独立部署为分布式服务,新增业务只需调用这些分布式服务,不需要依赖具体的模块代码。
Web Service与企业级分布式服务
Web Service: 服务提供者通过WSDL描述服务(接口),客户端通过WSDL生成客户端调用代码,通过SOAP协议与服务提供者通信,传输层协议可以是HTTP、SMTP、TCP等。
缺点:
臃肿的注册与发现机制
低效的XML序列化手段
开销相对较高的HTTP远程通信
复杂的部署与维护手段
大型网站分布式服务的需求
服务注册与发现
负载均衡:支持服务请求者使用可配置的负载均衡算法访问服务。
失效转移
高效的远程通信
整合异构系统
对应用最小侵入:适应服务架构的进化和反复(分布式或集中式部署)。
版本管理:支持服务接口的多版本。
实时监控
分布式服务框架设计
Thrift(远程服务调用框架):Facebook用它管理其分布式服务(注册、发现和调用),但是未开源基于Thrift的分布式服务框架。
Dubbo:阿里开源的分布式服务框架,较为成熟。
四、可扩展的数据结构
NoSQL: 宽列存储模型、ColumnFamily(列族)设计、面向列族的稀疏矩阵存储格式
五、利用开放平台建设网站生态圈
开放平台架构:
API接口:RESTful、Web Service、RPC等。
协议转换:将API输入转成内部服务可识别的形式,将内部服务返回值封装成API格式。
安全:身份识别、权限控制。
审计:监控、计费。
路由:将开放平台访问路由映射到具体的内部服务。
流程:将一组离散的服务组织成一个上下文相关的新服务,隐藏服务细节,提供统一接口。
相关文章推荐
- 学习笔记5:《大型网站技术架构 核心原理与案例分析》之 瞬时响应:网站的高性能架构
- 大型网站技术架构核心原理与案例分析--第二、三章(总结待续)
- 大型网站技术架构:核心原理与案例分析
- 大型网站技术架构+核心原理与案例分析+李智慧
- 大型网站技术架构:核心原理与案例分析—第七章:随需应变:网站的可扩展架构
- 大型网站技术架构的核心原理与案例分析
- 学习笔记2:《大型网站技术架构 核心原理与案例分析》之 大型网站架构演化
- 大型网站技术架构:核心原理与案例分析
- 『大型网站技术架构:核心原理与案例分析』(一)
- [笔记] 大型网站技术架构——核心原理与案例分析 [六]
- 分布式计算,大型网站技术架构:核心原理与案例分析
- 大型网站技术架构-核心原理与案例分析-阅读笔记6
- 大型网站技术架构:核心原理与案例分析—第八章:固若金汤:网站的安全架构
- 大型网站技术架构:核心原理与案例分析阅读笔记之一
- 把书读薄:大型网站技术架构-核心原理与案例分析(第一篇 概述)
- 把书读薄:大型网站技术架构-核心原理与案例分析(第二篇 架构)
- 分布式计算,大型网站技术架构:核心原理与案例分析
- 《大型网站技术架构--核心原理与案例分析》学有所得
- 学习笔记1:《大型网站技术架构 核心原理与案例分析》之 大型网站软件系统的特点
- 【转】分布式环境下5种session处理策略(大型网站技术架构:核心原理与案例分析 里面的方案)