Dubbo简介:       

        Dubbo提供了三大核心能力:面向接口的远程方法调用(客户端-服务消费者 服务-服务提供者 接口一定要一样),智能容错和负载均衡,以及服务自动注册(服务提供者启动的时候将自己的地址信息写入注册中心-zookeeper)和发现(消费者启动的时候订阅服务提供者-获取服务提供者地址信息)。Dubbo官网地址:https://dubbo.apache.org/zh/

dubbo快速开发:

采用的:idea2020版本、maven依赖、jdk1.8版本。

注意:我用的是mybatis-plus实现的。

对于dubbo没注册上或者其他的错误需要注意几点:

0.首先打开zookee,否则启动就出错

1.注解导包是dubbo的:service层、并且controller层还使用的是@Reference注解

2.配置文件yml:中的内容是否正确格式。配置连接zookeeper是否正确 。导致服务提供者没注册上(当初就没注意一直没注册上QAQ,查看了代码也没错)

3.实体类对象需要实现序列化否则访问地址会报错:

报错idea报错:

界面报错:

目录

Dubbo简介:

dubbo快速开发:

对于dubbo没注册上或者其他的错误需要注意几点:

0.首先打开zookee,否则启动就出错

1.注解导包是dubbo的:service层、并且controller层还使用的是@Reference注解

2.配置文件yml:中的内容是否正确格式。配置连接zookeeper是否正确 。导致服务提供者没注册上(当初就没注意一直没注册上QAQ,查看了代码也没错)

3.实体类对象需要实现序列化否则访问地址会报错:

0.准备数据库:

1. 1.创建父工程(dubbo_parent),

1.1.1.父工程(pom.xml内容)

2.创建实体对象子模块(dubbo_domain)

2.1.包结构

2.2.User类对象

2.3.实体类对象:pom.xml内容

3.创建服务接口子模块(dubbo_interface)

3.1.包结构:

3.2.包下内容

3.2.1服务接口的service接口:

3.3.服务接口:pom.xml内容

4.创建服务提供者模块(dubbo_provider)

4.1.包结构

4.2.包下内容

4.2.1.dao层的:UserDao接口

4.2.2.service的实现类:UserServiceImpl类

4.2.3.服务提供者模块的启动类:DubboProviderApplication

4.3.服务提供者配置文件:application.yml

4.4.服务提供者的依赖(pom.xml)

5.创建服务消费者模块(dubbo_consumer)

5.1.包结构

5.2.包下内容

5.2.1.controller层:UserController

5.2.2消费者启动类:DubboConsumerApplication

5.2.3.消费者的配置文件:application.yml

5.2.4.消费者的:pom.xml

最后:打开启动zookeeper服务端->启动服务提供者->启动服务消费者->输入网页地址:http://localhost:520/find/3得到效果。

6.Dubbo相关配置:

6.1.超时配置:对于dubbo的调用一般为1秒左右,超时会导致出错。这个一般建议有服务提供者设置:(启动不会报错,访问地址会出错)

6.2.服务接口访问协议:

6.3启动时检查

6.4.负载均衡


0.准备数据库:

create database t_dubbo;CREATE TABLE `t_user` (`id` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(20) DEFAULT NULL,`age` int(11) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;INSERT INTO t_user(username,age) VALUES("张三",18);
INSERT INTO t_user(username,age) VALUES("李四",22);
INSERT INTO t_user(username,age) VALUES("王五",80);

1. 1.创建父工程(dubbo_parent),

1.1.1.父工程(pom.xml内容)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.demon</groupId><artifactId>dubbo_parent</artifactId><packaging>pom</packaging><version>1.0-SNAPSHOT</version><!--子模块--><modules><module>dubbo_domain</module><module>dubbo_interface</module><module>dubbo_provider</module><module>dubbo_consumer</module></modules><!--起步依赖--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.0.RELEASE</version></parent><!--版本依赖--><properties><mysql.version>5.1.47</mysql.version><druid.version>1.0.9</druid.version><lombok.version>1.18.4</lombok.version><mybatis-plus>3.1.1</mybatis-plus></properties><!--依赖--><dependencyManagement><!--mybatis-plus的依赖--><dependencies><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus}</version></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional><version>${lombok.version}</version></dependency><!-- MySql --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${druid.version}</version></dependency></dependencies></dependencyManagement><!--lombok依赖--><dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies>
</project>

