『大型网站技术架构』(五):可扩展架构
来源:互联网 发布:红色帝王蟹淘宝 编辑:程序博客网 时间:2024/06/05 11:34
『大型网站技术架构』(五):可扩展架构
扩展性和伸缩性:
- 扩展性(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格式。
- 安全:身份识别、权限控制。
- 审计:监控、计费。
- 路由:将开放平台访问路由映射到具体的内部服务。
- 流程:将一组离散的服务组织成一个上下文相关的新服务,隐藏服务细节,提供统一接口。
--EOF--
0 0
- 『大型网站技术架构』(五):可扩展架构
- 『大型网站技术架构』(四):可伸缩架构
- 大型网站技术架构(五)--网站高可用架构
- 大型网站技术架构(五)--网站高可用架构
- 大型网站技术架构(五)网站高可用架构
- 大型网站技术架构(五)--网站高可用架构
- 大型网站技术架构(五)--网站高可用架构
- 《大型网站技术架构》读书笔记之七:随需应变之网站的可扩展架构
- 《大型网站技术架构》读书笔记之七:随需应变之网站的可扩展架构
- 大型电子商务网站架构之--分布式可扩展数据库架构
- 大型电子商务网站架构之--分布式可扩展数据库架构
- 大型电子商务网站架构之--分布式可扩展数据库架构
- 大型电子商务网站架构之--分布式可扩展数据库架构
- 大型电子商务网站架构之--分布式可扩展数据库架构
- 大型电子商务网站架构之--分布式可扩展数据库架构
- 大型电子商务网站架构之--分布式可扩展数据库架构
- 大型电子商务网站架构之--分布式可扩展数据库架构
- 『大型网站技术架构:核心原理与案例分析』(五)
- hbase 自定义Filter
- 『大型网站技术架构』(四):可伸缩架构
- C语言堆和栈的区别
- Eclipse使用hibernate插件
- 机器学习实战(7)--回归
- 『大型网站技术架构』(五):可扩展架构
- 大型网站技术架构』(六):安全性架构
- 剑指offer 跳台阶
- MVC过滤器处理Session过期
- 关于NoClassDefFoundError错误
- poj 1852 Ants (思维)
- UVA11292
- 【经典算法】:猴子排序
- android面试不得不喝的鸡汤