Dubbo之旅--扩展协议

在实际工作中运用dubbo的时候,以上系列的文章基本上能够满足项目的基本需求,当然,对于一些特殊的需求Dubbo可以对其进行扩展,Dubbo拥有者丰富的扩展内容,这次主要将会带领大家去感受一下Dubbo的协议扩展和注册中心扩展.

首先要说的是协议扩展.

为什么要扩展协议呢?什么样的需求需要我们去扩展它?

(1) 不同服务不同协议

需求:不同服务在性能上适用不同协议进行传输,比如大数据用短连接协议,小数据大并发用长连接协议。

consumer.xml

<?xmlversion="1.0"encoding="UTF-8"?>

<beansxmlns=" http://www.springframework.org/schema/beans"

xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"

xmlns:dubbo=" http://code.alibabatech.com/schema/dubbo"

xsi:schemaLocation=" http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://code.alibabatech.com/schema/dubbo

http://code.alibabatech.com/schema/dubbo/dubbo.xsd

">

<dubbo:applicationname="helloworld" />

<dubbo:registryid="registry"address="127.0.0.1:9090"username="admin"password="helloworld"/>

<!-- 多协议配置 -->

<dubbo:protocolname="dubbo"port="20880"/>

<dubbo:protocolname="rmi"port="1099"/>

<!-- 使用dubbo协议暴露服务 -->

<dubbo:serviceinterface="com.alibaba.hello.api.HelloService"version="1.0.0"ref="helloService"protocol="dubbo"/>

<!-- 使用rmi协议暴露服务 -->

<dubbo:serviceinterface="com.alibaba.hello.api.DemoService"version="1.0.0"ref="demoService"protocol="rmi"/>

</beans>

以上例子我们扩展了两个协议,一个是dubbo协议,另一个是rmi协议.读者可以根据自己实际的需求来根据具体的协议来调用具体的服务.

(2) 多协议暴露服务

需求:需要与http客户端互操作

consumer.xml

<?xmlversion="1.0"encoding="UTF-8"?>

<beansxmlns=" http://www.springframework.org/schema/beans"

xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"

xmlns:dubbo=" http://code.alibabatech.com/schema/dubbo"

xsi:schemaLocation=" http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://code.alibabatech.com/schema/dubbo

http://code.alibabatech.com/schema/dubbo/dubbo.xsd

">

<dubbo:applicationname="helloworld" />

<dubbo:registryid="registry"address="127.0.0.1:9090"username="admin"password="helloworld"/>

<!-- 多协议配置 -->

<dubbo:protocolname="dubbo"port="20880"/>

<dubbo:protocolname="hessian"port="8080"/>

<!-- 使用多个协议暴露服务 -->

<dubbo:serviceid="helloService"interface="com.alibaba.hello.api.HelloService"version="1.0.0"protocol="dubbo,hessian"/>

</beans>

通过多个协议暴露服务,相关的消费者可以通过此多种协议来访问此服务.

以上协议扩展的内容在特定的需求下需要进行扩展,接下来的文章我们将会着重来说明注册中心的扩展.注册中心的扩展相对于协议的扩展而言在项目的使用频率更高,而且能够满足我们的各种需求.

时间: 2024-08-04 15:41:33

Dubbo之旅--扩展协议的相关文章

Dubbo之旅--扩展注册中心

在上篇文章中我们介绍了关于协议的扩展,并了解扩展它所需要的需求.本篇主要是对注册中心的扩展进行着重的探索. 同样的问题,为什么我们需要去扩展注册中心的?主要有以下三个需求. (1) 多注册中心注册 需求:xx银行有些服务来不及在上海部署,只在北京部署,而上海的其它应用需要引用此服务,就可以将服务同时注册到两个注册中心. consumer.xml <?xmlversion="1.0"encoding="UTF-8"?> <beansxmlns=&qu

一文详解 Dubbo 中的 http 协议

太阳红彤彤,花儿五颜六色,各位读者朋友好,又来到了分享 Dubbo 知识点的时候了.说到 Dubbo 框架支持的协议,你的第一反应是什么?大概会有 Dubbo 默认支持的 dubbo 协议,以及老生常谈的由当当贡献给 Dubbo 的 rest 协议,或者是今天的主角 http.截止到目前,Dubbo 最新版本演进到了 2.7.3,已经支持了:dubbo,hessain,http,injvm,jsonrpc,memcached,native-thrift,thrift,redis,rest,rmi

