7 随需应变:网站的可扩展架构
2016-06-22 22:40
204 查看
7 随需应变:网站的可扩展架构
7.1 构建可扩展的网站架构
模块分布式部署以后具体耦合方式主要有分布式消息队列和分布式服务。7.2利用分布式消息队列降低系统耦合性
7.2.1 事件驱动架构
事件驱动架构:通过在低耦合的模块之间传输事件消息,以保持模块的松散耦合,并借助事件消息的通信完成模块间合作。常用的是分布式消息队列。消息队列利用分布-订阅模式工作,消息发送者发送消息,一个或者多个消息接收者订阅消息。
7.2.2 分布式消息队列
队列是一种先进先出的数据结构,分布式消息队列可以看作将这种数据结构部署到独立的服务器上,应用程序可以通过调用远程访问接口使用分布式消息队列,进行消息存取操作,进而实现分布式的异步调用。分布式消息队列开源产品Apache ActiveMQ。
分布式消息队列可以很复杂,比如支持ESB(企业服务总线)、支持SOA(面向服务的架构)等。也可以很简单,MySQL也可以当作分布式消息队里。
7.3 利用分布式服务打造可复用的业务平台
分布式消息队列通过消息对象分解系统耦合性,不同子系统处理同一个消息;那么分布式服务则通过接口分解系统耦合性,不同子系统通过相同的接口描述进行服务调用。巨无霸应用系统带来以下几个问题:
1. 编译、部署困难
2. 代码分支管理困难
3. 数据库连接耗尽
4. 新增业务困难
解决方案就是拆分,将模块独立部署,降低系统耦合性。拆分分为纵向拆分和横向拆分。
纵向拆分:将一个大应用拆分为多个小应用,如果新增业务比较独立,那么久直接将其设计部署为一个独立的Web应用系统。
横向拆分:将复用的业务拆分出来,独立部署为分布式服务。
7.3.1 WebService与企业级分布式服务
Web Service虽然有成熟的技术规范和产品实现,并在企业应用领域有许多成功的案例,但也有如下固有的缺点:1. 臃肿的注册与发现机制
2. 低效的XML序列化手段
3. 开销相对较高的HTTP远程通信
4. 负载的部署与维护手段
这些问题导致Web Service难以满足大型网站对系统高性能、高可用、易部署、易维护的要求。
7.3.2 大型网站分布式服务的需求和特点
负载均衡失效转移
高效的远程通信
整合异构系统
对应用最少侵入
版本管理
实时监控
7.3.3 分布式服务框架设计
大型网站需要更简单更高效的分布式服务框架构建起SOA(Service OrientedArchitecture 面向服务的体系架构)。阿里巴巴分布式开源框架Dubbo为例。
7.4 可扩展的数据结构
关系数据库预先设计一些冗余字段来应付。NoSQL数据库使用ColumnFamily(列族)设计就是一个解决方案。
7.5 利用开放平台建设网站生态圈
网站必须提供更多的增值服务才能赚钱。大型网站为了更好的服务自己的用户,开发更多的增值服务,会把网站内部的服务封装成一些调用接口开放出去,供外部的第三方开发者使用,这个提供开放接口的平台被称作开放平台。
开放平台架构设计:
API接口:是开放平台暴露给开发者使用的一组API,其形式可以是RESTful、WebService、RPC等各种形式。
协议转换:将各种API输入转换成内部服务可以识别的形式,并将内部服务的返回封装成API的格式。
安全:
审计:
路由:
7.6 小结
相关文章推荐
- 6 永无止境:网站的伸缩性架构
- 5万无一失:网站的高可用架构
- 4 瞬时响应:网站的高性能架构
- 3 大型网站核心架构要素
- 大型网站技术架构——技术的演进
- 2 大型网站架构模式
- 怎样用php识别是电脑还是手机访问网站
- 60个国外免费3D模型下载网站
- 优化网站加载速度的一些方法
- 网站优化还靠所谓的技术?你的思维错了!
- 浅谈Android Settings模块架构
- 七牛技术总监肖勤:微服务架构实践经验分享(摘抄)
- 成为一个Java的架构师要学习哪些知识?
- 大型网站架构系列:电商网站架构案例
- 网站收藏
- 大型电子商务网站架构
- 微信Android客户端架构演进之路-简单总结
- 也谈大型电子商务网站的架构
- 构建高并发高可用的电商平台架构实践
- 软件设计模式:基于MVP的Android项目架构