Dubbo配置参数详解-generic

Dubbo配置参数详解-generic,第1张

画外音:目前Dubbo在开源中国举办的2019年度最受欢迎中国开源软件中排名第3名,支持Dubbo的朋友可以去投票哇。 2019年度最受欢迎中国开源软件

Consumer端正常调用Dubbo服务时,一般都需要服务提供方提供一个jar包,只有在项目中引入该jar包,才能调用相关服务;能不能向>1 Dubbo出现的背景

随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。

· 我们传统的网站结构为单一应用架构,也就是把所有的功能都放在一个项目工程里,部署在一台服务器上。

· 当访问量越来越大,我们需要通过不断添加服务器的方式来应对越来越大的访问量,或是将应用拆分成几个不相干的应用部署在不同的服务器上。

· 随着用户数的增加及业务的发展,拆分的应用越来越多,应用之间的交互及数据传输不可避免,则将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。

· 当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。

2 系统发展进化理论

系统发展经历过两个阶段:

· 集中式系统

就是把所有的程序、功能、模块集中到一个项目中,部署在一台服务器上,从而对外提供服务。

· 分布式系统

分布:在一定范围内分散开

分布式系统就是把所有的程序、功能拆分成不同的子系统,部署在多台不同的服务器上,这些子系统相互协作共同对外提供服务,对于用户而言并不知道后台是如何交互的,使用上和集中式系统一样。

3 认识集群及分布式

· 什么是集群?

就是将相同的程序、功能部署在两台或是多台服务器上,这些服务器对外提供的功能是完全一样的,集群就是通过不同横向扩展增加服务器的方式,以提高服务的能力。

· 什么是分布式?

就是将两个或多个程序、功能分别运行在两台或多台主机服务器上,这些服务对外提供的功能并不一样,它们通过相互协作最终完成某一服务或是功能。

简单来讲:如果两台服务器部署的程序完全一样则是集群,不一样就是分布式;分布式中的每一个节点都可以做成集群,而集群并不一定就是分布式。

4 Dubbo简介

Dubbo是一个分布式、高性能、透明化的RPC服务架构,提供服务自动注册、自动发现等高效服务治理方案。

Dubbo是阿里巴巴公司开源的一个高性能优秀的。

Dubbo官方网站:>

最近一直在看dubbo的源码部分。在阅读的时候,需要有一个入手点,才能一点一点的进行下去。自己在研究的时候,发现思绪比较乱,于是就以 芋道源码 为基础,一点一点的啃食。芋道源码是直接从dubbo的配置和一些核心的API开始讲起,是从dubbo已经启动的过程作为开始节点,而这些核心 API 与 Spring 的之间的关系被省略了,这些东西对我来说属于前置的知识点,所以花了比较长的时间又从 Dubbo 的核心 API 倒着往前看。

在阅读 Dubbo 时,发现前置知识越来越多,如:Spring 的 refresh 中的一些核心点,Spring 中 bean 的生命周期,BeanFactory 与 FactoryBean 的区别等。所以这些前置知识花了特别多的时间去补。所幸,虽然补前置知识虽然时间长,但是性价比还是可以的。Dubbo 是依赖于Spring 的上下文环境的框架,其他依赖于 Spring 的框架也是相同的道理。Spring 的一些对外的扩展点,读过之后也会心中有数。

1、本篇主要是描述了 Dubbo 在 Spring 创建上下文的时候,是如何从创建,到能完整提供一个RPC调用能力的一些相关点。
2、由于源码比较多,直接贴断点也太过臃肿,所以仅仅贴一些关键点来概括整个流程。
3、本文是依赖于前面的 dubbo 项目进行断点分析,项目结构可以参照这里。项目中 dubbo 的配置方式是 xml 文件,所以本篇主要说 xml 配置方式。其他方式道理相同,并不是问题的关键点。

4、项目启动的是 dubbo-user 服务,所以 UserService 为 dubbo:service,OrderService 为 dubbo:reference。

下图为Spring 启动时是如何加载 Dubbo 的,其中省略了大量过程,只保留了一些关键节点,省略的部分可以略微脑补一下。

