大型网站技术架构--扩展

扩展性:在对系统影响最小的情况下,系统功能可持续性扩展或者提升能力

表现在系统基础设施稳定不需要经常变更,应用之间较少的依赖和耦合,需求变更可以敏捷响应

系统架构设计层面:开闭原则(对扩展关闭,对修改关闭)

架构设计考虑为了功能扩展,系统增加功能时,不需要对现有系统结构和代码进行修改。

伸缩性:系统能通过增加减少自身资源规模的方式增强减少自己计算处理事务的能力。


构建可扩展性架构

模块分割,业务分层,降低耦合

利用分布式消息队列降低系统耦合性

事件驱动:通过在低耦合的模块之间传输事件消息,以保证模块的松散耦合,并借助事件消息的通信完成模块间的合作。典型的EDA架构就是操作系统中常见的生产者消费者模式。

 分布式消息队列 发布订阅模式

比较著名的有 Apache ActiviteMQ

消息队列服务(Message Queue Service,简称MQS),是阿里云推出的分布式消息中间件服务。(http://blog.aliyun.com/1346)

伸缩性,可用性,表现的都不错。

可以很简单,如ESB,SOA;也可以很简单 Mysql。

这里我们单找主题学习。


利用分布式服务打造可复用的业务平台

层次分明,链路清晰。不跨层调用,功能单一。

纵向拆分:将 大 应用拆分成多个独立的小应用

原则是:应用内部 业务逻辑关联紧密;外部,没有关联,或者可以通过其他方式解决的较少关联

横向拆分: 

系统整体方面: 

        应用(各种应用);服务(用户,商品,店铺,库存,评价等); IO服务(消息队列服务,数据库服务,搜索引擎服务,分布式缓存服务,分布式文件服务)

单一应用方面: 视图层(Controller),业务逻辑层(Service),持久层(DB);

分布式服务的需求与特点

负载均衡:研究一下对应的解决方案

失效转移:研究一下对应的解决方案

高效的远程通信

整合异构系统

对应用最少的侵入

版本管理:可提供多版本服务,上线新版本后,旧版本依然可用,当新版本没问题时再选择性的开放新版本。

实时监控

分布式服务框架设计

Thrift大型网站还不够用

Dubbo:另找主题学习


可扩展的数据结构

NoSql产品,这里暂时不进行深究。有感兴趣的可以


利用开放平台建设网站生态圈

把网站内部的服务封装成一些接口开放出去,供第三方使用,这个开放接口的平台称为开放平台。

网站,用户,第三方开发者相互依赖,形成了一个网站的生态圈,既为用户提供了更多的价值,也提高了网站和第三方开发者的竞争能力和盈利能力。

插133页图




你可能感兴趣的:(扩展)