2.创建实体对象子模块(dubbo_domain)

2.1.包结构

2.2.User类对象

package com.demon.pojo;import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.io.Serializable;@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("t_user")
public class User implements Serializable {private Integer id;private String username;private Integer age;
}

2.3.实体类对象:pom.xml内容

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>dubbo_parent</artifactId><groupId>com.demon</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>dubbo_domain</artifactId><dependencies><!--mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus</artifactId><version>3.1.1</version></dependency></dependencies></project>

3.创建服务接口子模块(dubbo_interface)

3.1.包结构:

3.2.包下内容

3.2.1服务接口的service接口:

package com.demon.service;import com.demon.pojo.User;public interface UserService {public User findById(Integer id);
}

3.3.服务接口:pom.xml内容

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>dubbo_parent</artifactId><groupId>com.demon</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>dubbo_interface</artifactId><!--依赖实体类对象模块--><dependencies><dependency><groupId>com.demon</groupId><artifactId>dubbo_domain</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies>
</project>

4.创建服务提供者模块(dubbo_provider)

4.1.包结构

4.2.包下内容

4.2.1.dao层的:UserDao接口

package com.demon.dao;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.demon.pojo.User;public interface UserDao extends BaseMapper<User> {}

4.2.2.service的实现类:UserServiceImpl类

package com.demon.service.imp;import com.demon.dao.UserDao;
import com.demon.pojo.User;
import com.demon.service.UserService;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.beans.factory.annotation.Autowired;@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserDao userDao;public User findById(Integer id) {System.out.println("调用了provider1,8888端口.......");return userDao.selectById(id);}
}

4.2.3.服务提供者模块的启动类:DubboProviderApplication

package com.demon;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
@MapperScan("com.demon.dao")
public class DubboProviderApplication {public static void main(String[] args) {SpringApplication.run(DubboProviderApplication.class,args);}
}

4.3.服务提供者配置文件:application.yml

server:port: 1314
#数据库来源
spring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/java_dubbo?useUnicode=true&characterEncoding=utf8username: rootpassword: root
dubbo:application:name: dubbo-provider
#zookeeper的地址registry:address: zookeeper://127.0.0.1:2181
#扫描servicescan:base-packages: com.demon.service
#超时调用:dubbo调用默认1秒钟超时。
#建议由服务提供方设置超时,因为一个方法需要执行多长时间,服务提供方更清楚。provider:timeout: 3000
#配置服务提供者的协议和端口protocol:name: dubboport: 8888
#mybatis-plus的配置
mybatis-plus:global-config:db-config:#跟随数据库主键自增id-type: auto

4.4.服务提供者的依赖(pom.xml)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>dubbo_parent</artifactId><groupId>com.demon</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>dubbo_provider</artifactId><dependencies><!--依赖--><dependency><groupId>com.demon</groupId><artifactId>dubbo_interface</artifactId><version>1.0-SNAPSHOT</version></dependency><!--mybatsi-plus依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId></dependency><!--springboot基础起步依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--dubbo的起步依赖--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.5</version></dependency><!-- zookeeper的api管理依赖 --><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>4.2.0</version></dependency><!-- zookeeper依赖 --><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.12</version></dependency>
</dependencies>
</project>

5.创建服务消费者模块(dubbo_consumer)

5.1.包结构

5.2.包下内容

5.2.1.controller层:UserController

package com.demon.cotroller;import com.demon.pojo.User;
import com.demon.service.UserService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;@RestController
public class UserController {@Referenceprivate UserService userService;@GetMapping("/find/{id}")public User findById(@PathVariable("id") Integer id){User user = userService.findById(id);return user;}
}

5.2.2消费者启动类:DubboConsumerApplication

package com.demon;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class DubboConsumerApplication {public static void main(String[] args) {SpringApplication.run(DubboConsumerApplication.class,args);}
}

