本文已参与「新人创作礼」活动,一起开启掘金创作之路。
由于工作中要开发一个分布式限速服务,方案中会用到分布式缓存或者分布式in-memory的key-value存储,这是一个比较大的方向,所以单独在这里开一个专题(专业给自己挖坑,慢慢填吧。。)
分布式缓存主要考虑几个问题
- 数据均衡性
- 分区容忍行
- 扩缩容
数据均衡性
取决于分区算法 分区算法需要满足:
- 平横性:主要是数据的平均分布,及当集群中某一个缓存服务失效,数据也能够正常分布
- 单调性:当数据插入某个缓存之后,再次调用,同样会落到对应的缓存上面。
常见的算法有:
- Consistent Hash ()
- HRW (en.wikipedia.org/wiki/Rendez…
In-Memory Data Grid,来自hazelcast。
Data Grid的思想其实上个世纪就有了,这也很正常,理论总是领先于实际,就好比现在大火的深度学习的模型,上个世纪就已经成型了,只不过硬件无法跟上,所以SVM当年才大行其道。
这是来自官网的一个图:
IMDG 通过在集群中的每台计算机上运行专门的软件来协调对应用程序数据的访问。集群中的每台计算机在内存中都有自己的数据和数据结构视图,但该视图在所有其他计算机之间共享。该软件跟踪每个单独节点上的所有数据,以便可以与任何其他节点或任何应用程序共享数据。这种编排隐藏了通过网络检索和更新数据的复杂性,从而简化了应用程序开发。
IMDG 中的数据通常以对象的形式存储,例如地图、列表和队列。还包括整数和浮点数等基本数据类型(“原语”)。这些对象和数据类型中的每一个都表示为应用程序中的变量,并且应用程序逻辑引用这些变量,就好像它们驻留在运行应用程序的同一台计算机中一样。这使得编程范式比其他内存技术简单得多,因为开发人员不需要包含代码来物理检索数据。
。。。。
之后再更新吧。。。
reference:
- medium.com/car2godevs/…
- (apache arrow)[arrow.apache.org/]
- (JSP107,CACHE-API)download.oracle.com/otndocs/jcp…
- (hazelcast)[docs.hazelcast.org/docs/latest…]
- (redis-cluster)[redis.io/topics/clus…]
- (grid-gain)[blog.csdn.net/dc_726/arti…]
- (ignite)[github.com/apache/igni…]
- (aerospike)[en.wikipedia.org/wiki/Aerosp…]
- (HRW hash)[en.wikipedia.org/wiki/Rendez…]
- (TiKV)[github.com/tikv/tikv]
- (Top15 imdg)[www.predictiveanalyticstoday.com/top-memory-…]
- (Alluxio)[www.alluxio.org/]