使用RPC与Restful接口调用服务

  created  by  鱼鱼 {{tag}}
创建于 2019年05月07日 15:49:56 最后修改于 2019年05月07日 18:33:42

        在SOA和微服务架构中,远程通信是无法避免的,最常用的远程通信有两种方式:

  1. restful的接口

  2. 使用dubbo或是Spring Cloud进行RPC协议远程调用,使用socket通信

RPC的使用

Dubbo

    Dubbo是阿里巴巴提供的服务化治理框架,它省略了API方式调用的API侵入,并且通过一个注册中心实现服务的注册与发现,流程架构图为:

    dubbo需与Spring共同使用,当provider在注册中心注册了一个服务(Sevice)后,consumer中可以申请获取这个Service,它将作为一个bean存在于项目中。

    Dubbo的基本配置:

<!-- 使用dubbo发布服务 -->
	<!-- 提供方应用信息,用于计算依赖关系,无关provider还是consumer -->
	<dubbo:application name="provider" />
	<!-- 注册dubbo的服务
	,注册中心可以有多个 -->
	<dubbo:registry protocol="zookeeper"
		address="192.168.25.137:2181" />
	<!-- 各配置项缺省值设置 -->
	<dubbo:provider retries="0" timeout="20000" />
	<!-- 表明用dubbo协议在20880端口暴露服务 -->
	<dubbo:protocol name="dubbo" port="20880" />
	<!-- 声明需要暴露的服务接口,作为provider -->
	<dubbo:service interface="cn.XXXX.service.ItemService" ref="itemServiceImpl" timeout="600000" />
        <!-- 引用服务配置,用于创建一个远程服务代理,一个引用可以指向多个注册中心。-->
        <dubbo:reference id="demoService" interface="com.unj.dubbotest.provider.DemoService" />

    接下来详细说一下这些配置项的参数,注意有一些共通的参数:

        -Dubbo:service

  • interface:服务接口名,必填项,指向具体的class

  • ref:服务的实现引用(实现类),必填项,类名并且首字母小写

  • group:服务分组

  • version:服务版本

  • registry:指定注册中心,使用","分割多个注册中心的id,"N/A"表示空,默认向所有中心注册

  • timeout:设定超时时间(ms),默认1000

  • retries:重试次数(不重试为0,默认为2)

  • protocol:引用的协议,对应protocol的id

        -Dubbo:reference

  • id:服务的bean id,必填项,作为bean的id

  • interface:服务的接口名,必填项,是服务提供方的接口的首字母小写类名

  • registry、group、version、timeout、retries

  • check:检查是否存在服务,为true会报错,反之忽略

        -Dubbo:protocol

  • name:协议名称,必填项

  • port:端口,默认20880

  • id:协议的id,默认dubbo

        -Dubbo:registry

  • address:注册中心地址,含端口,必填项,默认端口9090

  • port:服务端口,根据协议不同有不同的默认端口

  • protocol:注册中心地址协议,默认dubbo,还有html、local协议

        -Dubbo:application

  • name:当前应用的名称,必填项

        -Dubbo:provider

  • id:可在service的provider中引用id值

参考链接:dubbo的配置及java代码使用Dubbo之XML配置详解

评论区
评论
{{comment.creator}}
{{comment.createTime}} {{comment.index}}楼
评论

使用RPC与Restful接口调用服务

使用RPC与Restful接口调用服务

        在SOA和微服务架构中,远程通信是无法避免的,最常用的远程通信有两种方式:

  1. restful的接口

  2. 使用dubbo或是Spring Cloud进行RPC协议远程调用,使用socket通信

RPC的使用

Dubbo

    Dubbo是阿里巴巴提供的服务化治理框架,它省略了API方式调用的API侵入,并且通过一个注册中心实现服务的注册与发现,流程架构图为:

    dubbo需与Spring共同使用,当provider在注册中心注册了一个服务(Sevice)后,consumer中可以申请获取这个Service,它将作为一个bean存在于项目中。

    Dubbo的基本配置:

<!-- 使用dubbo发布服务 -->
	<!-- 提供方应用信息,用于计算依赖关系,无关provider还是consumer -->
	<dubbo:application name="provider" />
	<!-- 注册dubbo的服务
	,注册中心可以有多个 -->
	<dubbo:registry protocol="zookeeper"
		address="192.168.25.137:2181" />
	<!-- 各配置项缺省值设置 -->
	<dubbo:provider retries="0" timeout="20000" />
	<!-- 表明用dubbo协议在20880端口暴露服务 -->
	<dubbo:protocol name="dubbo" port="20880" />
	<!-- 声明需要暴露的服务接口,作为provider -->
	<dubbo:service interface="cn.XXXX.service.ItemService" ref="itemServiceImpl" timeout="600000" />
        <!-- 引用服务配置,用于创建一个远程服务代理,一个引用可以指向多个注册中心。-->
        <dubbo:reference id="tmpdemoService" interface="com.unj.dubbotest.provider.DemoService" />

    接下来详细说一下这些配置项的参数,注意有一些共通的参数:

        -Dubbo:service

        -Dubbo:reference

        -Dubbo:protocol

        -Dubbo:registry

        -Dubbo:application

        -Dubbo:provider

参考链接:dubbo的配置及java代码使用Dubbo之XML配置详解


使用RPC与Restful接口调用服务2019-05-07鱼鱼

{{commentTitle}}

评论   ctrl+Enter 发送评论