整个流程的入口是 Spring 的 refresh 方法。每个方法都有比较深的调用栈。与 Dubbo 有关的入口是 refresh 中的 invokeBeanFactoryPostProcessors 方法

这个方法是执行 beanFactory 的一些后处理 *** 作,其核心流程为在Spring容器中找出实现了BeanFactoryPostProcessor接口的processor并执行。Spring容器会委托给PostProcessorRegistrationDelegate的invokeBeanFactoryPostProcessors方法执行。
ConfigurationClassPostProcessor 是比较核心的类,在这里我们关注一下这个类。它的作用是对项目中配置的类进行处理。具体处理可以分为几步:

在加载类信息时,spring 会去用各种方式扫到注册的 bean 信息。我们在 spring 中注册的 bean,逃不出这个方法的扫描方式。 核心方法是:

扫描之后,会将扫描到的 bean 注册到 beanDefinitionMap 中

首先是此处 orgspringframeworkbeansfactoryxmlDefaultBeanDefinitionDocumentReader#parseBeanDefinitions,可以看出方法会以配置文件根节点起,遍历所有子节点。

其次是这里 orgspringframeworkbeansfactoryxmlBeanDefinitionParserDelegate#parseCustomElement(orgw3cdomElement, orgspringframeworkbeansfactoryconfigBeanDefinition), 此方法会通过解析出来的节点,获取对应的 Spring 的 namespaceUri ,进而获取对应的配置文件处理器。
此处 ele 参数实际值为 <dubbo:service />,namespaceUri 为 >dubbo的组成,使用的场景,有什么优势
关于dubbo的使用场景,这个要从系统的演变开始将起,既然dubbo的使用很多是在电商系统中,那么就从电商系统的演变开始讲起。
一个简单的电商网站说起,它可能包含如下的几个模块和功能,如首页、detail页、list页、下单页、支付页以及后台管理等页面和功能。单一的系统架构,使得在开发过程中,占用的资源越来越多,而且随着流量的增加使得维护起来越来越难以维护。

Dubbo :是一个rpc框架,soa框架

作为RPC:支持各种传输协议,如dubbo,hession,json,fastjson,底层采用mina,netty长连接进行传输!典型的provider和cusomer模式!
作为SOA:具有服务治理功能,提供服务的注册和发现!用zookeeper实现注册中心!启动时候服务端会把所有接口注册到注册中心,并且订阅configurators,服务消费端订阅provide,configurators,routers,订阅变更时,zk会推送providers,configuators,routers,启动时注册长连接,进行通讯!proveider和provider启动后,后台启动定时器,发送统计数据到monitor!提供各种容错机制和负载均衡策略!!

描述一个服务从发布到被消费的详细过程:
一个服务的发布暴露过程:
首先设置一个项目的别名,然后是定义注册中心和设定传输协议,之后定义服务名!服务接口以jar形式导入到provider!
一个服务发布暴露首先由spring的spacehander 把相关的xml或者注解全部转化为springBean,之后通过ServiceConfigexerp()方法把bean传化为传输所需的url和参数注册到注册中心,发布后provder端的ref(helloImpl)通过protocl(传输协议,如dubboprotocl,hessionprotocl)转化为Invoker对象,即调用信息,包括类,方法,参数等等,再通过proxy *** 作(代理)如jdkproxy代理转为为Exporter对象,这就是整个的服务暴露过程!
消费过程:
一个Renfence类,通过RenfenceConfig的init 调用proxy的refer方法生产一个invoker,invoker再通过proctol转化成具体的ref(hello),进行消费
首先 ReferenceConfig 类的 init 方法调用 Protocol 的 refer 方法生成 Invoker 实例(如上图中的红色部分),这是服务消费的关键。接下来把 Invoker 转换为客户端需要的接口(如:HelloWorld)

具体参见
>

Dubbo是阿里开源项目,国内很多互联网公司都在用,已经经过很多线上考验。

