作为一个分布式服务关系框架,dubbo做的非常好,在业界使用很光,所以最近研究了下这个框架。任何框架要研究其原理最好的办法之一就是沿着其运行流程进行追踪,这样就能从上到下,从粗到细对一个系统进行了解。今天,我们要说明的问题就是dubbo如何启动的。
dubbo是基于Spring进行开发的,而且扩展了Spring的XML schema和注解标签,其实这里也就是整个dubbo的切入点。dubbo除去依赖其他的第三方框架外,整个框架只有一个jar包,可谓是精致。在这个jar包的NET-INF目录下有两个文件:spring.handlers和spring.schemas。其中spring.schemas中定义的就是扩展的spring配置标签,而且spring.handlers中定义的就是这些schema的处理类,就是这个类将dubbo组件“插入”到spring这个平台里的。(关于如何自定义spring配置的schema,网上资料很多,这里只简单概括)Spring在启动的时候会扫描MET-INF下所有的spring.handlers等文件,找到其中的标签处理类,并运行其init方法。
这里要插个知识点“spring的启动过程”。spring启动过程,从宏观角度来讲分为两个阶段。第一个阶段完成spring配置文件的解析,或者spring注解的解析最终将这些配置或者注解解析成BeanDefinition对象,然后进入下一个阶段,比如我们经常在spring配置文件中使用的占位符替换工作就是在这个阶段完成的。在第二个阶段中,spring用之前解析好的BeanDefinition对象来完成bean的初始化和组装工作,比如我们使用spring事务时的事务proxy就是这个阶段完成注入到service对象中的。
在这个init方法中,dubbo将自己的标签(application,module,registry,monitor,provider,consumer,protocol,service,reference)处理类注册到spring中,而这些类会完成对自己所负责的标签的解析工作,将标签最终转换为bean的描述对象BeanDefinition并返回给spring,而spring拿到这些标签对象完成bean的初始化、依赖注入(比如注入对RMI端的proxy对象)。
这就是dubbo的宏观启动流程,这个对于理解dubbo框架的原理能起到促进作用,网上也没有明确的文章进行说明,这里做个补充。希望能帮大家解决一些问题。
原文:
相关推荐
1. **Spring框架**:Spring是Java领域中最核心的轻量级框架之一,提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等功能。在本项目中,Spring负责管理对象的生命...
Dubbo服务框架是一个由阿里巴巴开源的高性能Java RPC框架,它在阿里巴巴集团内部广泛使用,并且在开源社区中也获得了极大的关注。本资料包包含了Dubbo服务框架相关的面试题及答案,旨在帮助求职者或者开发者更好地...
Spring Boot以其便捷的启动和管理服务的能力,大大简化了Java应用的开发过程,而Dubbo作为阿里巴巴开源的高性能服务框架,专注于服务治理和服务调用,两者结合可以构建出强大的分布式服务系统。本文将深入探讨如何...
Spring Boot是Spring框架的扩展,旨在简化Spring应用程序的初始设置和配置。它提供了开箱即用的功能,如嵌入式Tomcat服务器、自动配置支持以及starter依赖,使得开发者可以快速地启动和运行项目。 2. **Dubbo**: ...
服务提供者是Dubbo框架中的基础组件,它负责暴露服务,将本地服务以远程调用的方式发布出去。服务提供者通过配置服务元数据(如接口名、版本、方法签名等)来发布服务。 3. **服务消费者(Consumer)** 服务消费...
10. **与Spring的集成**:Dubbo可以方便地与Spring框架集成,利用Spring的依赖注入(DI)和面向切面编程(AOP)能力,简化服务的开发和管理。服务提供者和消费者都可以通过Spring的XML配置或注解进行声明式管理。 ...
**SpringMVC**:是Spring框架的一部分,专门用于处理Web应用程序的请求和响应。它通过DispatcherServlet接收HTTP请求,分发到相应的控制器(Controller),控制器处理请求并调用业务逻辑,最后返回视图(View)给...
8. **dubbo-filter**: 过滤器机制,允许用户自定义业务逻辑,如日志记录、安全校验等,插入到服务调用的链路中。 9. **dubbo-container**: 容器组件,如Spring Container,可以将Dubbo服务以Spring Bean的方式管理...
容器扩展指的是让Dubbo能够运行在不同的容器环境中,如Docker、Spring Boot等。 ### 页面扩展 页面扩展允许在Dubbo管理界面中增加新的页面或功能。 ### 缓存扩展 缓存扩展可以集成不同的缓存系统,以提高数据...
9. **Spring整合**:Dubbo与Spring框架深度集成,使得服务的配置和管理更加便捷。开发者可以通过Spring的XML或注解方式来声明和管理服务。 这个压缩包包含了所有这些模块的实现,使得开发者可以直接在项目中引入,...
- **统计拦截器**:Dubbo在服务调用过程中插入统计拦截器,记录调用信息。 - **心跳检测**:Monitor与服务提供者之间通过心跳机制保持连接,确保数据的实时更新。 - **数据上报**:服务提供者定期将统计信息上报...
首先,`SpringBoot`是一个基于Spring框架的快速开发工具,它简化了Spring应用的初始搭建以及开发过程。SpringBoot通过自动配置、内嵌式Web服务器、 Starter POMs等特性,使得开发者可以快速创建独立运行的、生产级别...
Dubbo服务框架是阿里巴巴开源的一款高性能、轻量级的服务治理框架,它主要应用于分布式环境中的服务调用。这个“Dubbo服务框架面试专题及答案整理文档”包含了关于Dubbo的各种面试常见问题及其解答,旨在帮助求职者...
AOP 是 Spring 框架的另一重要特性,它允许开发者在不修改原有业务逻辑的情况下,插入额外的功能(如日志记录、事务管理)。在描述中提到,项目使用 AOP 来记录日志,这意味着在关键操作前后,会自动插入日志打印,...
【SpringBoot】是Spring框架的一个轻量级衍生版本,简化了Spring应用的初始搭建以及开发过程。它集成了大量常用的第三方库配置,如数据源、JPA、WebSocket等,使得开发者能够快速构建独立运行的、生产级别的Java应用...
《Dubbo面试及答案》上下两册集合了Java开发中Dubbo框架的全面面试知识点,旨在帮助开发者在面试中自信地解答与Dubbo相关的各种问题。以下是对这些知识点的详细阐述: 1. **Dubbo简介** Dubbo是阿里巴巴开源的高...
这份"2019Java面试宝典"是准备Java程序员面试的重要资源,它涵盖了JDK 1.8的集合数据结构、DUBBO服务治理以及Spring框架相关的面试问题。下面,我们将深入探讨这些关键知识点。 1. JDK 1.8 集合数据结构: - ...
Spring Boot框架是一个基于Spring框架的微服务框架,提供了一个快速、灵活的和可扩展的解决方案。 22. Spring Boot框架的优点是什么?Spring Boot框架的优点包括快速开发、自动配置、支持多种数据源等。 Spring ...
* Spring框架的应用场景:企业级应用、数据分析、报表系统等。 Spring Boot框架 * Spring Boot是什么?Spring Boot是一个基于Spring的微服务框架,提供了快速开发和部署的解决方案。 * Spring Boot的优点:快速...
在IT行业中,Dubbo是一个广泛使用的高性能Java RPC框架,由阿里巴巴开源,它在微服务架构中扮演着至关重要的角色。掌握Dubbo的核心概念和技术细节是面试过程中必不可少的一部分。以下是对“dubbo面试题.zip”中可能...