五华网站建设 优帮云,呼和浩特网站建设设计,阿里域名,网络建设方案论文CacheCloud CacheCloud提供一个Redis云管理平台#xff1a;实现多种类型(Redis Standalone、Redis Sentinel、Redis Cluster)自动部署、解决Redis实例碎片化现象、提供完善统计、监控、运维功能、减少运维成本和误操作#xff0c;提高机器的利用率#xff0c;提供灵活的伸缩… CacheCloud CacheCloud提供一个Redis云管理平台实现多种类型(Redis Standalone、Redis Sentinel、Redis Cluster)自动部署、解决Redis实例碎片化现象、提供完善统计、监控、运维功能、减少运维成本和误操作提高机器的利用率提供灵活的伸缩性提供方便的接入客户端。 项目主页 https://github.com/sohutv/cac... 改造RedisConnectionFactory /*** 根据缓存策略的不同RedisConnectionFactory不同* 示例是单机模式。** return*/
Bean
public RedisConnectionFactory redisConnectionFactory() {while (true) {try {LOCK.tryLock(100, TimeUnit.MILLISECONDS);/*** 心跳返回的请求为空*/String response HttpUtils.doGet(http://localhost:5005/cache/client/redis/standalone/10000.json?clientVersion1.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依赖 !--Redis--
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactIdexclusionsexclusionartifactIdjedis/artifactIdgroupIdredis.clients/groupId/exclusion/exclusions
/dependency
dependencygroupIdcom.sohu.tv/groupIdartifactIdcachecloud-open-client-redis/artifactIdversion1.0-SNAPSHOT/versionexclusionsexclusionartifactIdjedis/artifactIdgroupIdredis.clients/groupId/exclusion/exclusions
/dependency
!--上步改造后编译的jar--
dependencygroupIdcom.github.pig/groupIdartifactIdpig-cache-cloud-jedis/artifactIdversion2.9.1/version
/dependency 部署服务war 这一步直接参考 cachecloud 的文档即可 总结 源码参考pig https://gitee.com/log4j/pig 关于pig 这是一套微服务应用的实践基于Spring Cloud、Spring Security Oauth2.0开发企业级认证与授权提供常见服务监控、链路追踪、日志分析、缓存管理、任务调度等实现改造写于2017-2018的跨年夜文章整理与2018.1.1真惨不过我喜欢 ?2017 失去很多2018本命年 ? 汪汪汪