本文源码:GitHub·点这里 || GitEE·点这里

一、Dubbo框架简介

1、框架依赖



图例说明:

1)图中小方块 Protocol, Cluster, Proxy, Service, Container, Registry, Monitor 代表层或模块,蓝色的表示与业务有交互,绿色的表示只对 Dubbo 内部交互。

2)图中背景方块 Consumer, Provider, Registry, Monitor 代表部署逻辑拓扑节点。

3)图中蓝色虚线为初始化时调用,红色虚线为运行时异步调用,红色实线为运行时同步调用。

4)图中只包含 RPC 的层,不包含 Remoting 的层,Remoting 整体都隐含在 Protocol 中。

2、核心角色说明

1)Provider 暴露服务的服务提供方

2)Consumer 调用远程服务的服务消费方(负载均衡)

3)Registry 服务注册与发现的注册中心(监控、心跳、踢出、重入)

4)Monitor 服务消费者和提供者在内存中累计调用次数和调用时间,主动定时每分钟发送一次统计数据到监控中心。

5)Container 服务运行容器:远程调用、序列化

二、与SpringBoot2.0整合

1、核心依赖

<!-- 这里包含了Zookeeper依赖和Dubbo依赖 -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>

2、项目结构说明



结构说明

dubbo-consume:服务消费方
dubbo-provider:服务提供方
dubbo-common:公共代码块,Dubbo接口,实体类

3、核心配置

1)提供方配置

server:
tomcat:
uri-encoding: UTF-8
max-threads: 1000
min-spare-threads: 30
port: 7007
connection-timeout: 5000ms
spring:
application:
name: block-dubbo-provider
# Dubbo 配置文件
dubbo:
application:
name: block-dubbo-provider
registry:
address: 127.0.0.1:2181
protocol: zookeeper
protocol:
name: dubbo
port: 20880
scan:
base-packages: com.boot.consume

2)消费方配置

server:
tomcat:
uri-encoding: UTF-8
max-threads: 1000
min-spare-threads: 30
port: 7008
connection-timeout: 5000ms spring:
application:
name: block-dubbo-consume
# Dubbo 配置文件
dubbo:
application:
name: block-dubbo-consume
registry:
address: 127.0.0.1:2181
protocol: zookeeper

三、演示案例

1、服务远程调用

1)提供方服务接口

  • 注意这里的注解
  • com.alibaba.dubbo.config.annotation.Service
@Service
@Component
public class DubboServiceImpl implements DubboService {
private static Logger LOGGER = LoggerFactory.getLogger(DubboServiceImpl.class) ;
@Override
public String getInfo(String param) {
LOGGER.info("字符参数:{}",param);
return "[Hello,Cicada]";
}
@Override
public UserEntity getUserInfo(UserEntity userEntity) {
LOGGER.info("实体类参数:{}",userEntity);
return userEntity;
}
}

2)消费方接口

  • 注意这里注解
  • com.alibaba.dubbo.config.annotation.Reference
  • org.springframework.stereotype.Service
@Service
public class ConsumeService implements DubboService {
@Reference
private DubboService dubboService ;
@Override
public String getInfo(String param) {
return dubboService.getInfo(param);
}
@Override
public UserEntity getUserInfo(UserEntity userEntity) {
return dubboService.getUserInfo(userEntity);
}
}

2、接口超时配置

该配置可以在服务提供方配置,也可以在服务消费方配置,这里演示在提供方的配置。

注解:timeout

1)服务接口注解

@Service(timeout = 2000)
@Component
public class DubboServiceImpl implements DubboService {
}

2)消费方调用

 @Override
public String timeOut(Integer time) {
return dubboService.timeOut(time);
}

3)测试接口

服务超时抛出异常

com.alibaba.dubbo.remoting.TimeoutException

3、接口多版本配置

1)服务提供方

相同接口提供两个版本实现。注解:version。

版本一:

@Service(version = "1.0.0")
@Component
public class VersionOneImpl implements VersionService {
@Override
public String getVersion() {
return "{当前版本:1.0.0}";
}
}

版本二:

@Service(version = "2.0.0")
@Component
public class VersionTwoImpl implements VersionService {
@Override
public String getVersion() {
return "{当前版本:2.0.0}";
}
}

2)消费方调用

通过@Reference(version)注解,将指向不同版本的接口实现。

@Service
public class VersionServiceImpl implements VersionService {
@Reference(version = "1.0.0")
private VersionService versionService1 ;
@Reference(version = "2.0.0")
private VersionService versionService2 ;
@Override
public String getVersion() {
return versionService1.getVersion();
}
public String version2 (){
return versionService2.getVersion() ;
}
}

以上案例都是参照Dubbo官网的流程编写的,Dubbo许多强大功能都可以参考官网一步步的配置。