Dubbo之旅--管理控制台

到现在为止我们的Dubbo之旅让我们对Dubbo跟注册中心有了初步的认识,接下来要分享的是Dubbo的管理控制台,在实际的项目中非常的有用,尤其是在dubbo服务提供数量逐渐加大的情况下,通过Dubbo管理控制台能够很好的被我们所用,从而让我们更好的使用Dubbo提供的服务. 首先需要准备Dubbo-Admin管理控制台程序,本人是通过项目的形式将控制台导入Eclipse中,通过Eclipse的方式来启动tomcat服务.当然也可以直接将程序的war包放入Tomcat的webapps中,直接启动

Dubbo中SPI扩展机制解析

dubbo的SPI机制类似与Java的SPI,Java的SPI会一次性的实例化所有扩展点的实现,有点显得浪费资源. dubbo的扩展机制可以方便的获取某一个想要的扩展实现,每个实现都有自己的name,可以通过name找到具体的实现. 每个扩展点都有一个@Adaptive实例,用来注入到依赖这个扩展点的某些类中,运行时通过url参数去动态判断最终选择哪个Extension实例用. dubbo的SPI扩展机制增加了对扩展点自动装配(类似IOC)和自动包装(类似AOP)的支持. 标注了@Activat

Dubbo之旅--结果缓存

在上篇文章中我们队Dubbo的扩展进行了一些基本了解.这些扩展能够很好的帮助我们在实际的项目中发挥作用,接下来对于dubbo的一些高级特征,针对特殊情况而进行的处理进行进一步的介绍,这里我们要说的是结果缓存. 为什么要用到结果缓存,主要是用于加速热门数据的访问速度,Dubbo提供声明式缓存,以减少用户加缓存的工作量. 下面我们将通过一个例子来对结果缓存进行一个接触. 1.客户端和服务提供端共用接口类 packagecom.alibaba.dubbo.demo; public interfaceC

Dubbo之旅--集群容错和负载均衡

当我们的系统中用到Dubbo的集群环境,因为各种原因在集群调用失败时,Dubbo提供了多种容错方案,缺省为failover重试. Dubbo的集群容错在这里想说说他是因为我们实际的项目中出现了此类的问题,因为依赖的第三方项目出现异常,导致dubbo调用超时,此时使用的是默认的集群容错方式,而配置的reties='3',这样前段系统连续掉用了三次服务,结果可想而知. 先说一下各节点关系: 这里的Invoker是Provider的一个可调用Service的抽象,Invoker封装了Provider地

Dubbo之旅--问题汇总

在工作和学习的过程中,具体运用Dubbo的时候遇到了很多的问题,这些问题一方面让自己进一步了解所谓的dubbo,另一方面通过对它们的总结和分析能够在工作中加倍的提高效率,接下来将会对遇到的和别人总结的一些常见的问题进行汇总. 1.增加提供服务版本号和消费服务版本号. 这个具体来说不算是一个问题,而是一种问题的解决方案,在我们的实际工作中会面临各种环境资源短缺的问题,也是很实际的问题,刚开始我们还可以提供一个服务进行相关的开发和测试,但是当有多个环境多个版本,多个任务的时候就不满足我们的需求,这时

Dubbo之旅--启动解析

通过之前系列文章我们已经对Dubbo已经有了一个整体的印象,接下来我们从其他角度来进一步了解它.Dubbo通过Spring的加载而启动,本文分析了通过注解方式加载的过程. 1.Schema扩展 通过注解加载dubbo,需要在spring的配置文件中添加: <dubbo:annotationpackage="com.package.to.be.scanned" /> dubbo:annotation是dubbo基于spring的schema扩展. dubbo的schema描述

Dubbo之旅--Provider示例

在本篇文章中我们将通过集体的示例来对Dubbo的提供和消费进行代码层面的认识.这里所介绍的是基本的提供者和消费者通过Spring容器来进行相关的提供和消费的服务.首先看整个示例的项目结构如下: 我们通过Maven的方式来进行示例,其中dubbo-demo-api为提供者所定义的接口,项目结构如下: 此项目里的内容很简单,为服务的一个接口DemoService: /dubbo-demo/dubbo-demo-api/src/main/java/org/pactera/dubbo/DemoServi