- 2.1.4.1 持久化
持久化(Persisted) 和 溢出(Overflowed) 是配合使用的两个概念,配置共同使用持久化和溢出之后,所有数据都会被复制到磁盘,在内存中只保留热点数据的值,但所有数据的键都会被保留,以便于确认数据在磁盘上是否存在 。内存中数据量达到阈值后(指定条数或内存负载),排在LRU队尾的数据会被溢出到磁盘中(也即删除),当这个键对应的数据又一次被访问到,这个键会被恢复到内存中 。磁盘中的值和内存中的值在应用程序看来没有任何区别 。
- 2.1.4.2 失效
驱逐(Eviction) 和 到期(Expiration) 是可配置的两种数据失效的方式,总的来说,失效就是值当数据满足某些条件时,就从内存中删除掉 。
- 驱逐驱逐是指当内存中的数据量到达一定阈值时,将LRU队尾的数据销毁 。这个阈值可以是条数或占用的内存大小 。驱逐和溢出并不是互斥的,溢出实际上是一种不会丢失数据的驱逐 。
- 到期到期是指按时间销毁掉冷数据,到期有两种计算方式,一种是从数据创建或更新开始计算,被称为TTL(Time to live),另一种是上次被访问开始计算,被称为Idle timeout 。第二种更适用于热点数据的存储,第一种更适合于业务要求的定时失效的数据 。
优化的缓存层最大限度地减少了线程和进程之间的上下文切换 。它管理高度并发结构中的数据,以最大限度地减少争用点 。如果接收器可以跟上,则与对等成员的通信是同步的,这使得数据分发的延迟保持最小 。服务器以序列化形式管理对象图,以减少垃圾收集器的压力 。
客户端可以将单个数据请求直接发送到持有数据key的服务器,从而避免多跳以定位已分区的数据 。客户端中的元数据标识正确的服务器 。
3.2.3 索引Geode的查询支持索引以提高查询效率 。实际上,Geode维护了一个键和索引值之间关系的数据结构(一般是一颗B树),并支持范围查询 。但和所有的关系型数据库一样,索引能带来收益的前提是良好的索引设计,而且必然会带来写效率的降低 。
3.2 CAP我们知道分布式系统存在CAP不可能三角,即一个分布式系统最多只能同时满足 一致性(Consistency) 、 可用性(Availability) 和 分区容错性(Partition tolerance) 这三项中的两项 。下面从一致性、可用性和分区容错性上分析Apache Geode的性能优劣 。
一致性Apache Geode的定位是一款强一致性的内存数据库 。一致性的破坏有两种渠道: 副本更新的延迟或失败 和 并发更新。
- 对于分区区域,即使该分区配置了冗余的副本,也只允许在主副本上按顺序写入,写入过程中会进行锁定,防止并发更新 。对主副本的写入,必须在同步地执行对冗余副本的写入后才算成功 。
经验总结扩展阅读
- 基于 Apache Hudi 极致查询优化的探索实践
- 如何读懂狗心里在想什么
- 一文搞定 Spring事务
- 可爱在性感面前一文不值是什么意思?
- 一文带你读懂小米手环6和7的区别 小米手环7比6多了什么功能
- 一文看懂华为充电新技术 华为mate30支持无线充电吗
- 苹果如何录入nfc门禁卡 (一文了解iPhone手机添加门禁卡的方法)
- cad表格怎么统一文字高度?
- 牵手一文有哪些方面的含义 牵手一文都有哪些方面的含义
- 情人节:读懂9位作家的婚姻,你就知道何谓家、何谓爱