从零开始认识Dubbo

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从零开始认识Dubbo相关的知识,希望对你有一定的参考价值。

参考技术A

[TOC]

1.Dubbo是什么

Apache Dubbo 是一款高性能Java RPC框架。

Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东, 说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者的方式在dubbo上注册) 其核心部分包含:

2.Dubbo能做什么

Dubbo采用全spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。

3.Dubbo架构

节点角色说明:

Provider: 暴露服务的服务提供方。

Consumer: 调用远程服务的服务消费方。

Registry: 服务注册与发现的注册中心。

Monitor: 统计服务的调用次调和调用时间的监控中心。

Container: 服务运行容器。

调用关系说明:

4.Dubbo的使用方法

Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。如果不想使用Spring配置,可以通过API的方式进行调用(注解式,不推荐使用)

下载安装zookeeper注册中心(不建议使用multicast)

1.Windows

下载地址:https://www.apache.org/dyn/closer.cgi/zookeeper/

使用方法:下载解压即可,进入解压目录运行zkServer.cmd启动注册服务中心

截图:

2.MacOS

下载地址:https://www.apache.org/dyn/closer.cgi/zookeeper/

使用方法:下载解压即可,进入解压目录运行zkServer.sh start启动注册服务中心

3.Linux

下载地址:https://www.apache.org/dyn/closer.cgi/zookeeper/

使用方法:下载解压即可,进入解压目录运行zkServer.sh start启动注册服务中心

服务提供者

1.定义服务接口(该接口需单独打包,在服务提供方和消费方共享)

DemoService.java

2.服务提供方实现接口:(对服务消费方隐藏实现)

DemoServiceImpl.java

dubbo-provider.xml:

4.加载Spring配置,启动服务:

Provider.java:

或者使用springBoot启动

服务消费者:

applicationContext-dubbo.xml 中注册自己需要调用的接口。

1.通过Spring配置引用远程服务

dubbo-consumer.xml:

2.加载Spring配置,并调用远程服务:

Consumer.java

或者使用springBoot启动

并添加对应的restful接口提供接口访问

修改对应index页面

3.dubbo管理页面:

启动后访问 http://localhost:8080/dubbo-admin/

输入账号密码root/root

应用页面:

提供者页面:

消费者页面:

服务页面:

测试是否成功,只要看状态是否正常,就ok了 ....

provider-log:

5.使用Dubbo可能遇到的问题

1、org.springframework.beans.factory.BeanCreationException

原因分析:

解决方案

2、org.apache.dubbo.rpc.RpcException

原因分析

解决方案

可能是因为providers没有启动,或者是provider对应暴露的服务被禁用,启动providers或者解除禁用即可

3、java.lang.IllegalStateException

原因分析

解决方案

总结以上两点,通俗点讲,就是重启了工程(可能是因为直接修改代码,工程reload了), 并且,连过了数据库(登录等),才出现了上述报错信息。原因是因为在tomcat重启的时候,之前的tomcat的线程还没有完全关闭,最新启动tomcat就会报这个异常。

4、org.apache.dubbo.remoting.TimeoutException

原因分析

解决方案

在dubbo-provider.xml增加超时时间

以上是关于从零开始认识Dubbo的主要内容,如果未能解决你的问题,请参考以下文章

从零开始手写 dubbo rpc 框架

从零开始认识并操纵Mybatis

从零开始认识iptables

从零开始认识堆排序

dubbo-go 白话文 | 从零搭建 dubbogo 和 dubbo 的简单用例

mq从零开始实现 mq-05-实现优雅停机