分布式系统
一个分布式系统要求各节点分布在网络上,并通过消息传递来合作完成一个共同目标。
分布式系统的三大关键特征是:节点之间并发工作,没有全局锁以及某个节点上发生的错误不影响其他节点。
分布式系统的好处在于可扩展性,只需要加入新的节点就可以自由扩展集群的性能。
在前一文章,系统的接口和数据存储紧密耦合在单机上,这样的系统不是分布式,也无法扩展。
因此我们要让接口和数据存储成为互相独立的服务节点,两者互相合作提供对象存储服务。一旦接口和数据存储分离,我们就可以往集群中随意添加新的接口服务节点或数据服务节点。这些节点可以在同一台服务器上共存,也可以分布在不同服务器上,成为一个分布式服务集群。
接口和数据存储分离
接口服务层提供了对外的 REST 接口,而数据服务层则提供数据的存储功能。接口服务处理客户端的请求,然后向数据服务存取对象,数据服务处理来自接口服务的请求并在本地磁盘上存取对象。
接口服务和数据服务之间的接口有两种
- 第一种接口实现对象的存取。数据服务本身也提供 REST 接口,接口服务节点作为 HTTP 客户端向数据服务请求对象。
- 第二种接口通过RabbitMQ消息队列进行通信。RabbitMQ的使用分为两种模式