介绍

  ycache是yhd的分布是缓存框架,设计目的是提供易扩展、高可靠的分布式缓存系统。ycache从全局视角分配和管理缓存,检测缓存的状态并做故障恢复。
  当应用(应用:使用ycache的上层业务模块的俗称,例如订单管理模块)需要缓存时,仅需要说需要多少空间的缓存,然后yconsole会从缓存系统中按照一定策略分配缓存空间给这个应用。这个缓存空间用一个"cache-id"表示,应用层仅需要在ycache-client中配置这个cacheid,就能使用这些缓存。应用层不需要知道缓存在哪里,ip是什么,它只知道自己拥有这么多的缓存空间并总是能使用的。




原理

ycache包括几个组件:
  • ycache-client:它在memcached-java-client和jedis的基础上封装了一层,一方面是为了统一缓存的api,另一方面是为方便与ycache的其他组件协同工作。简要的说,它通过配置一个cacheid,动态的检测这cacheid在zookeeper上的对应节点下的cache实例(ip:port),然后连接并使用缓存。
  • yagent:它是一个管理缓存实例的守护进程。它运行在memcached或redis的服务器上,按照配置自动启动、维护缓存实例(cache进程),并把缓存实例的信息写到zookeeper上。它写的信息是给yconsole使用的,包括一台缓存服务器有哪些实例,每个实例分配的内存空间,服务器使用的缓存版本、分组、优先级,甚至服务器所在的机架信息。它还负责redis的主从切换相关的功能;还有简单的统计功能。
    yagent使用说明
  • yconsole:它是一个管理缓存的工具。主要是通过读取yagent写到zookeeper上的信息,按照一定策略分配给应用,然后将分配的结果写到zookeeper上,供ycache-client使用。
    yconsole使用说明
  • zookeeper:zk属于协调者的作用,它将yagent对缓存实例的状态更新消息展示给yconsole,同时将yconsole对cacheid的更新消息通知给yclient。
  下图展示了这些组件之间的关系。值得注意的是,虽然他们上面的组件式紧密配合使用的,但是ycache-client使用缓存时直接连接memcached或redis,也就是即使zk、yconsole、yagent故障了,也不影响缓存的使用(但扩展和故障恢复受影响了)。

  zk上的数据结构,yagent写的数据为:/redis/ips/[server-ip]/[[cache-instance-1], ...], yconsole写的数据为:/redis/pools/[cache-id], 里面记录这这个cacheid对应的cache实例的ip:port。

 

ycache分布式缓存框架的更多相关文章

  1. 5个强大的Java分布式缓存框架推荐

    在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓存策略考虑进去,或者并没有选择更优的 缓存策略,那么到时候重构起来将会是一个噩梦.本文主要是分享了 ...

  2. Java分布式缓存框架

    http://developer.51cto.com/art/201411/457423.htm 在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓 ...

  3. 5个强大的Java分布式缓存框架

    在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓存策略考虑进去,或者并没有选择更优的缓存策略,那么到时候重构起来将会是一个噩梦.本文主要是分享了5 ...

  4. Java 开源分布式缓存框架Ehcache

    http://www.codeceo.com/article/java-ehcache.html

  5. 【分布式缓存系列】Redis实现分布式锁的正确姿势

    一.前言 在我们日常工作中,除了Spring和Mybatis外,用到最多无外乎分布式缓存框架——Redis.但是很多工作很多年的朋友对Redis还处于一个最基础的使用和认识.所以我就像把自己对分布式缓 ...

  6. J2CACHE 两级缓存框架

    概述 缓存框架我们有ehcache 和 redis 分别是 本地内存缓存和 分布式缓存框架.在实际情况下如果单台机器 使用ehcache 就可以满足需求了,速度快效率高,有些数据如果需要多台机器共享这 ...

  7. 缓存框架Ehcache相关

    单点缓存框架   只能针对单个jvm中,缓存容器存放jvm中,每个缓存互不影响  Ehcache gauva chache 内置缓存框架 jvm缓存框架 分布式缓存框架(共享缓存数据)  Redis ...

  8. 7.4mybatis整合ehcache(mybatis无法实现分布式缓存必须和其他缓存框架整合)

    <\mybatis\day02\14查询缓存-二级缓存-整合ehcache.av> mybatis的缓存机制(一级缓存二级缓存和刷新缓存)和mybatis整合ehcache-- 这里有做本 ...

  9. Redis 分布式缓存 Java 框架

    为什么要在 Java 分布式应用程序中使用缓存? 在提高应用程序速度和性能上,每一毫秒都很重要.根据谷歌的一项研究,假如一个网站在3秒钟或更短时间内没有加载成功,会有 53% 的手机用户会离开. 缓存 ...

随机推荐

  1. ccs之经典布局(一)(水平垂直居中)

    经典的css布局有以下几种,下面分别用不同的方法进行实现且进行对比. 一.水平居中 水平居中布局指的是当前元素在父级元素的容器中,水平方向上显示的是居中的,有以下几种方式来完成布局: 1.margin ...

  2. Spring Boot 实际操作

    1.什么是springboot 2.springboot的很多默认编码方式都是utf-8,真是福利啊. 3.spring boot如何启动和访问和MocMvc测试 4.开发环境的调试热启动 5.app ...

  3. 数据绘图工具之Matplotlib

    一.安装:绘图和可视化 pip install matplotlib 我们已经下好了anaconda 包含了绘图工具包 直接导入即可 import matplotlib.pyplotlib as pl ...

  4. openstack dashboard开启https

    前提条件: 1.基于http的dashboard能正常访问 2.拥有ssl证书 第一步:修改/etc/openstack-dashboard/local_settings 在DEBUG = False ...

  5. vim 搜索 向前,向后

    vim 搜索可以是 / 或者 ?,前者是往下找,后者是往前找. 用 n 查找下一个的时候,就和这两个指令指定的方向相同.如果你想改变方向的话,比如想往下找,那么 / 完了直接回车就行了.表示再次使用上 ...

  6. 一文全面了解NB-IoT技术优势及特点

    1.NB-IOT多输入多输出技术 NB-IoT可以利用多天线技术抑制信道传输衰弱,获得分集增益.空间复用增益和阵列增益,在发送端和接收端均采用多天线实现信号同时发送和接收: 因此就形成了一个并行的多空 ...

  7. 常用数据存储格式之json

    常用数据存储格式介绍 JSON: JavaScript Object Notation(JavaScript 对象表示法) JSON 是存储和交换文本信息的语法.类似 XML. JSON 比 XML ...

  8. 00常见的Linux系统版本

    linux系统内核与linux发行套件系统并不相同: linux系统内核指的是一个由Linus Torvalds负责维护,提供硬件抽象层.硬盘及文件系统控制及多任务功能的系统核心程序. linux发行 ...

  9. SQL Server里面如何导出包含数据的SQL脚本

    通常情况下,SQL Server里面的生成SQL脚本,只会包含数据库及表的字段结构,而不会包含表的数据,也就是SQL脚本里面只有Create database,Create table 这样的语句,没 ...

  10. js事件总汇

    Mouse 事件 描述onClick                     鼠标点击事件,多用在某个对象控制的范围内的鼠标点击 onDblClick                鼠标双击事件 on ...