Dubbo内部使用了 Netty、Zookeeper,保证了高性能高可用性,使用Dubbo可以将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,可用于提高业务复用和灵活扩展,使前端应用能更快速的响应多变的市场需求。

另外,分布式架构可以承受更大规模的并发流量。

Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起。

当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本。

缺点:单一的系统架构,使得在开发过程中,占用的资源越来越多,而且随着流量的增加越来越难以维护

垂直应用架构解决了单一应用架构所面临的扩容问题,流量能够分散到各个子系统当中,且系统的体积可控,一定程度上降低了开发人员之间协同以及维护的成本,提升了开发效率。

缺点:但是在垂直架构中相同逻辑代码需要不断地复制,不能复用。

当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心

随着服务化的进一步发展,服务越来越多,服务之间的调用和依赖关系也越来越复杂,诞生了面向服务的架构体系(SOA),也因此衍生出了一系列相应的技术,如对服务提供、服务调用、连接处理、通信协议、序列化方式、服务发现、服务路由、日志输出等行为进行封装的服务框架。

课程目标:

了解远程调用PRC的概念,分布式应用为什么使用RPC, 基于PRC协议的Dubbo的使用。Dubbo框架的特点,框架的组件;基于Dubbo服务提供者,消费者,注册中心Zookeeper的分布式应用的开发部署, Dubbo的负载均衡实现。微服务的开发 Spring + Dubbo + Zookeeper + Linux

适用人群:

适合有Java基础,要进入到互联网行业的开发人员,微服务开发。

动力节点的Dubbo课程以实战为主讲解,从基础开始手把手式地详细讲解RPC概念,PRC在分布式应用的重要作用。Dubbo分布式服务框架的应用入门基础。传统应用到分布式以及微服务的转变思想。Dubbo协议的特点。Dubbo分布式服务的详细开发流程、Dubbo服务的实施部署,Zookeeper的服务管理等。

课程目录:

•001dubbo视频教程-dubbo前言

•002dubbo视频教程-dubbo概述

•003dubbo视频教程-初识dubbo

•004dubbo视频教程-dubbo前世今生

•005dubbo视频教程-dubbo结构概述-1

•006dubbo视频教程-dubbo结构概述-2

•007dubbo视频教程-dubbo的使用-直连方式-1

•008dubbo视频教程-dubbo的使用-直连方式-2

•009dubbo视频教程-dubbo的使用-直连方式-3

•010dubbo视频教程-dubbo的使用-直连方式-4

•011dubbo视频教程-dubbo服务化最佳实践-概述

•012dubbo视频教程-dubbo服务化最佳实践-1

•013dubbo视频教程-dubbo服务化最佳实践-2

•014dubbo视频教程-dubbo服务化最佳实践-3

•015dubbo视频教程-dubbo服务化最佳实践-4

•016dubbo视频教程-dubbo服务化最佳实践-5

•017dubbo视频教程-注册中心概述

•018dubbo视频教程-windows下安装及配置zookeeper

•019dubbo视频教程-linux下安装及配置zookeeper

•020dubbo视频教程-内容回顾

•021dubbo视频教程-dubbo实例-使用注册中心-1

•022dubbo视频教程-dubbo实例-使用注册中心-2

•023dubbo视频教程-dubbo实例-使用注册中心-3

•024dubbo视频教程-dubbo实例-使用注册中心-4

•025dubbo视频教程-dubbo实例-使用注册中心-5

•026dubbo视频教程-dubbo实例使用linux注册中心

•027dubbo视频教程-dubbo实例-版本号version的使用-1

•028dubbo视频教程-dubbo实例-版本号version的使用-2

•029dubbo视频教程-dubbo实例-版本号version的使用-3

•030dubbo视频教程-dubbo实例-版本号version的使用-4

•031dubbo视频教程-解决学生问题

•032dubbo视频教程-dubbo配置中常见属性

•033dubbo视频教程-dubbo的高稳定性

•034dubbo视频教程-监控中心-1

•035dubbo视频教程-监控中心-2

Dubbo实战视频教程:

>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13412060.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-31
下一篇 2023-07-31

发表评论

登录后才能评论

评论列表(0条)

保存