行CRUD(增删改查)等操作。由于采用无状态的REST请求协议,可以进行横向扩展来均衡负载。在访问Swift服务之前,需要先通过认证服务获取访问令牌,然后在发送的请求中加入头部信息XAuthToke
。代理服务器负责Swift架构的其余组件间的相互通信。代理服务器也处理大量的失败请求。例如,如果对于某个对象PUT请求时,某个存储节点不可用,它将会查询环可传送的服务器并转发请求。对象以流的形式到达(来自)对象服务器,它们直接从代理服务器传送到(来自)用户代理服务器并不缓冲它们。认证服务(Authe
ticatio
Server):验证访问用户的身份信息,并获得一个对象访问令牌(Toke
),在一定的时间内会一直有效;验证访问令牌的有效性并缓存下来直至过期时间。
第7页共14页
fOpe
StackSwift学习笔记
缓存服务(CacheServer):缓存的内容包括对象服务令牌,账户和容器的存在信息,但不会缓存对象本身的数据;缓存服务可采用Memcached集群,Swift会使用一致性哈希算法来分配缓存地址。
账户服务(Accou
tServer):提供账户元数据和统计信息,并维护所含容器列表的服务,每个账户的信息被存储在一个SQLite数据库中。
容器服务(Co
tai
erServer):提供容器元数据和统计信息(比如对象的总数,容器的使用情况等),并维护所含对象列表的服务。容器服务并不知道对象存在哪,只知道指定容器里存的哪些对象。这些对象信息以SQLite数据库文件的形式存储,和对象一样在集群上做类似的备份。
对象服务(ObjectServer)提供对象元数据和内容服务,:可以用来存储、检索和删除本地设备上的对象。在文件系统中,对象以二进制文件的形式存储,它的元数据存储在文件系统的扩展属性(xattr)中,建议采用默认支持扩展属性(xattr)的XFS文件系统。每个对象使用对象名称的哈希值和操作的时间戳组成的路径来存储。最后一次写操作总可以成功,并确保最新一次的对象版本将会被处理。删除也被视为文件的一个版本(一个以