您的位置:首页 > 运维架构 > 网站架构

『大型网站技术架构:核心原理与案例分析』(五)

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格式。
安全:身份识别、权限控制。
审计:监控、计费。
路由:将开放平台访问路由映射到具体的内部服务。
流程:将一组离散的服务组织成一个上下文相关的新服务,隐藏服务细节,提供统一接口。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