EVCache客户端是一个Java的客户端,用于发现EVCache服务器并管理所有的增删改查(CRUD)操作,由客户端处理在集群中添加/删除服务器。基于亚马逊云服务可用区,客户端在执行创建、更新和删除操作的时候复制数据。
另一方面,客户端的读操作直接从同一可用区的服务器读取数据。
一个EVCache客户端连接了多个EVCache的服务器集群。 在一个区域内,Netflix有多个全数据集的拷贝,由亚马逊云服务的可用区隔离开来。虚线框描述了区域内的副本,每个拥有数据的全量镜像,作为AWS的自动伸缩组来管理这些镜像。某些缓存在一个区域内有两个镜像,有的拥有更多。这种高层架构长期来看是有效的,不会改变,每个客户端连接自己区域内所有可用区的所有服务器。写操作被发往所有实例,读操作优先选择离读请求近的服务器。
2EVCache 跨区域复制
Netflix的全球云服务遍布AWS各个服务区域,例如北弗吉尼亚、俄勒冈州和爱尔兰,为这些地区的会员提高就近服务,但网络流量会因为各种原因改变,比如关键基础设施出了问题故障,或者地区之间进行失败恢复的练习等,因此Netflix采用无态应用服务器服务于来自任何地区的会员。
这些数据如果从持久层存储获得将会非常昂贵(造成频繁的数据库访问),Netflix需要将这种数据写入到本地缓存,而且必须复制到所有地区的缓存中,以便服务于各个地区的用户请求。
微服务是依赖于缓存的,必须快速可靠地访问多种类型的数据,比如会员的观影历史、排行榜和个性化推荐等,这些数据的更新与改变都必须复制到全世界各个地区,以便这些地区的用户能够快速可靠地访问。
这张图说明复制操作是在SET操作以后实现,应用程序调用EVCache客户端库的set方法,之后复制路径对于调用者是透明的:
EVCache客户端库发送SET到缓存系统的本地地区的一个实例服务器中
EVCache客户端库同时也将写入元数据(包括key,但不包括要缓存的数据本身)到复制消息队列(Kafka)
本地区的复制中继服务将会从这个消息队列中读取消息
中继服务会从本地缓存中抓取符合key的数据
中继服务会发送一个SET请求到另一个地域的复制中继服务
在另一个区域中,复制中继服务会接受请求,然后执行SET操作到它的本地缓存,完成复制
在接受地区的本地应用当通过GET操作以后会在本地缓存上看到这个已经更新的数据值
这是一个简单描述,需要注意的是,它只会对SET操作有效,对于其它DELETE TOUCH或批mutation等操作不会复制,DELETE和TOUCH是非常类似的,只有一点不同:它们不从本地缓存中读取已经存在的值。
跨区域复制主要是通过消息队列进行,一个地区的EVCache客户端不会注意到其它地区的复制情况,读写都是只使用本区域缓存,不会和其它地区缓存耦合,通过消息系统来解耦合。
以上就是金山云为您带来的简析云服务融入分布式缓存系统架构(二)的相关内容,如果您还想了解更多简析云服务融入分布式缓存系统架构(二)的相关问题您可以点击页面中的链接进行具体了解。金山云提供云服务器,云主机,云存储,私有云,数据库,物理主机,RDS,KS3,SLB,KEC的全套产品服务,部分产品可以免费体验,而且会有定期的优惠、代金券等相关的活动。成立7年来,金山云始终坚持以客户为中心的服务理念,提供安全、可靠、稳定、高品质的云计算服务。以上是对简析云服务融入分布式缓存系统架构(二)相关介绍,如果觉得对您有帮助可以收藏。欢迎随时查看。