随笔分类 -  2 ★ Java 框架

摘要:注: 本系列文章已捐赠给 Dubbo 社区,你也可以在 Dubbo "官方文档" 中阅读本系列文章。 1. 简介 在前面的文章中,我们分析了 Dubbo SPI、服务导出与引入、以及集群容错方面的代码。经过前文的铺垫,本篇文章我们终于可以分析服务调用过程了。Dubbo 服务调用过程比较复杂,包含众多 阅读全文
posted @ 2019-01-09 08:30 田小波⊰ 阅读(1162) 评论(3) 推荐(3) 编辑
摘要:1.简介 LoadBalance 中文意思为负载均衡,它的职责是将网络请求,或者其他形式的负载“均摊”到不同的机器上。避免集群中部分服务器压力过大,而另一些服务器比较空闲的情况。通过负载均衡,可以让每台服务器获取到适合自己处理能力的负载。在为高负载的服务器分流的同时,还可以避免资源浪费,一举两得。负 阅读全文
posted @ 2018-11-30 08:57 田小波⊰ 阅读(622) 评论(0) 推荐(2) 编辑
摘要:1.简介 为了避免单点故障,现在的应用至少会部署在两台服务器上。对于一些负载比较高的服务,会部署更多台服务器。这样,同一环境下的服务提供者数量会大于1。对于服务消费者来说,同一环境下出现了多个服务提供者。这时会出现一个问题,服务消费者需要决定选择哪个服务提供者进行调用。另外服务调用失败时的处理措施也 阅读全文
posted @ 2018-11-26 08:33 田小波⊰ 阅读(640) 评论(2) 推荐(1) 编辑
摘要:1. 简介 上一篇文章分析了集群容错的第一部分 服务目录 Directory。服务目录在刷新 Invoker 列表的过程中,会通过 Router 进行服务路由。上一篇文章关于服务路由相关逻辑没有细致分析,一笔带过了,本篇文章将对此进行详细的分析。首先,先来介绍一下服务路由是什么。服务路由包含一条路由 阅读全文
posted @ 2018-11-21 08:39 田小波⊰ 阅读(570) 评论(2) 推荐(0) 编辑
摘要:1. 简介 前面文章分析了服务的导出与引用过程,从本篇文章开始,我将开始分析 Dubbo 集群容错方面的源码。这部分源码包含四个部分,分别是服务目录 Directory、服务路由 Router、集群 Cluster 和负载均衡 LoadBalance。这几个部分的源码逻辑比较独立,我会分四篇文章进行 阅读全文
posted @ 2018-11-19 09:00 田小波⊰ 阅读(470) 评论(2) 推荐(0) 编辑
摘要:1. 简介 在 "上一篇" 文章中,我详细的分析了服务导出的原理。本篇文章我们趁热打铁,继续分析服务引用的原理。在 Dubbo 中,我们可以通过两种方式引用远程服务。第一种是使用服务直联的方式引用服务,第二种方式是基于注册中心进行引用。服务直联的方式仅适合在调试或测试服务的场景下使用,不适合在线上环 阅读全文
posted @ 2018-11-13 08:48 田小波⊰ 阅读(798) 评论(0) 推荐(2) 编辑
摘要:1.服务导出过程 本篇文章,我们来研究一下 Dubbo 导出服务的过程。Dubbo 服务导出过程始于 Spring 容器发布刷新事件,Dubbo 在接收到事件后,会立即执行服务导出逻辑。整个逻辑大致可分为三个部分,第一是前置工作,主要用于检查参数,组装 URL。第二是导出服务,包含导出服务到本地 ( 阅读全文
posted @ 2018-11-01 08:09 田小波⊰ 阅读(954) 评论(5) 推荐(1) 编辑
摘要:1.原理 我在上一篇文章中分析了 Dubbo 的 SPI 机制,Dubbo SPI 是 Dubbo 框架的核心。Dubbo 中的很多拓展都是通过 SPI 机制进行加载的,比如 Protocol、Cluster、LoadBalance 等。有时,有些拓展并非想在框架启动阶段被加载,而是希望在拓展方法被 阅读全文
posted @ 2018-10-15 08:04 田小波⊰ 阅读(677) 评论(0) 推荐(0) 编辑
摘要:1.简介 SPI 全称为 Service Provider Interface,是 Java 提供的一种服务发现机制。SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。正因此特性,我们可以很容易的通过 SPI 机制为我 阅读全文
posted @ 2018-10-09 09:59 田小波⊰ 阅读(1025) 评论(4) 推荐(4) 编辑
摘要:1.简介 我从七月份开始阅读MyBatis源码,并在随后的40天内陆续更新了7篇文章。起初,我只是打算通过博客的形式进行分享。但在写作的过程中,发现要分析的代码太多,以至于文章篇幅特别大。在这7篇文章中,有4篇文章字数超过了1万,最长的一篇文章约有2.7万字(含代码)。考虑到超长文章对读者不太友好, 阅读全文
posted @ 2018-09-11 08:58 田小波⊰ 阅读(938) 评论(0) 推荐(7) 编辑
摘要:1.简介 一般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者自行拓展。这样的好处是显而易见的,一是增加了框架的灵活性。二是开发者可以结合实际需求,对框架进行拓展,使其能够更好的工作。以 MyBatis 为例,我们可基于 MyBatis 插件机制实现分页、分表,监控等功能。由于插件和业务无关 阅读全文
posted @ 2018-08-28 09:00 田小波⊰ 阅读(752) 评论(0) 推荐(1) 编辑
摘要:1.简介 在 Web 应用中,缓存是必不可少的组件。通常我们都会用 Redis 或 memcached 等缓存中间件,拦截大量奔向数据库的请求,减轻数据库压力。作为一个重要的组件,MyBatis 自然也在内部提供了相应的支持。通过在框架层面增加缓存功能,可减轻数据库的压力,同时又可以提升查询速度,可 阅读全文
posted @ 2018-08-27 08:52 田小波⊰ 阅读(955) 评论(4) 推荐(2) 编辑
摘要:1.简介 本篇文章将向大家介绍 MyBatis 内置数据源的实现逻辑。搞懂这些数据源的实现,可使大家对数据源有更深入的认识。同时在配置这些数据源时,也会更清楚每种属性的意义和用途。因此,如果大家想知其然,也知其所以然。那么接下来就让我们一起去探索 MyBatis 内置数据源的源码吧。 MyBatis 阅读全文
posted @ 2018-08-21 09:59 田小波⊰ 阅读(819) 评论(0) 推荐(0) 编辑
摘要:本文速览 本篇文章较为详细的介绍了 MyBatis 执行 SQL 的过程。该过程本身比较复杂,牵涉到的技术点比较多。包括但不限于 Mapper 接口代理类的生成、接口方法的解析、SQL 语句的解析、运行时参数的绑定、查询结果自动映射、延迟加载等。本文对所列举的技术点,以及部分未列举的技术点都做了较为 阅读全文
posted @ 2018-08-20 08:41 田小波⊰ 阅读(1477) 评论(2) 推荐(1) 编辑
摘要:1.简介 在上一篇文章中,我详细分析了 MyBatis 配置文件的解析过程。由于上一篇文章的篇幅比较大,加之映射文件解析过程也比较复杂的原因。所以我将映射文件解析过程的分析内容从上一篇文章中抽取出来,独立成文,于是就有了本篇文章。在本篇文章中,我将分析映射文件中出现的一些及节点,比如 \,\,\, 阅读全文
posted @ 2018-07-30 09:44 田小波⊰ 阅读(1146) 评论(0) 推荐(2) 编辑
摘要:本文速览 由于本篇文章篇幅比较大,所以这里拿出一节对本文进行快速概括。本篇文章对 MyBatis 配置文件中常用配置的解析过程进行了较为详细的介绍和分析,包括但不限于 ,`typeAliases typeHandlers`等,本文的篇幅也主要在对这三个配置解析过程的分析上。下面,我们来一起看一下本篇 阅读全文
posted @ 2018-07-23 08:26 田小波⊰ 阅读(1180) 评论(0) 推荐(2) 编辑
摘要:1.本文速览 本篇文章是我为接下来的 MyBatis 源码分析系列文章写的一个导读文章。本篇文章从 MyBatis 是什么(what),为什么要使用(why),以及如何使用(how)等三个角度进行了说明和演示。由于文章的篇幅比较大,这里特地拿出一章用于介绍本文的结构和内容。那下面我们来看一下本文的章 阅读全文
posted @ 2018-07-17 07:57 田小波⊰ 阅读(1206) 评论(4) 推荐(3) 编辑
摘要:1.简介 在上一篇 "文章" 中,我向大家介绍了 Spring MVC 是如何处理 HTTP 请求的。Spring MVC 可对外提供服务时,说明其已经处于了就绪状态。再次之前,Spring MVC 需要进行一系列的初始化操作。正所谓兵马未动,粮草先行。这些操作包括创建容器,加载 Dispatche 阅读全文
posted @ 2018-07-03 08:09 田小波⊰ 阅读(1348) 评论(1) 推荐(4) 编辑
摘要:1.简介 在前面的文章中,我较为详细的分析了 Spring IOC 和 AOP 部分的源码,并写成了文章。为了让我的 Spring 源码分析系列文章更为丰富一些,所以从本篇文章开始,我将来向大家介绍一下 Spring MVC 的一些原理。在本篇文章中,你将会了解到 Spring MVC 处理请求的过 阅读全文
posted @ 2018-07-02 08:24 田小波⊰ 阅读(2716) 评论(0) 推荐(6) 编辑
摘要:1.简介 本篇文章是 AOP 源码分析系列文章的最后一篇文章,在前面的两篇文章中,我分别介绍了 Spring AOP 是如何为目标 bean 筛选合适的通知器,以及如何创建代理对象的过程。现在我们的得到了 bean 的代理对象,且通知也以合适的方式插在了目标方法的前后。接下来要做的事情,就是执行通知 阅读全文
posted @ 2018-06-25 08:34 田小波⊰ 阅读(3253) 评论(0) 推荐(4) 编辑

点击右上角即可分享
微信分享提示