聊聊Dubbo(三):架构原理
摘要:无论是Dubbo还是Dubbox,包括在之前《聊聊Dubbo(一):为何选择》中介绍的其他框架,其本质都是远程调用框架,而对于远程调用如果没有分布式的需求,其实是不需要用这么重的框架,只有在分布式的时候,才有Dubbo这样的分布式服务框架的需求,说白了就是个远程服务调用的分布式框架,其重点在于分布式
阅读全文
聊聊Dubbo(四):核心源码-切入Spring
摘要:1 Dubbo配置方式 XML配置:基于 Spring 的 Schema 和 XML 扩展机制实现; 属性配置:加载 classpath 根目录下的 dubbo.properties; API 配置:通过硬编码方式配置(不推荐使用); 注解配置:通过注解方式配置(Dubbo-2.5.7及以上版本支持
阅读全文
聊聊Dubbo(五):核心源码-SPI扩展
摘要:0 前言 站在一个框架作者的角度来说,定义一个接口,自己默认给出几个接口的实现类,同时 允许框架的使用者也能够自定义接口的实现。现在一个简单的问题就是:如何优雅的根据一个接口来获取该接口的所有实现类呢? JDK SPI 正是为了优雅解决这个问题而生,SPI 全称为 (Service Provider
阅读全文
聊聊Dubbo(六):核心源码-Filter链原理
摘要:0 前言 对于Java WEB应用来说,Spring的Filter可以拦截WEB接口调用,但对于Dubbo接口,Spring的Filter就不起作用了。 Dubbo中的Filter实现是 专门为服务提供方和服务消费方调用过程进行拦截,Dubbo本身的大多功能均基于此扩展点实现,每次远程方法执行,该拦
阅读全文
聊聊Dubbo(八):核心源码-容器启动/停止
摘要:1 介绍 服务容器是 一个 standalone 的启动程序,因为后台服务不需要 Tomcat 或 JBoss 等 Web 容器的功能,如果硬要用 Web 容器去加载服务提供方,增加复杂性,也浪费资源。 服务容器 只是一个简单的 Main 方法,并加载一个简单的 Spring 容器,用于暴露服务。
阅读全文
聊聊Dubbo(七):自定义Filter实践
摘要:0 前言 在现行微服务的趋势下,一次调用的过程中涉及多个服务节点,产生的日志分布在不同的服务器上,虽说可以使用ELK技术将分散的日志,汇总到es中,但是如何将这些日志贯穿起来,则是一个关键问题。 如果需要查看一次调用的全链路日志,则一般的做法是通过在系统边界中产生一个 traceId,向调用链的后续
阅读全文
了解Dubbo先了解Netty!
摘要:1、Netty是什么 2、Netty线程模型 3、EventLoopGroup / EventLoop 4、ChannelPipeline 5、Buffer 6、总结 1. Netty是什么 Netty是一个高性能、异步事件驱动的NIO框架,基于JAVA NIO提供的API实现。它提供了对TCP、U
阅读全文
聊聊Dubbo(九):核心源码-服务端启动流程2
摘要:3 ServiceConfig#doExportUrlsFor1Protocol 重点分析 3.1 组装URL所需参数 String name = protocolConfig.getName(); if (name == null || name.length() == 0) { name = "
阅读全文
你真的了解Netty中@Sharable?
摘要:一、前言Netty 是一个可以快速开发网络应用程序的基于事件驱动的异步 网络通讯 框架,它大大简化了 TCP 或者 UDP 服务器的网络编程。Netty 的应用还是比较广泛的,比如阿里巴巴开源的 Dubbo 和 Sofa-Bolt等 框架底层网络通讯都是基于 Netty 来实现的。Netty的设计是
阅读全文
聊聊Dubbo(九):核心源码-服务端启动流程1
摘要:0 前言 Dubbo是阿里巴巴开源的基于Java实现的高性能、透明化的RPC框架。深入了解Dubbo源码,有助于快速定位问题、高效实现自定义拓展。本文以Dubbo服务端初始化过程为例,分析Dubbo怎么从配置转化成可被调用的服务。 以典型的服务端结合Spring配置为例: <!-- 提供方应用信息,
阅读全文