根据the following video的说法,专用缓存是托管在单独服务器上的缓存进程,而托管缓存是直接托管在服务主机上的缓存进程。这是标准定义吗?我在网上找不到更多关于这个话题的内容。
在托管缓存场景中,服务是否总是引用此特定主机上的缓存,或者它是否还需要查询其他主机?是否可以将请求仅路由到具有该数据分区的并置高速缓存的主机,以便避免在专用高速缓存主机场景中检索数据时需要到高速缓存服务器的额外网络跳跃?
发布于 2021-11-21 18:46:26
在托管缓存中,只查询托管数据的服务实例可以通过对数据进行分片(通常是按某个键)来完成。给定一个键,请求者可以解析哪个分片拥有数据,然后解析哪个实例拥有该分片,并将请求定向到该实例。只要每个人都同意这两个级别的所有权,这真的很好用。还可以让服务的每个实例都能够转发请求,这样即使一个请求被误导,它也有可能最终到达正确的实例。
Adya (2019)描述了广泛的方法,称之为LInK存储,它可以采用将缓存嵌入到实际服务中的方法(这甚至不需要本地进程间通信)。当这样做的时候,你的服务和缓存之间基本上没有界线:服务就是缓存,数据库/对象存储的存在只是为了允许清除冷数据并提供持久性。这种方法的一个好处是,在晴天情况下,您的数据库/对象存储主要处理写操作,并且它最终会对CQRS产生很多机械上的同情。
我个人已经使用Akka成功地实现了遵循这种方法的服务(Akka Cluster管理集群成员资格和故障检测,Akka cluster分片处理分片分布和解析,Akka持久性提供持久性)。
https://stackoverflow.com/questions/70050291
复制相似问题