实现可扩展的分布式系统(1)

分布式系统的好处在于可扩展性,只需要加入节点就可以扩展集群的性能。常规的存储方式是:接口和数据存储被紧密耦合到一起。
这样的系统不是分布式的,无法扩展。因此本文要做的就是解开这个耦合。让接口和数据存储成为相互独立的服务节点,两者相互合作提供对象存储服务。

接口和对象存储服务的架构:

实现可扩展的分布式系统(1)

接口服务和数据服务之间的接口有两种:

  1. 第一种接口实现对象的存取。和上一个版本一样,对象的存取使用REST接口。也就是说数据服务本身也提供REST接口,此时,接口服务节点作为HTTP客户端向数据服务请求对象。
  2. 第二种接口通过RabbitMQ消息队列进行通信。关于RabbitMQ消息队列的详细介绍请参见其官网。在我们的架构中对RabbitMQ的使用分为两种模式,一种模式是向某个exchange进行一对多的消息群发,另-种模式则是向某个消息队列进行一对一的消息单发。