Dubbo学习总结 - 无码

Dubbo总体的使用和源码分析,都在git上有体现,参考git:https://github.com/apache/incubator-dubbo

本文主要是针对看过知识点,做下总结记录。

Dubbo是SOA服务治理,

简单的说就是对各个接口方法做管理,比如监查,控制等操作。

这些操作不止是API接口,还可以页面配置。

页面配置可以看git:http://dubbo.apache.org/books/dubbo-admin-book/ops/dubbo-ops.html

API(主要是xml参数的配置)可以参考http://dubbo.apache.org/books/dubbo-user-book/demos/thread-model.html

总结下Dubbo的缺点,个人觉得比较明显的地方,列举了出来

a、服务提供方与调用方接口依赖方式太强:调用方对提供方的抽象接口存在强依赖关系,需要严格的管理版本依赖,才不会出现服务方与调用方的不一致导致应用无法编译成功等一系列问题;

 b、服务对平台敏感,难以简单复用:通常我们在提供对外服务时,都会以REST的方式提供出去,这样可以实现跨平台的特点。

Dubbo快速上手使用示例

1. 抽出公共接口

  可以建立个小工程,写个接口,打个小jar包,放到生产者和消费者中

2. 建立生产者

  做两件事:建立producer的xml,和启动producer

3. 建立消费者

  也是做两件事:建立consumer的xml,和启动consumer

CODE:

可以见官网文档:http://dubbo.apache.org/books/dubbo-user-book/quick-start.html

示例:

producer.xml

consumer.xml

两个角色找服务是根据com.alibaba.dubbo.examples.merge.api.MergeService类全路径找的,与application name之类的属性无关

Dubbo开发实现,主要参见http://dubbo.apache.org/books/dubbo-user-book/demos/fault-tolerent-strategy.html

1. 启动时检查

    默认就可以(true)

   

2. 集群容错

    这里提到了Invoker了,白话讲就是对服务的抽象代理。

    分为多种模式(快速失败,失败重试之类的),有不同的介绍

   

3. 负载均衡

    调用机制。针对的是producer和consumer,可以精确Service(类)和方法

4. 线程模型

    针对producer的线程池(不同类型),原理与jdk中的线程池一样

5. 直连提供者

    线上开发没有用。简单说就是Unit Test,绕过zk,测试接口服务。

6. 只订阅

7. 只注册

    个人情况而言,这两个在线上对我用处不大

8. 静态服务

    代码控制producer的启用禁用

9. 多协议

    主要就是可以 长、短连接、http之类的配置

10. 多注册中心

    producer和consumer 可以使用多个注册组件服务

11. 服务分组

    当一个接口有多种实现时,可以用 group 区分。

    简单说就是 consumer调用不同的producer ServiceImpl

12. 多版本

    就是根据不同的pom值,取不同的接口、ServiceImpl

13. 分组聚合

    就是从不同producer的ServiceImpl中,分别取结果

14. 参数验证

    拦截器,注解形势,验证参数的规则(非空,长短...)

15. 结果缓存

    consumer端缓存结果数据

16. 

另外开发拓展参考http://dubbo.apache.org/books/dubbo-dev-book/

======================

Dubbo用到的相关技术简单讲解

Hessian的使用

CODE

web.xml

-

-     helloService

-     com.caucho.hessian.server.HessianServlet

-     

-         service-class

-         com.test.hessian.impl.BaseServiceImpl

-     

-

-

-

-     helloService

-     /helloService

-

 - service

public interface BasicAPI {

public String hello();

}

public class BasicServiceImpl extends HessianServlet implements BasicAPI {

private String _greeting = "Hello, world";

public void setGreeting(String greeting)

{

_greeting = greeting;

}

public String hello()

{

return _greeting;

}

}

 - client

String url = "http://localhost/helloService";

HessianProxyFactory factory = new HessianProxyFactory();

BasicAPI basic = (BasicAPI) factory.create(BasicAPI.class, url);

System.out.println("hello(): " + basic.hello());

Hessian总结

Binary-RPC 是一种和 RMI 类似的远程调用的协议,它和 RMI 的不同之处在于它以标准的二进制格式来定义请求的信息 ( 请求的对象、方法、参数等 ) ,这样的好处是什么呢,就是在跨语言通讯的时候也可以使用。

来看下 Binary -RPC 协议的一次远程通信过程:

1 、客户端发起请求,按照 Binary -RPC 协议将请求信息进行填充;

2 、填充完毕后将二进制格式文件转化为流,通过传输协议进行传输;

3 、接收到在接收到流后转换为二进制格式文件,按照 Binary -RPC 协议获取请求的信息并进行处理;

4 、处理完毕后将结果按照 Binary -RPC 协议写入二进制格式文件中并返回。

=========

Hessian 是由 caucho 提供的一个基于 binary-RPC 实现的远程通讯 library 。

1 、是基于什么协议实现的?

基于 Binary-RPC 协议实现。

2 、怎么发起请求?

需通过 Hessian 本身提供的 API 来发起请求。

3 、怎么将请求转化为符合协议的格式的?

Hessian 通过其自定义的串行化机制将请求信息进行序列化,产生二进制流。

4 、使用什么传输协议传输?

Hessian 基于 Http 协议进行传输。

5 、响应端基于什么机制来接收请求?

响应端根据 Hessian 提供的 API 来接收请求。

6 、怎么将流还原为传输格式的?

Hessian 根据其私有的串行化机制来将请求信息进行反序列化,传递给使用者时已是相应的请求信息对象了。

7 、处理完毕后怎么回应?

             处理完毕后直接返回, hessian 将结果对象进行序列化,传输至调用端。

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

推荐阅读更多精彩内容

  • 0 准备 安装注册中心:Zookeeper、Dubbox自带的dubbo-registry-simple;安装Du...
    七寸知架构阅读 13,995评论 0 88
  • Dubbo是什么 Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式...
    Coselding阅读 17,225评论 3 196
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,693评论 18 139
  • 我活得如此绝望,不知道该干些什么,不知道该去追求什么。我本能地认为自己追求不到。
    清溪浅浅流阅读 114评论 0 0
  • N久不见的好友,突然之间,联系上了,有一些激动,有一些慌张,有一些不知所措………… 没有客套的寒暄,没有假意的问候...
    程程姐阅读 367评论 0 0