摘要:
聊起中断,大家可能最熟悉的例子就是线程休眠。下面就是一个线程休眠的 demo,在这个例子中,当我们调用 方法,该方法将会抛出一个需要捕获的中断异常,这里捕获该异常并直接返回。 java for (int i = 0; i An interrupt is an indication to a thre 阅读全文
摘要:
线上某服务 A 调用服务 B 接口完成一次交易,一次晚上的生产变更之后,系统监控发现服务 B 接口频繁超时,后续甚至返回线程池耗尽错误 。因为服务 B 依赖外部接口,刚开始误以为外部接口延时导致,所以临时增加服务 B dubbo 线程池线程数量。配置变更之后,重启服务,服务恢复正常。一段时间之后,服 阅读全文
摘要:
摘要: 原创出处 https://studyidea.cn 「公众号:程序通事 」欢迎关注和转载,保留摘要,谢谢! 使用 Java 阻塞 I/O 模型读取数据,将会导致线程阻塞,线程将会进入休眠,从而让出 CPU 的执行权,直到数据读取完成。这个期间如果使用 jstack 查看线程状态,却可以发现J 阅读全文
摘要:
上篇文章 "如果有人问你 Dubbo 中注册中心工作原理,就把这篇文章给他" 大致了解了注册中心作用以及 Dubbo Registry 模块源码,这篇文章将深入 Dubbo ZooKeeper 模块,去了解如何实现服务动态的发现。 ps: 以下将 ZooKeeper 缩写为 zk。 一、dubbo 阅读全文
摘要:
最近学习使用 rocketmq,需要搭建 rocketmq 服务端,本文主要记录 rocketmq 搭建过程以及这个过程踩到的一些坑。 准备工作 在搭建之前,我们需要做一些准备工作,这里我们需要使用 docker 搭建服务,所以需要提前安装 docker。此外,由于 rocketmq 需要部署 br 阅读全文
摘要:
SPI(Service Provider Interfaces),中文直译服务提供者接口,一种服务发现机制。可能很多人都不太熟悉这个机制,但是平常或多或少都用到了这个机制,比如我们使用 JDBC 连接操作数据库的时候。 SPI 主要适用于功能扩展的场景,如一些框架提供某一部分功能可以由第三方开发人员 阅读全文
摘要:
Dubbo 通过注册中心在分布式环境中实现服务的注册与发现,而注册中心通常采用 ZooKeeper,研究注册中心相关源码绕不开 ZooKeeper,所以学习了 ZooKeeper 的基本概念以及相关 API 操作。 ZooKeeper 相关概念 session 客户端与服务端采用 TCP 长连接,服 阅读全文
摘要:
注册中心作用 开篇首先想思考一个问题,没有注册中心 Dubbo 还能玩下去吗? 当然可以,只要知道服务提供者地址相关信息,消费者配置之后就可以调用。如果只有几个服务,这么玩当然没问题。但是生产服务动辄成千上百,如果每个服务都需要手写配置信息,想象一下是多么麻烦。 好吧,如果上面的问题都不是事的话,试 阅读全文
摘要:
双重检查锁定(Double check locked)模式经常会出现在一些框架源码中,目的是为了延迟初始化变量。这个模式还可以用来创建单例。下面来看一个 Spring 中双重检查锁定的例子。 这个例子中需要将配置文件加载到 中,由于读取资源比较耗时,所以将动作放到真正需要 的时候。我们可以看到 前面 阅读全文
摘要:
最近查找一个生产问题的原因,需要深入研究 ibatis 框架的源码。虽然最后证明问题的原因与 ibatis 无关,但是这个过程加深了对 ibatis 框架原理的理解。 这篇文章主要就来讲讲 ibatis 框架的原理。 可能现在很多人已不再使用 ibatis 或者说也没听 ibatis,不过肯定了解过 阅读全文