博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Spring Cloud】Redis缓存接入监控、运维平台CacheCloud
阅读量:5951 次
发布时间:2019-06-19

本文共 3863 字,大约阅读时间需要 12 分钟。

CacheCloud

CacheCloud提供一个Redis云管理平台:实现多种类型(Redis Standalone、Redis Sentinel、Redis Cluster)自动部署、解决Redis实例碎片化现象、提供完善统计、监控、运维功能、减少运维成本和误操作,提高机器的利用率,提供灵活的伸缩性,提供方便的接入客户端。
项目主页:

image

image

改造RedisConnectionFactory

/** * 根据缓存策略的不同,RedisConnectionFactory不同 * 示例是单机模式。 * * @return */@Beanpublic RedisConnectionFactory redisConnectionFactory() {   while (true) {        try {            LOCK.tryLock(100, TimeUnit.MILLISECONDS);            /**             * 心跳返回的请求为空;             */            String response = HttpUtils.doGet("http://localhost:5005/cache/client/redis/standalone/10000.json?clientVersion=1.0-SNAPSHOT");            if (response == null || response.isEmpty()) {                continue;            }            JSONObject jsonObject = null;            try {                jsonObject = JSONObject.parseObject(response);            } catch (Exception e) {            }            if (jsonObject == null) {                continue;            }            /**             * 从心跳中提取HostAndPort,构造JedisPool实例;             */            String instance = jsonObject.getString("standalone");            String[] instanceArr = instance.split(":");            if (instanceArr.length != 2) {                continue;            }            //收集上报数据            ClientDataCollectReportExecutor.getInstance("http://localhost:5005/cachecloud/client/reportData.json");            String password = jsonObject.getString("password");            String host = instanceArr[0];            String port = instanceArr[1];            JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory();            jedisConnectionFactory.setPassword(password);            jedisConnectionFactory.setHostName(host);            jedisConnectionFactory.setPort(Integer.parseInt(port));            return jedisConnectionFactory;        } catch (InterruptedException e) {            logger.error("error in build().", e);        }    }}

改造 jedis-2.9.0

Connection.java

/** * 命令捕获,异常保存 * @param cmd * @param args */public void sendCommand(final ProtocolCommand cmd, final byte[]... args) {    try {        //统计开始        UsefulDataModel costModel = UsefulDataModel.getCostModel(threadLocal);        costModel.setCommand(cmd.toString().toLowerCase());        costModel.setStartTime(System.currentTimeMillis());        connect();        Protocol.sendCommand(outputStream, cmd, args);    } catch (JedisConnectionException ex) {        UsefulDataCollector.collectException(ex, getHostPort(), System.currentTimeMillis());        broken = true;        throw ex;    }}

JedisClusterCommand.java

private T runWithRetries(byte[] key, int attempts, boolean tryRandomNode, boolean asking) {    if (attempts <= 0) {        JedisClusterMaxRedirectionsException exception = new JedisClusterMaxRedirectionsException("Too many Cluster redirections? key=" + SafeEncoder.encode(key));        //收集        UsefulDataCollector.collectException(exception, "", System.currentTimeMillis(), ClientExceptionType.REDIS_CLUSTER);        throw exception;    }}

更新spring-boot-starter-data-redis依赖

org.springframework.boot
spring-boot-starter-data-redis
jedis
redis.clients
com.sohu.tv
cachecloud-open-client-redis
1.0-SNAPSHOT
jedis
redis.clients
com.github.pig
pig-cache-cloud-jedis
2.9.1

部署服务war

这一步直接参考 cachecloud 的文档即可

总结

  1. 源码,参考pig:
  2. 关于pig, 这是一套微服务应用的实践基于Spring Cloud、Spring Security Oauth2.0开发企业级认证与授权,提供常见服务监控、链路追踪、日志分析、缓存管理、任务调度等实现
  3. 改造写于2017-2018的跨年夜,文章整理与2018.1.1,真惨,不过我喜欢 ?
  4. 2017 失去很多,2018本命年 ? 汪汪汪!

转载地址:http://clsxx.baihongyu.com/

你可能感兴趣的文章
iOS开发小技巧--iOS程序进入后台运行的实现
查看>>
七个错误可能引发网页布局灾难
查看>>
判断系统是否是中文的
查看>>
窗口改变的时候自动刷新浏览器
查看>>
Java 类型转换(int->String)
查看>>
OAF_开发系列18_实现OAF页面跳转setForwardURL / forwardImmediately(案例)
查看>>
ASP.NET Core Docker部署
查看>>
家宝贝项目历程之三(全部模块完成)
查看>>
img的onerror事件
查看>>
java代码-------Runnable的用法
查看>>
ZOJ4108 Fibonacci in the Pocket
查看>>
Python 数据图表工具的比较
查看>>
移动端版本兼容js
查看>>
mongos-sharding连接池配置
查看>>
jdbc方式mysql语句增删改查
查看>>
ruby symbol详解
查看>>
字符串查找 cmd find命令
查看>>
常用函数式接口与Stream API简单讲解
查看>>
114ic电子元器件网
查看>>
关于input标签无法对齐的解决方法!
查看>>