Dubbo基本概念

Dubbo: 三大外围能力:
面向接口的RPC,智能容错和负载平衡,服务主动注册和发现。
交互流程图:

容器,服务发布者,注册核心,服务消费者,监控核心。

图中能够看到服务发布者基于容器启动,而后发布者向注册核心增加服务,而后消费者让注册核心订阅服务。(初始化实现)在收到注册核心返回的告诉后, 同步 调用近程服务。发布者和消费者同时被监视器监听。

Zookeeper: 是一种树形目录服务,反对变更推送,实用于Dubbo的注册核心


公布端应用@Service(protocol=””)注解实现类,调用端应用@Reference注解调用接口。

服务发布者:包扫描的是实现接口目录。(因为被调用的是接口)

    <!--名称惟一-->
<dubbo:application name="dubbo_provider"/>
    <!-- 注册核心地址 -->
<dubbo:registry protocol="zookeeper" address="zookeeper://127.0.0.1:2181"/>
    <!-- 配置协定与端口 -->
<dubbo:protocol name="dubbo" port="20880"/>
    <!-- Service包扫描-->
<dubbo:annotation package="com.yangfan.dubbodemo.impl"/>

服务消费者:包扫描的是控制器controller(因为被调用的是控制器)

<!--Client包扫描-->
<dubbo:annotation package="com.yangfan.dubbodemo.controller"/>

<!--敞开启动时查看,可使启动程序变得随便。生产环境要设为true-->
<dubbo:consumer check:"false"/>

dubbo反对的协定:dubbo、rmi、hessian、webservice、rest、redis等。
dubbo协定应用场景:小数据大并发;消费者远多于提供者;不适宜大数据传输:如文件,音视频。
dubbo反对的负载平衡:随机、轮询、起码沉闷数、一次性hash,默认为随机。
配置:消费者或提供者任意一方配置即可。
注解中的loadBalance属性。[random|]

解决加上Transactional注解时,dubbo无奈公布服务:
起因:spring事务管制是基于动静代理,而jdk动静代理时创立的代理对象的包名为:com.sun.proxy.$Proxy,使得dubbo公布服务时包扫描无奈进行包匹配。
解决办法:用cglib代替jdk proxy。
即设置proxy-target-class为true,且指定Service增加interfaceClass指定所实现的接口。

<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>

近程服务调用 形式:

  • RPC(基于socket),如:webservice、dubbo
  • Http(基于tcp),springCloud

Http客户端:

  • httpClient
  • okHttp
  • JDK原生URLConnection

Spring提供的RestTemplate封装了上述三种形式,默认应用jdk原生URLConnection。

【腾讯云】轻量 2核2G4M,首年65元

阿里云限时活动-云数据库 RDS MySQL  1核2G配置 1.88/月 速抢

本文由乐趣区整理发布,转载请注明出处,谢谢。

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据