四、源代码地址

GitHub地址:知了一笑
https://github.com/cicadasmile/middle-ware-parent
码云地址:知了一笑
https://gitee.com/cicadasmile/middle-ware-parent

SpringBoot2.0 整合 Dubbo框架 ,实现RPC服务远程调用的更多相关文章

  1. (八)整合 Dubbo框架 ,实现RPC服务远程调用

    整合 Dubbo框架 ,实现RPC服务远程调用 1.Dubbo框架简介 1.1 框架依赖 1.2 核心角色说明 2.SpringBoot整合Dubbo 2.1 核心依赖 2.2 项目结构说明 2.3 ...

  2. Spring Boot 2 整合 Dubbo 框架 ,实现 RPC 服务远程调用

    一.Dubbo框架简介 1.框架依赖   图例说明: 1)图中小方块 Protocol, Cluster, Proxy, Service, Container, Registry, Monitor 代 ...

  3. SpringBoot2.0 整合 SpringSecurity 框架,实现用户权限安全管理

    本文源码:GitHub·点这里 || GitEE·点这里 一.Security简介 1.基础概念 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方 ...

  4. SpringBoot2.0 整合 Shiro 框架,实现用户权限管理

    本文源码:GitHub·点这里 || GitEE·点这里 一.Shiro简介 1.基础概念 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理.作为一款安全 ...

  5. SpringBoot2.0 整合 JWT 框架,解决Token跨域验证问题

    本文源码:GitHub·点这里 || GitEE·点这里 一.传统Session认证 1.认证过程 1.用户向服务器发送用户名和密码. 2.服务器验证后在当前对话(session)保存相关数据. 3. ...

  6. SpringBoot2.0 整合 ElasticSearch框架,实现高性能搜索引擎

    本文源码:GitHub·点这里 || GitEE·点这里 一.安装和简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful ...

  7. SpringCloud微服务:基于Nacos组件,整合Dubbo框架

    源码地址:GitHub·点这里 || GitEE·点这里 一.基础组件简介 1.Dubbo框架 Dubbo服务化治理的核心框架,之前几年在国内被广泛使用,后续由于微服务的架构的崛起,更多的公司转向微服 ...

  8. 基于Dubbo框架构建分布式服务(一)

    Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配 ...

  9. 基于Dubbo框架构建分布式服务

    Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配 ...

随机推荐

  1. c++ const问题小记

    int* a = new int; const int* b = a; const int* a = new int; int* b = (int*)a; const int m = 10; int ...

  2. webpack学习_使用source map

    追踪错误和警告,JS提供sourcemap功能,将编译后的代码映射回原始代码(简单来说就是即使打包后,也可以检测知道该错误来自哪个JS文件).如果一个错误来自与b.js,那么source map回明确 ...

  3. elasticsearch的快速安装

    在阿里云服务器快速安装ElasticSearch 1.安装好java的jdk环境 2.使用wget下载elasticsearch安装包,wget的速度比较满,如果等不及的话,可以先下载好安装包再上传解 ...

  4. C# MD5加密字符串

    /// <summary> /// 用MD5加密字符串,可选择生成16位或者32位的加密字符串 /// </summary> /// <param name=" ...

  5. appium+java(八)获取Toast内容信息

    前言 Appium中很经典的问题了,在两年前也就是2017年3月6号07:22分,我才看到appium1.6.3版本的发布,更新内容为Ios上可以实现Toast的获取,而Windows也就是安卓端,还 ...

  6. [ASP.NET Core 3框架揭秘] 依赖注入[3]:依赖注入模式

    IoC主要体现了这样一种设计思想:通过将一组通用流程的控制权从应用转移到框架之中以实现对流程的复用,并按照"好莱坞法则"实现应用程序的代码与框架之间的交互.我们可以采用若干设计模式 ...

  7. Asp.net 学习记录(一)使用asp.net 构建webAPI接口

    此系列使用Asp.net构建前后端分离的博客网站. 创建一个asp.net项目 我们这里使用的是空模板,把Https配置去掉(安全先不配置) 构建webapi接口有很多方法,在这里我们选择最简单的2种 ...

  8. CentOS 7 安装 Nginx 配置反向代理

    Linux使用Nginx Yum存储库上安装Nginx,适用于Red Hat Enterprise Linux和CentOS系统. 1.添加设置Nginx Yum存储库 在CentOS中首次安装Ngi ...

  9. How to: Create a Business Model in the XPO Data Model Designer 如何:在 XPO 数据模型设计器中创建业务模型

    This topic provides step-by-step instructions on how to use the XPO Data Model Designer in XAF appli ...

  10. JVM学习分享-练习题

    package org.fenixsoft.clazz; public class TestClass { private int m; public int inc() { return m + 1 ...