可扩展架构的核心思想是模块化,并在此基础上,降低模块间的耦合性,提高模块的复用性。
扩展性和伸缩性的区别:
扩展性指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力,当系统需要增加功能时,不需要对现有系统结构和代码进行修改或修改较少,是系统架构设计层面的开闭原则(对扩展开放,对修改关闭);
伸缩性指系统通过增加(减少)自身资源规模方式增强(减少)自己计算处理事务的能力。如利用集群增加服务器数量提高事务吞吐能力。
一、利用分布式消息队列降低系统耦合性
事件驱动架构(Event Driven Architecture):通过在低耦合的模块之间传输事件消息,以保持模块的松散耦合,并借助事件消息的通讯完成模块间的合作。
典型的EDA架构就是生产消费者模式。
二、利用分布式服务打造可复用的业务平台
分布服务的需求与特点:
- 负载均衡
- 失效转移
- 高效的远程通讯
- 整合异构系统
- 对应用最少侵入
- 版本管理
- 实时监控
1,Web Service
服务提供者通过WSDL(Web服务描述语言)向注册中心描述提供的服务接口属性,注册中心使用UDDI(统一描述、发现和集成)发布服务提供者提供的服务,服务请求者从注册中心检索到服务后,通过SOAP(简单对象访问协议)和服务提供者通讯,使用相关服务。
缺点:
- 臃肿的注册与发现机制
- 低效的XML系列化手段
- 开销相对较高的HTTP远程通讯
- 复杂的部署与维护手段
2,分布式服务框架
Facebook的Thrift;
阿里巴巴的Dubbo;
三、可扩展的数据结构
使用NoSQL;
四、利用开发平台建设网站生态圈
把内部服务封装成调用接口开放出去,供外部第三方使用,也就是开发平台。