- 博客(20)
- 收藏
- 关注
原创 监听Redis中key过期事件
在工作中偶尔会遇到这样一个场景:用户下单之后,若30分钟内未完成支付,则取消订单。 做过电商业务的同学,尤其是做统一下单业务的同学一般都会接触过这个场景的需求,一般的处理方式是将订单数据存储到数据库中(MySQL之类的),然后由一个定时Job不断的去扫描符合条件的订单,修改订单状态为已取消。当然这只是其中一个处理办法,我们还可以使用到延时队列来处理。 那么如果我们使用Redis是否可以实现这一功能?我们知道在使用Redis的过程中,大多是由客户端主动的去操作服务端,比如set、del、get、expire等
2021-01-21 16:20:15
667
原创 通过Redis锁实现均速排队任务
通过Redis实现代码加锁,大家都很熟悉,下面这段代码讲的是如何实现均速排队任务 String uuid = UUID.randomUUID().toString(); long startTime = System.currentTimeMillis(); long endTime = 0L; //以下do-while块为加锁标准范例 do{ //加锁,设置的uuid在解锁时有用,设置的最长时限能防止死锁 String nxResult = redisLock.setnx(ValueConstan
2021-01-21 14:03:44
1292
原创 Redis一主二从Sentinel监控配置
本文基于Redis单实例安装安装。 CentOS7安装Redis单实例 开启哨兵模式,至少需要3个Sentinel实例(奇数个,否则无法选举Leader)。 本例通过3个Sentinel实例监控3个Redis服务(1主2从)。 IP地址 节点角色&端口 192.168.8.203 Master:6379 / Sentinel : 26379 192.168.8.204 Slave :6379 / Sentinel : 26379 192.168.8.205 Slave :6379 / Sentine
2021-01-19 15:27:25
971
原创 CentOS7安装Redis单实例
由于环境差异,安装过程可能遇到各种各样的问题,不要慌,根据错误提示一步一步解决即可。 1、下载redis 下载地址在:redis.io 比如把Redis安装到/usr/local/ wget http://download.redis.io/releases/redis-5.0.5.tar.gz 2、解压压缩包 tar -zxvf redis-5.0.5.tar.gz 3、安装gcc依赖 Redis是C语言编写的,编译需要 yum install gcc 4、编译安装 cd redis-5.0.5 m
2021-01-18 17:16:11
577
原创 来讲讲Redis持久化
简介 Redis作为目前最常用的K-V缓存数据库,因其具有访问速度快而备受欢迎,而其极快的访问速度是基于数据都在内存中来达到的。但是我们并不能保证服务永远是100%可用的,能保证99.999%可用就已经很了不得了,如果数据仅仅存储于内存中,那么意外的宕机就会导致数据丢失,那么对一些数据敏感的业务势必会造成不可泯灭的影响。所以Redis提供了数据持久化功能,目的就是将内存中的数据保存到磁盘上,同时也要最大可能的不影响读写操作的性能。 Redis提供了RDB(redis Database)和AOF(Append
2021-01-13 16:47:00
672
原创 Kafka实现淘宝亿万级数据统计
一、了解淘宝Kafka架构 在ActiveMQ、RabbitMQ、RocketMQ、Kafka消息中间件之间,我们为什么要选择Kafka? 下面详细介绍一下,2012年9月份我在支付宝做余额宝研发,2013年6月支付宝正式推出余额宝,2013年8月担任支付宝淘宝彩票项目经理带领兄弟们一起做研发,期间需要与淘宝和500万对接竞彩接口数据。 通过业余时间与淘宝同事沟通,了解到天猫在电商节如何处理大数据?技术架构上采用了哪些策略? 1、应用无状态(淘宝session框架) 2、有效使用缓存(Tair) 3、应用拆
2021-01-13 15:55:01
1032
原创 Kafka 消息丢失与消费精确一次性
消息丢失的场景 如果Kafka Producer使用“发后即忘”的方式发送消息,即调用producer.send(msg)方法来发送消息,方法会立即返回,但此时并不能说明消息已经发送成功。消息发送方式详见初次邂逅Kafka生产者。 如果在消息过程中发生了网络抖动,那么消息就会丢失;或发送的消息本身不符合要求,如大小超过Broker端的承受能力等(消息太大的情况在生产中实际遇到过,最后通过在发送前将消息分包,再依次发送,解决了该问题)。 解决该问题的方法就是:Producer要使用带回调通知的方法发送消息,即
2021-01-07 15:16:31
637
原创 Kafka集群搭建
三台服务器分别是 192.168.126.128 192.168.126.129 192.168.126.130 然后在三台服务器分别安装kafka 下载 wget http://mirrors.hust.edu.cn/apache/kafka/2.5.0/kafka_2.13-2.5.0.tgz 解压到user/local下 mv /usr/local/kafka_2.13-2.5.0 /usr/local/kafka 修改配置文件 vim /usr/local/kafka/server.proper
2021-01-06 17:12:25
600
原创 Kafka Producer
一、整体图示 二、整个生产者客户端由两个线程:主线程、Sender发送线程 整个生产者客户端就是由主线程和Sender线程完成消息的发送,由主线程构建消息体,将消息体放到消息累加器中,由Sender 线程,从消息累加器中取值,发送给 Kafka 三、流程分析 3.1 主线程 主线程主要通过 KafkaProducer 对象,构建消息,经过可能的 拦截器 , 序列化器 , 分区器 ,最终交给 消息累加器 (RecordAccumulator) 3.2 RecordAccumulator RecordAcc
2021-01-06 16:22:29
663
原创 RocketMq-3、支持的消息种类-顺序消息
RocketMQ消息支持的模式 普通消息 NormalProducer 消息同步发送 producer.send(Message msg) 消息异步发送 producer.send(Message msg, SendCallback sendCallback) 单向发送OneWay producer.sendOneWay(Message msg); 顺序消息 OrderProducer 简介 顺序消息(FIFO 消息)是 MQ 提供的一种严格按照顺序进行发布和消费的消息类型。顺序消息由两个部分组
2021-01-06 15:16:33
662
原创 RocketMq-2、消息发送和接收
quick start 添加依赖 <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>4.7.1</version> </dependency> 生产者 public class Producer { public static void
2021-01-05 17:36:51
919
原创 RocketMQ 一行代码造成大量消息丢失
1、问题现象 首先接到项目反馈使用 RocketMQ 会出现如下错误: 错误信息关键点:MQBrokerException:CODE:2 DESC:[TIMEOUT_CLEAN_QUEUE]broker busy,start flow control for a while,period in queue:205ms,size of queue:880。 由于项目组并没有对消息发送失败做任何补偿,导致丢失消息发送失败,故需要对这个问题进行深层次的探讨,并加以解决。 2、问题分析 首先我们根据关键字:TIM
2021-01-05 16:46:58
1006
原创 Java微服务新生代之Nacos
前言 从 2017 年底 Java 开发领域使用最广的 RPC 框架 Dubbo 开启重新更新维护之路开始,阿里巴巴为打造 Dubbo 微服务生态持续开源了 Sentinel,Nacos,Seata 等微服务中间件框架,并且推出了 Spring Cloud Alibaba 来提供微服务开发的一站式解决方案,阿里巴巴在 Java 社区持续活跃起来,也为 Java 微服务开发注入了新的活力。 本篇文章将重点学习微服务组件 Nacos 作为注册中心的功能和用法,Nacos 是阿里巴巴于 2018 年 7 月份新开
2021-01-04 18:33:58
1194
原创 Spring Cloud Eureka 核心源码之服务注册
看源码方法 看源码首先要了解它的使用,如果不了解它技术的使用、或者特色的话、或者原理的话,你去看源码的话就没什么意义了。 ----Mic Eureka Server 如何接收请求 通信 接收请求的话,肯定会涉及到通信,一般来说,有http通信,socket通信(NIO、Netty)。 服务端必然会监听请求 Euraka提供了两个类 ApplicationsResource 和 ApplicationResource,这两个类会接收一些请求,类似controller。例如: 基于appId路径的访问 查
2020-12-29 17:57:02
619
原创 Spring Cloud服务调用
版本信息 Spring Cloud : Hoxton.SR1 Spring Boot : 2.2.2.RELEASE Zookeeper : 3.5.6 (注册中心使用) OpenFeign核心api Feign is a Java to HTTP client binder inspired by Retrofit, JAXRS-2.0, and WebSocket feign.Feign 核心类 feign.Contract 服务接口类的注解和值解析 feign.Client 调用 fe.
2020-12-29 14:57:12
219
原创 Spring Cloud服务熔断
版本信息 Spring Cloud : Hoxton.SR1 Spring Boot : 2.2.2.RELEASE Spring Cloud Hystrix使用 熔断策略 THREAD — it executes on a separate thread and concurrent requests are limited by the number of threads in the thread-pool SEMAPHORE — it executes on the calling th.
2020-12-28 17:36:37
1093
2
原创 Spring Cloud服务网关
版本信息 Spring Cloud : Hoxton.SR1 Spring Boot : 2.2.2.RELEASE Zookeeper : 3.5.6 (注册中心使用) 服务网关特性 服务网关是干什么用的? 认证 安全(授权) 动态路由 基于RestTemplate自定义服务网关 服务端演示提供服务 1.添加pom依赖 <dependency> <groupId>org.springframework.boot</groupId> &l.
2020-12-28 16:59:46
738
原创 Spring Cloud注册中心与服务发现
版本信息 Spring Cloud : Hoxton.SR1 Spring Boot : 2.2.2.RELEASE Zookeeper : 3.5.6 Consul : 1.6.3 Nacos: 1.1.4 核心api org.springframework.cloud.client.serviceregistry.ServiceRegistry 服务注册 - org.springframework.cloud.client.serviceregistry.Registration 注册信息 -
2020-12-25 17:08:45
1434
原创 架构师技术文档:Redis+Nginx+Dubbo+Spring+架构师精选视频
最近花了很长的时间去搜罗整理Java核心技术好文,我把每个Java核心技术的优选文章都整理成了一个又一个的文档。今天就把这些东西分享给老铁们,也能为老铁们省去不少麻烦,想学什么技能了,遇到哪方面的问题了 直接打开文档学一学就好了。不多说,直接上干货! 一、Redis技术好文精选整理 Redis哨兵、复制、集群的设计原理,以及区别 Spring+Redis+Docker+Dubbo 深入了解redis 如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题 二、Nginx技术好文精选整理 Nginx实战
2020-11-06 14:47:53
158
原创 全网疯传的Java后端岗成长笔记,先到先得!
又到了“金九银十”面试求职高峰期,在金三银四时也参与过不少面试,2020都说工作不好找,也是对开发人员的要求变高。前段时间自己有整理了一些Java后端开发面试常问的高频考点问题做成一份PDF文档(1000道高频题),同时也整理一些图文解析及笔记,今天在这免费分享给大家,希望大家在即将的十月面试做好复习,长期的积累和短期的突击让自己能找到一个满意的工作! 一、Java成长笔记: 1.Java基础复盘 2.Web编程初探 3.SSM从入门到精通 4.SpringBoot快速上手 二、1-3年高工 1.并
2020-10-20 16:01:56
99
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人