09 2021 档案
发表于 2021-09-26 23:17阅读:987评论:0推荐:3
摘要:1. 简介 代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 比如:我们在调用底层框架方法时候,需要在调用方法的前后打印日志,或者做一些逻辑判断。此时我们无法去修改底层框架方法,
阅读全文 »
发表于 2021-09-25 17:54阅读:328评论:0推荐:1
摘要:1. 简介 JAVA反射机制是在运行状态中。 对于任意一个类,都能够知道这个类的所有属性和方法。 对于任意一个对象,都能够调用它的任意一个方法和属性。 这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 2. Class Class类其实也是一个Java类,存在于JDK的ja
阅读全文 »
发表于 2021-09-16 23:34阅读:2467评论:4推荐:7
摘要:1. 简介 我们在上一篇博文中遗留了一个小问题,就是虽然TTL + DLX能实现延迟队列的功能,但是有两个问题。 首先业务场景为:比如海底捞预约,每个人预约的时间段不一致,有个可能一个小时后,有的可能三个小时等,当快到预约时间点需要给用户进行短信通知。 通过给Queue设置过期时间的方式不现实,因为
阅读全文 »
发表于 2021-09-16 00:06阅读:660评论:0推荐:3
摘要:1. 简介 死信队列,简称:DLX,Dead Letter Exchange(死信交换机),当消息成为Dead message后,可以被重新发送到另外一个交换机,这个交换机就是DLX。 (一般会将DLX和与其binding 的 Queue,一并称为死信队列或DLX,习惯而已,不必纠结) 那么什么情况
阅读全文 »
发表于 2021-09-12 15:59阅读:1189评论:2推荐:1
摘要:1.简介 为什么要对消费端进行限流? 其实很好理解,比如我们常能接触到的消费场景:春运期间12306火车票的抢购,双11期间的下单等。这些场景都有一个共同点就是都会导致短暂时间内请求数激增,如果我们的Consumer最多只支持每秒1000的QPS,而由于请求的激增导致每秒2000甚至更多的并发,此时
阅读全文 »
发表于 2021-09-12 12:47阅读:1630评论:4推荐:5
摘要:1. 简介 MQ虽然帮我们解决了很多问题,但是也带来了很多问题,其中最麻烦的就是:如何保证消息的可靠性传输。 我们在聊如何保证消息的可靠性传输之前,先考虑下哪些情况下会出现消息丢失的情况。 首先,上图中完整的展示了消息从生产到被消费的完整链路,我们通过图列举下各种情况。 Producer在把Mess
阅读全文 »
发表于 2021-09-09 23:28阅读:201评论:0推荐:4
摘要:1. 简介 MQ(Message Queue)消息队列,是基础数据结构中“FIFO(先进先出)”的一种数据结构。 一般用来解决应用解耦,异步消息,流量削峰等问题,实现高性能,高可用,可伸缩和最终一致性架构。 应用解耦 MQ相当于一个中介,生产方通过MQ与消费方交互,它将应用程序进行解耦合。 异步消息
阅读全文 »
发表于 2021-09-07 22:42阅读:675评论:0推荐:1
摘要:1. 简介 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。因此OAUTH是安全的。OAuth是Open Authorization的简写。 而OAuth2.0是OAuth协议的下一版
阅读全文 »
发表于 2021-09-06 22:54阅读:684评论:0推荐:5
摘要:1. 简介 我们在之前的博文中讲解了如何使用redis实现分布式锁,其实除了 redis 还有 zookeeper 也能实现分布式锁。 废话不多说,直接上图。 从整个流程中可以看出,zk实现分布式锁,主要是靠zk的临时顺序节点和watch机制实现的。 2. quick start Curator 是
阅读全文 »