5.2.3.消费者的配置文件:application.yml

server:port: 520
dubbo:application:name: dubbo_consumer
#zookeeper的地址registry:address: zookeeper://127.0.0.1:2181
#启动时检查:不设置需要先启动服务提供者才能启动消费者不然会报错consumer:check: false

5.2.4.消费者的:pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>dubbo_parent</artifactId><groupId>com.demon</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>dubbo_consumer</artifactId><dependencies><dependency><groupId>com.demon</groupId><artifactId>dubbo_interface</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--dubbo的起步依赖--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.5</version></dependency><!-- zookeeper的api管理依赖 --><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>4.2.0</version></dependency><!-- zookeeper依赖 --><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.12</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.8</version></dependency></dependencies>
</project>

最后:打开启动zookeeper服务端->启动服务提供者->启动服务消费者->输入网页地址:http://localhost:520/find/3得到效果。

注意:启动服务消费者和服务提供者有启动先后顺序,如果没设置启动时检查为false(这里设置了false)先启动服务消费者会报错。

6.Dubbo相关配置:

6.1.超时配置:对于dubbo的调用一般为1秒左右,超时会导致出错。这个一般建议有服务提供者设置:(启动不会报错,访问地址会出错)

例如设置服务提供者睡眠1.5秒:

出错访问的页面:

修改服务提供者或者服务消费者yml的配置:

dubbo:#修改的是服务提供者provider: #如果是服务消费者为consumer:timeout: 3000

6.2.服务接口访问协议:

服务提供方可以配置许多种不同的协议:Dubbo支持的协议有:dubbo、rmi、hessian、http、webservice、rest、redis等。

可以去官方文档查看更多:Dubbo官网地址:https://dubbo.apache.org/zh/

服务提供者的配置文件:

#配置服务提供者的协议和端口protocol:name: dubboport: 8888

6.3启动时检查

如果想不管服务提供者是否启动都可以先启动服务消费者可以配置下面的。

开发阶段check值设置为false,生产环境改为true。

如果设置为true,启动服务消费者,会抛出异常,表示没有服务提供者

消费者的:yml配置

#启动时检查:不设置需要先启动服务提供者才能启动消费者不然会报错consumer:check: false

6.4.负载均衡

负载均衡(Load Balance):其实就是将请求分摊到多个操作单元上进行执行,从而共同完成工作任务。 在集群负载均衡时,Dubbo 提供了多种均衡策略(包括随机random、轮询roundrobin、最少活跃调用数leastactive),缺省【默认】为random随机调用。

服务消费者yml配置

dubbo:consumer:loadbalance: roundrobin

正式生产环境中,服务提供者部署到多台机器上,不需要修改任何代码,只需要部署到不同机器即可测试。

增加一个服务提供者,提供相同的服务;

如果是单机测试,必须通过修该提供者的dubbo协议端口和web服务端口来进行部署。

然后可以通过service接口的实现类里面的输出语句不同。在访问地址查看不同。

