关于dubbojava的信息

本文目录一览:

为什么dubbo的java project需要两个

一个是生产者,一个是消费者。生产者就是提高dubbo服务的工程。消费者就是一个web项目,然后这个项目中对业务数据的增删改查都是去调用的生产者工程上的dubbo服务。这样可以有多个web项目去调用生产者上面的dubbo服务。从而实现了对业务处理代码的集中管理和重复利用。

JAVA分布开发dubbo问题

首先要搞清楚三者的概念

1、Dubbo是阿里开源的默认基于TCP协议RPC远程服务调度框架,简单理解就是服务A使用TCP协议调用服务B的Dubbo接口。

2、Zookeeper是注册中心,在这里主要用于管理dubbo服务提供者和消费者的注册信息与服务调度时提供相关依据。

3、Tomcat是WEB应用服务器,可以对外暴露基于HTTP协议的服务接口。

由于用户访问你的应用首先是通过浏览器,也就是基于HTTP协议,所以必须对外暴露HTTP接口作为入口,那么就需要使用WEB应用服务器,比如Tomcat、Jetty、Undertow等等。

关于不启动tomcat,需要哪些配置的问题如下:

Dubbo支持HTTP协议,但原理任然是通过WEB应用服务器暴漏一个端口。从Dubbo本身专注的领域来说,不建议用HTTP协议,所以最终的结论是,服务与服务之间的接口调用使用Dubbo,而对外暴露HTTP接口任然使用WEB应用服务器。

从零开始认识Dubbo

[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

下载地址:

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

截图:

2.MacOS

下载地址:

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

3.Linux

下载地址:

使用方法:下载解压即可,进入解压目录运行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管理页面:

启动后访问

输入账号密码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 java环境下出现这种错误怎么解决?

往service里注入失败了。

改成:ref=”CarServiceImpl”

Dubbo分布式服务框架 服务注册不上:

(1) 检查dubbo的jar包有没有在classpath中,以及有没有重复的jar包

(2) 检查有没有重复的dubbo.properties配置文件

(3) 检查暴露服务的spring配置有没有加载

(4) 检查beanId或beanName有没有重复

(5) 查看有没有错误日志:

cat ~/output/logs/webx.log

(6) 在服务提供者机器上测试与注册中心的网络是否通:

telnet 172.22.3.94 9090

(7) 检查与注册中心的连接是否存在:

netstat -anp | grep 172.22.3.94

(8) 如果是预发布机,检查hosts文件有没有正确绑定:

cat /etc/hosts

(9) 实在不行,开启远程调试:

– (a) 在服务器JVM参数中加入:-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=7001,server=y,suspend=y

注意线上只有7001和8080可以被线下访问,调试端口需用这两个之一,因注册是启动时行为,启动时必需挂起suspend=y

– (b) 在dubbo源码的DefaultRegistryService的registerService()方法中设置断点。

– (c) 在Eclipse的Debug按钮下拉菜单Debug Configurations中的Remote Java Applications中新增远程调试,并设置IP和端口,以及增加dubbo的源码,进行远程Debug调试。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/193367.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-01 15:01
下一篇 2024-12-01 15:01

相关推荐

  • Java 监控接口返回信息报错信息怎么处理

    本文将从多个方面对 Java 监控接口返回信息报错信息的处理方法进行详细的阐述,其中包括如何捕获异常、如何使用日志输出错误信息、以及如何通过异常处理机制解决报错问题等等。以下是详细…

    编程 2025-04-29
  • 使用Python爬虫获取电影信息的实现方法

    本文将介绍如何使用Python编写爬虫程序,来获取和处理电影数据。需要了解基本的Python编程语言知识,并使用BeautifulSoup库和Requests库进行爬取。 一、准备…

    编程 2025-04-28
  • Python爬取网页信息

    本文将从多个方面对Python爬取网页信息做详细的阐述。 一、爬虫介绍 爬虫是一种自动化程序,可以模拟人对网页进行访问获取信息的行为。通过编写代码,我们可以指定要获取的信息,将其从…

    编程 2025-04-28
  • 如何使用Python执行Shell命令并获取执行过程信息

    本文将介绍如何使用Python执行Shell命令并获取执行过程信息。我们将从以下几个方面进行阐述: 一、执行Shell命令 Python内置的subprocess模块可以方便地执行…

    编程 2025-04-28
  • Python实现身份信息模拟生成与查验

    本文将从以下几个方面对Python实现身份信息模拟生成与查验进行详细阐述: 一、身份信息生成 身份信息生成是指通过代码生成符合身份信息规范的虚假数据。Python中,我们可以使用f…

    编程 2025-04-27
  • Dapper使用getschema获取表信息

    本文旨在介绍Dapper中使用getschema获取表信息的方法和注意事项。 一、获取某张表的所有列信息 使用Dapper获取某张表信息,可以使用 `IDbConnection.G…

    编程 2025-04-27
  • 已装备我军的空中信息化作战平台

    本文将会从多个方面详细阐述已装备我军的空中信息化作战平台。 一、平台概述 已装备我军的空中信息化作战平台是一个全新的作战系统,具备实时数据采集、处理、分析、共享的能力。它可以在不同…

    编程 2025-04-27
  • 通过提交信息搜索-使用git

    本篇文章重点讲解如何使用git通过提交信息来搜索。我们将从多个方面介绍如何使用git来搜索提交信息,并提供相应的代码示例以供参考。 一、搜索方式 Git提供了三种搜索方式,分别为:…

    编程 2025-04-27
  • Linux查看系统信息

    一、CPU信息 Linux系统下,查看CPU的信息最常用的命令是lscpu。该命令可以显示CPU架构、核心数量、线程数、缓存大小、CPU频率等信息。例如: lscpu 该命令会输出…

    编程 2025-04-24
  • 软考 信息安全工程师

    软考 信息安全工程师是一项技能型国家级资格认证考试,主要测试考生在信息安全领域的理论知识和实践技能,是证明个人信息安全能力的重要证书。本文将从多个方面对软考 信息安全工程师做详细的…

    编程 2025-04-23

发表回复

登录后才能评论