Dubbo的使用

使用dubbo的步骤 (原始的spring mvc):
1, 导入依赖 : pom中引入jar包;
2, 配置服务提供者和服务消费者的配置文件;

在服务提供者这边的配置文件中需要操作:
1, 指定当前服务/应用的名称;
<dubbo:application name="" />
2, 指定注册中心的地址;
<dubbo:registry protocol="" />
3, 指定通信规则 ;
<dubbo:protocol name="dubbo" port="20880" />
4, 暴露服务 ref:指向服务的真正实现对象
<dubbo:service inteface="com.xxxxxxx" />
服务的实现
<bean id="xxxxxx" class="com....">
5, 如果有监控中心,连接监控中心;
<dubbo:monitor protocol="registry" />

在服务消费者这边需要配置:
1, 指定当前的服务/应用的名称;
<dubbo:application name="" />
2, 指定注册中心的地址;
<dubbo:registry address="zookeeper://127.0.0.1:2181" />
3, 声明需要调用的远程服务的接口,生成远程服务代理
<dubbo:reference interface="com.xxxxxx" />
4 , 如果有监控中心,连接监控中心;
<dubbo:monitor protocol="registry">
PS: spring需要扫描到服务消息者相应的包

dubbo中的个性配置设置 :
1 ,启动时服务提供者的检查 ;
2 ,远程调用时的超时时长设置 ,可以配置在全局,也可以配置到接口,也可以配置到方法上(方法级优先,全局最后),在消费方和提供方上,级别一样消息方优先,提供方次之;
3 , 重试次数(不包含首次)设置重连机制(幂等情况下,如数据库的查询,修改,删除可以设置得重试次数,非幂等情况下如数据库的新增是不能设置重试次数的);
4 , 设置接口的新老版本功能调用,通过接口配置指定版本的方式,也可以通配符随机调用,实现灰度发布;
5 , 本地存根的调用,实现远程接口数据的验证或数据缓存;

dubbo的配置文件覆盖策略: 级别 >>> 依次向下
1 , 启动时java虚拟机方式;
2 , application.xml文件(spring的主配置文件);
3 , 为dubbo新建的一个dubbo.perproice文件;

springboot与dubbo的整合方式:
1 , 导入dubbo-starter, 在application.properties配置属性,使用@enbledubbo开启使用基于注解的方式开始(也可以文件中指定包名),@service(暴露服务)和@reference(引用服务);
2 , 导入dubbo-starter , 启动类导入配置文件的方式来使用dubbo,@importresource("文件名");
3 , 使用注解API的方式 (代码的方式);

dubbo的高可用 :通过设计,减少系统不能提供服务的时间
依赖zookeeper, 如查zookeeper注册中心宕机,服务提供者和消费者仍能通过本地缓存通讯;zookeeper保存的是服务提供者的位置信息;可以通过dubbo直连的方式,使用注解@reference(url="指定地址");

dubbo的负载均衡策略 (默认:随机):通过控制台来设置权重
1 ,随机 (权重设置随机概率);2 , 轮循(权重设置轮循比例(先轮循再比权重比例)) ; 3 ,最少的活跃调用次数的随机(访问时的响应时间);4, 一致性hash(根据hash值的不同去到不同的机器);

服务降级 :服务器压力很大时,对一些非主业务服务停止使用,以释放服务器资源,给主业务使用; 服务直接返回为Null或者调用后返回为null(在dubbo管理中心进行设置,屏蔽服务/容错设置);

服务容错 : 导入hystrix 相应jar
启动类添加@enablehystrix开启,服务提供者添加@hystrixcommand产生异常,服务消费者指定fallbackmethod方法执行

RPC原理 :完成远程服务调用
调用流程 :
1, 服务消费方client调用以本地调用方式调用服务 ;
2, client stub接收到调用后负责将方法,参数等组装成能够进行网络传输的消息体;
3, client 代理找到服务地址,并将消息发送到服务端;
4, server 代理收到消息后进行解码(如对象序列化等操作);
5, server 代理根据解码结果调用本地的服务;
6, 本地服务执行并将结果返回给server代理 ;
7, server 代理将返回结果打包成消息并发送至消费方;
8, client代理接收到消息,并进行解码操作;
9, 服务消费方得到最终结果。
RPC框架的目标就是要将2~8这些步骤都封装起来,对使用者来说是透明的但不可见 ;

dubbo底层服务间通讯方式是使用的是netty(非阻塞IO的方式进行);
BIO(阻塞IO):每次都是开启相应线程去执行IO读写操作,而且每个线程要依次处理完才能返回,业务未完成相应的线程是无法得到释放的;服务器无法同时处理大量线程会产生线程阻塞等待;

NIO(非阻塞IO): 会产生多个通道注册到多路复用选择器selector上,通道中都是使用的buffer进行数据传输,selector监听所有通道,在监听的同时会有多个事件,如connect,accept,read,write,相应的事件会产生相应线程去处理相应的操作;

netty的执行过程 :
1, 初始化channel ; 2, channel注册到selector上面 ;3, 轮询accept事件;4,处理accept建立连接channel;5,注册channel到selector上面;6,轮询读写事件;7,处理读写事件 ;

dubbo的原理:
1, 通过spring去读取配置文件,将配置文件中的标签依次封装成相应对象的bean,如:application --->new DubboBeanDefinitionParse(ApplicationConfig.class,true);
2, 通过doExport()向外暴露服务,底层使用到netty方式去监听相应地址端口的服务进行操作 ,而相应的地址和服务被缓存起来使用;
3, 通过doRefer()进行服务引用操作生成相应的服务代理Invoker进行返回,主要是将服务的代理和相应的服务实现之间建立联系;
4, 服务引用返回的Invoker进行一系列的操作,包括服务容错,服务降级,负载均衡,dubbo中的超时配置等操作进行层层包装,得到处理的结果返回给服务消费者,完成服务调用;

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342