关于dubbo快速开发和服务提供者无法注册上注意点相关推荐

  1. 企业级管理软件快速开发平台-在同一个数据库上进行多个系统开发

    前几篇博介绍了极致业务基础平台的框架及一些开发效果详细见下面的地址 极致业务基础平台简要介绍: http://www.cnblogs.com/Jeez_JBF/archive/2010/07/29/J ...

  2. java企业级快速开发平台jeeadminlte(jeesite大胖老师修改版)

    JeeAdminlte码云下载地址:https://gitee.com/dptc/jeeadminlte 此JeeAdminlte是大胖老师在开源平台企业级Java快速开发平台jeesite的基础上进 ...

  3. 如何快速开发一个 Dubbo 应用?(含沙龙报名)

    阿里妹导读:在分布式系统中,远程调用是最基础也是最重要的基石.历史上,曾经先后出现过 CORBA.RMI.EJB.WebService 等技术和规范,在服务化以及微服务日趋流行的今天,更多的被广泛使用 ...

  4. 如何快速开发一个 Dubbo 应用

    转载自   如何快速开发一个 Dubbo 应用 导读:在分布式系统中,远程调用是最基础也是最重要的基石.历史上,曾经先后出现过 CORBA.RMI.EJB.WebService 等技术和规范,在服务化 ...

  5. (Java每日一谈:第四日——幸福的四象限)主流框架:Dubbo基础实战篇--Dubbo快速入门

    在昨天的Dubbo基础篇中,小编对Dubbo的相关基础理论知识进行了一个详细的解释,如果大家对这一块的知识感到好奇,推荐大家可以去阅读一下小编昨天写的Dubbo相关知识点,今天小编会进行Dubbo实用 ...

  6. Laravel5.4快速开发简书网站——1-1课程概要介绍

    大家好,我是讲师:轩脉刃,这次给大家带来的课程是基于Laravel5.4完成类简书的文章社区, 本次课程呢采用全新的Laravel5.4开发框架,从基础功能讲起,先带领大家完成核心的模块.然后围绕核心 ...

  7. Jnpf 快速开发平台框架源码 java+Netcore版本 3.3.3 3.4.1 旗舰版企业版

    疫情之下,数字经济新动能加速崛起.随着制造业数字化转型加快,传统企业对于数字化工具需求愈发凸显,制造业最大的问题是他的业务包含了商品的生产.加工和销售,而每个环节无法统一监督管理,导致各种账目混乱,库 ...

  8. 全网开源快速开发平台,低代码平台,企业级开发平台,开源系统,私活平台,学习平台,毕设平台,企业级应用开发平台资源整理

    个人比较喜欢开源技术,经常在开源社区寻找一些优质的开源项目. 这是一个巨人的时代,唯有站在巨人的肩膀,与巨人同行,我们才能够走的更快. 现在技术迭代升级速度比较快,大学上学时,热火朝天的还在宣扬SSM ...

  9. Dubbo -- Dubbo快速入门代码编写

    文章目录 1. Dubbo快速入门代码编写 1.1 需求分析 1.2 项目和模块创建 1.3 导入相关依赖 1.4 编写提供服务的接口 1.5 编写调用服务的程序 1.6 安装dubbo-servic ...

最新文章

  1. 程序员自学编程创立 GREE,推出世界上第一款手机社交游戏,白手起家成为亚洲最年轻的巨富...
  2. Jlink-V9详细制作材料(带串口+SW)----小白的福音
  3. expo运行android studio,一、用Expo开发react-native :快速开始
  4. [SQL Native Client] 命名管道提供程序:无法打开与 Sql Server 的连接[2]
  5. 华为MDC调试工具使用介绍
  6. 卸载python27_27. 移除元素(Python)
  7. Linux 基本操作命令
  8. abd串口工具使用教程_adb调试工具包(adb调试程序)
  9. 嵌入式开发:优化嵌入式软件的7个技巧
  10. 极路由器1S,HC5661A刷breed再刷老毛子华硕
  11. 淘宝逛逛ODL模型优化总结
  12. 美团智能支付稳定性测试实战
  13. java丧尸危机全城爆发_伤尸危机-全城爆发BT版
  14. 5分钟给商品建立3D模型,我是如何做到的?
  15. fbm是什么意思_fba是什么意思
  16. 2022年危险化学品经营单位主要负责人最新解析及危险化学品经营单位主要负责人考试资料
  17. web前端实训作业 html+css+javascript 水果超市网页设计实例 企业网站制作
  18. Android Studio修改AVD虚拟模拟器路径
  19. 15.三层交换与二层交换、策略路由与路由策略
  20. 【读书笔记】《成为-米歇尔.奥巴马自传》读后感

热门文章

  1. 如何使用ansible管理多台远程服务器
  2. 《赐我》-一只白羊 同步歌词
  3. 汽车之家和易车该如何走下去?
  4. endl 和 \n 的区别
  5. ALV字段目录lvc_s_fcat
  6. HUD玻璃检测工装背景简介
  7. 解绑ip linux,H3C 批量解绑 IP 地址绑定
  8. ThinkPHP中查询一个时间段的数据
  9. 越南语常用的40句口语
  10. 助力无人船舶,开拓水上智能