介绍

  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. js动态添加行和列(table)

    function AddTableRow() { var Table = document.getElementById("NewTable"); //取得自定义的表对象 NewR ...

  2. react + antd Form表单校验

    非空限制 {getFieldDecorator('name', { rules: [{ required: true, message: '名称不能为空', }],})( <Input plac ...

  3. python、第八篇:索引原理与慢查询优化

    一 介绍 1. 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查 ...

  4. react typescript FunctionComponent antd crud

    这个界面跟之前VUE做的一样.并无任何不同之处,只是用react重复实现了一遍. import React, { useState, useEffect } from 'react'; import ...

  5. ip正则

    IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写.IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一 ...

  6. 模拟赛小结:2017 China Collegiate Programming Contest Final (CCPC-Final 2017)

    比赛链接:传送门 前期大顺风,2:30金区中游.后期开题乏力,掉到银尾.4:59绝杀I,但罚时太高卡在银首. Problem A - Dogs and Cages 00:09:45 (+) Solve ...

  7. 设置apache服务器的访问证书,支持https访问,windows

    windows下载安装openssl http://slproweb.com/products/Win32OpenSSL.html windows证书的生成 安装成功后命令行执行 1.私钥,生成的文件 ...

  8. 高大上的微信小程序中渲染html内容—技术分享

    大部分Web应用的富文本内容都是以HTML字符串的形式存储的,通过HTML文档去展示HTML内容自然没有问题.但是,在微信小程序(下文简称为「小程序」)中,应当如何渲染这部分内容呢? 解决方案 wxP ...

  9. JAVA基础编程之打印99乘法表

    需求:打印9*9乘法表 技术考核: 1.for嵌套循环 代码: // 打印99乘法表 public static void print99Table() { System.out.println(&q ...

  10. matplotlib 模块

    目录 matplotlib 模块 1.条形图 2.直方图 3.折线图 4.散点图+直线图 5.饼图 6. plot 函数参数 7.图像标注参数 matplotlib 模块 1.条形图 import m ...