摘要:
之前分析了如何使用原生的Feign,今天我们来研究 Netflix 团队开发的另外一个类库--Ribbon。
Ribbon 和 Feign 有很多相似的地方,首先,它们本质上都是 HTTP client,其次,它们都具备重试、集成断路器等功能。最大的区别在于,Ribbon 内置了一个负载均衡器,而 Feign 没有。
本文将介绍如何使用原生的 Ribbon,注意是原生的,而不是被 Spring 层层封装的 Ribbon。 阅读全文
摘要:
hprof 文件分析 2021-08-24,订单中心的一个项目出现了 OOM 异常,使用 MemoryAnalyzer 打开 dump 出来的 hprof 文件,可以看到 91.27% 的内存被一个超大对象javassist.ClassPool占用了。 那么,ClassPool是一个什么样的对象呢? 阅读全文
摘要:
什么是Feign Feign 是由 Netflix 团队开发的一款基于 Java 实现的 HTTP client,借鉴了 Retrofit、 JAXRS-2.0、WebSocket 等类库。通过 Feign,我们可以像调用方法一样非常简单地访问 HTTP API。这篇博客将介绍如何使用原生的 Fei 阅读全文
摘要:
最近,我改造一个旧接口时发现,这个接口有 30 多个入参,而事实上并不需要那么多,而且,这个接口还存在比较大的安全隐患。所以,关于如何设计接口入参,我想谈谈自己的一些想法。
当然,只是一家之言,不一定就是对的。 阅读全文
摘要:
简介 apollo 是一款由携程团队开发的配置中心,可以实现配置的集中管理、分环境管理、即时生效等等。在这篇博客中,我们可以了解到: 为什么使用配置中心 如何设计一个配置中心 apollo 是如何设计的 如何使用 apollo 为什么使用配置中心 这里我回答的是为什么使用配置中心,而不是为什么使用 阅读全文
摘要:
业务系统是千差万别的,例如,保存、更新和删除订单,或者保存订单和保存客户,走的根本不是一个流程。但是,它们还是有共同点,它们的流程大致可以分成下面的几个部分。
拿到增删改等操作所需的基础数据;初始化基础数据; 对基础数据进行校验;利用基础数据,构建出要进行增删改等操作的对象;持久化或其他操作。而entitybuilder就是来规范和简化这个过程的工具。 阅读全文
摘要:
eureka 是由 Netflix 团队开发的针对中间层服务的负载均衡器,在微服务项目中被广泛使用。相比 SLB、ALB 等负载均衡器,eureka 的服务注册是无状态的,扩展起来非常方便。
在这个系列中,我将深入研究 eureka,包括它的使用、源码等,总计分成五篇博客讲完,后面发现有趣的东西也会继续补充。 阅读全文
摘要:
按照原定的计划,我将分三个部分来分析 Eureka 的源码:
1. Eureka 的配置体系;
2. Eureka Client 的交互行为;
3. Eureka Server 的交互行为。
今天,我们来研究第三部分的源码。
分析的思路和第二部分的一样,先明确 Eureka Server 需要具备哪些功能,再从源码层面分析如何实现这些功能,最后补充 Eureka Server 的配置解读。 阅读全文
摘要:
按照原定的计划,我将分三个部分来分析 Eureka 的源码:
1. Eureka 的配置体系;
2. Eureka Client 的交互行为;
3. Eureka Server 的交互行为。
今天,我们来研究第二部分的源码。 阅读全文
摘要:
通过前面的两篇博客,我们知道了:什么是 Eureka?为什么使用 Eureka?如何适用 Eureka?今天,我们开始来研究 Eureka 的源码,先从配置部分的源码开始看,其他部分后面再补充。
补充一点,我更多地会从设计层面分析源码,而不会顺序地剖析每个过程的代码。一方面是因为篇幅有限,另一方面是因为我认为这样做更有意义一些。
阅读全文