首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >8 快速入门 dubbo

8 快速入门 dubbo

作者头像
用户7630333
发布于 2023-12-07 10:49:04
发布于 2023-12-07 10:49:04
22200
代码可运行
举报
文章被收录于专栏:look Javalook Java
运行总次数:0
代码可运行

8 快速入门 dubbo

所需资料 https://wwn.lanzoub.com/b01jp495e 密码:7plr

注册中心 Zookeeper

安装 zookeeper

  • 官方推荐使用 zookeeper 注册中心
  • 注册中心负责服务地址的注册与查找,相当于目录服务;
  • 服务提供者和消费者只在启动时与注册中心交互,注册中不转发请求,压力较小;
  • Zookeeper 是 apache hadoop 的子项目,是一个树形的目录服务,支持变更推送,适合作为 dubbo 的服务注册中心,工业强度较高,可用于生产环境;

入门 demo 的架构

注意

如果在粘贴这些web.xml 或者pom.xml里面build里面的标签发送这样的报错提示,注意哦 这可能不是错误,不会影响到我们项目的运行。

服务提供者

1、一个空的maven项目 2、提供一个服务接口即可

项目目录结构

图中红框的需要我们创建

提供方的pom.xml

各种依赖请严格按照下面的版本

  • 记得要更新pom文件哦!
  • 当dependencies中出现依赖的版本信息 说明依赖引入成功了
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring.version>5.0.6.RELEASE</spring.version>
    </properties>

    <packaging>war</packaging>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--dubbo -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.5.7</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
        </dependency>
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>
        <dependency>
            <groupId>javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.11.0.GA</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <configuration>
                    <port>8001</port>
                    <path>/</path>
                </configuration>
                <executions>
                    <execution>
                        <!-- 打包完成后,运行服务 -->
                        <phase>package</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
提供方接口
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public interface HelloService {
    String sayHello(String name);
}
暴露的提供方实现

@Service 这个注解不是spring的哦

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@com.alibaba.dubbo.config.annotation.Service
public class HelloServiceImpl implements HelloService {
    @Override
    public String sayHello(String name) {
        return "Hello," + name + "!!!";
    }
}
服务提供方的配置文件spring.xml
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    <!--1.服务提供方在zookeeper中的“别名”-->
    <dubbo:application name="dubbo-server"/>
    <!--2.注册中心的地址-->
    <dubbo:registry address="zookeeper://192.168.77.132:2181"/>
    <!-- 让监控 去注册中心 自动找服务 -->
    <dubbo:monitor protocol="registry"/>
    <!--3.扫描类(将什么包下的类作为服务提供类)-->
    <dubbo:annotation package="service.impl"/>
</beans>
提供方的web.xml
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         id="WebApp_ID" version="3.1">
<!--使用上下文监听器-初始化项目环境-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/spring.xml</param-value>
    </context-param>
</web-app>

服务消费方

项目目录结构
消费方的pom.xml

与服务方一致,只需要修改tomcat的端口为8002

消费方的Controller

因为我们是通过浏览器去访问的,所以要创建controller层,提供对外访问的接口

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@RestController
public class HelloAction {
    @com.alibaba.dubbo.config.annotation.Reference
    private HelloService hs;

    @RequestMapping("hello/{name}")
    @ResponseBody
    public String hello(@PathVariable String name) {
        return hs.sayHello(name);
    }
}
消费方的接口

注意:

  • controller中要依赖HelloService,所以我们创建一个接口;
  • 这里是消费方,不需要实现,因为实现会让服务方为我们搞定!跟8001服务提供方的线程远程通信
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public interface HelloService {
    String sayHello(String name);
}
消费方的springmvc.xml
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    <!--Dubbo的应用名称,通常使用项目名 -->
    <dubbo:application name="dubbo-consumer"/>
    <!--配置Dubbo的注册中心地址 -->
    <dubbo:registry address="zookeeper://192.168.77.132:2181"/>
    <!-- 让监控 去注册中心 自动找服务 -->
    <dubbo:monitor protocol="registry"/>
    <!--配置Dubbo扫描类,将这个类作为服务进行发布 -->
    <dubbo:annotation package="controller"/>
</beans>
消费方的web.xml
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         id="WebApp_ID" version="3.1">
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/spring.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

启动测试

还是跟是实现zookeeper实现分布式锁一样启动哦

  • 我们在这里配置了打包之后直接运行
  • 所以我们执行打包命令即可,如果出错,先执行clean在执行package

如果执行出错,或者访问失败可以去查找以下问题

  • @service注解是否是dubbo的
  • linux服务器防火墙是否关闭
  • zookeeper的注册地址是否有误 linux查看本机ip 【ip address】
  • 如果想看到自己的服务,可以先搭建dubbo的可视化工具,文章地址

当出现端口地址 且上面没有报错信息时,说明启动成功

可以看到我们的请求成功了

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
记录一次dubbo项目实战
安装zookeeper,解压(zookeeper-3.4.8.tar.gz)得到如下:
烂猪皮
2018/11/23
1K0
Maven+SpringMVC+Dubbo 简单的入门demo配置
哎_小羊
2018/01/02
3.2K0
Maven+SpringMVC+Dubbo 简单的入门demo配置
分布式架构Duboo+Zookeeper的基础使用
SOA(Service-Oriented Architecture)它是一种支持面向服务的架构。(分布式架构)
JokerDJ
2023/11/27
1970
分布式架构Duboo+Zookeeper的基础使用
Spring Security 基础入门
  Spring Security 是一个能够为基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在 Spring 应用上下文中配置的 Bean,充分利用了 Spring IoC,DI 以及 AOP 功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。应用程序安全性的两个主要领域是:  ♞ 认证(authentication):认证 是建立主体(principal)的过程。主体通常是指可以在应用程序中执行操作的用户、设备或其他系统;  ♞ 授权(authorization):也可称为访问控制(access-control),授权 是指决定是否允许主体在应用程序中执行操作。为了到达需要授权决定的点,认证过程已经建立了主体的身份。这些概念是常见的,并不是特定于 Spring Security。   在认证级别,Spring Security 支持各种各样的认证模型。这些认证模型中的大多数由第三方提供,或者由诸如因特网工程任务组的相关标准机构开发。此外,Spring Security 提供了自己的一组认证功能。
Demo_Null
2020/10/26
4570
Spring Security 基础入门
Spring+Dubbo+Zookeeper简单框架与使用
1、搭建框架前先下载Zookeeper(http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.3.6/zookeeper-3.3.6.tar.gz)
田维常
2019/07/16
7160
spring整合各种RPC框架(netty、dubbo、dubbox、RPC、Motan)
在分布式计算,远程过程调用(英语:Remote Procedure Call,缩写为 RPC)是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一个地址空间(通常为一个开放网络的一台计算机)的子程序,而程序员就像调用本地程序一样,无需额外地为这个交互作用编程(无需关注细节)。RPC是一种服务器-客户端(Client/Server)模式,经典实现是一个通过发送请求-接受回应进行信息交互的系统。---维基百科
逍遥壮士
2021/01/18
1.6K0
spring整合各种RPC框架(netty、dubbo、dubbox、RPC、Motan)
Dubbo入门-简易配置
想看分布式的东西好久了,目前的公司用不到,只能自己去网上找相关的,看到最多的Dubbo,于是趁着今天有时间自己照着一些教程自己配置了个基础的demo,顺便放出来。本文实例基于maven+spring+dubbo+zookeeper,开发工具为IDEA,系统环境为Windows10。
WindCoder
2018/09/19
7370
Dubbo入门-简易配置
Dubbo02【搭建provider和consumer】
  本文来给大家介绍下基于Spring配置的方式来搭建dubbo中的服务提供端和消费端
用户4919348
2019/04/02
6790
Dubbo02【搭建provider和consumer】
Dubbo 快速入门
ZooKeeper服务器是用Java创建的,它运行在JVM之上。需要安装JDK 7或更高版本。
用户9615083
2022/12/25
5620
Dubbo 快速入门
搭建简单的Dubbo生产者与消费者
Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
Melody132
2020/03/10
1.1K0
Dubbo和Zookeeper
当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。
宋先生
2019/07/18
8140
Dubbo和Zookeeper
Dubbo的使用及原理浅析
衡量一个网站速度是否快: 打开一个新页面一瞬间完成;页面内跳转,-刹那间完成。 根据佛经《僧衹律》记载:一 刹那者为-念,二十念为-瞬,二十瞬为-弹 指,二十弹指为-罗预, 二十罗预为-须臾,一日一夜有三十须臾。
小炜同学
2022/09/23
3150
Dubbox框架与Zookeeper入门之DEMO
(1)创建Maven工程(WAR)dubboxdemo-service ,在pom.xml中引入依赖
一点博客
2019/07/24
4000
Dubbo与Zookeeper、SpringMVC整合和使用(入门级)
后续会补充完善SpringMVC部分 项目码云GIT地址:https://gitee.com/xshuai/dubbo/ 开发工具 MyEclipse 10.7 JDK 1.7 容器 Tomcat 8(运行dubbo) zookeeper版本 zookeeper-3.4.6 dubbo dubbo-admin-2.5.3 dubbo-admin-2.5.3下载地址:http://pan.baidu.com/s/1bozCMzP zookeeper下载地址:http://www-e
小帅丶
2018/02/08
1.9K0
Dubbo与Zookeeper、SpringMVC整合和使用(入门级)
Dubbo的两种常规启动方式
然后打成jar给dubbo-user-provider和dubbo-user-consumer使用
田维常
2019/12/25
1.4K0
Dubbo的两种常规启动方式
教自己学Dubbo
Demo地址:https://gitee.com/lemon_ant/dubbo-demo.git
青衫染红尘
2021/01/19
5410
教自己学Dubbo
dubbo 服务中间件 的使用
2 在spring的配置文件中添加dubbo的约束,然后使用dubbo:service发布服务。
用户5927264
2019/07/31
6440
Dubbo实战案例01【需求分析及项目创建】
  maven,Spring,SpringMVC,Mybatis,Dubbo,Zookeeper,MySql
用户4919348
2019/04/02
6290
Dubbo实战案例01【需求分析及项目创建】
Dubbo分布式服务框架入门(附工程)
要想了解Dubbo是什么,我们不防先了解它有什么用。 使用场景:比如我想开发一个网上商城项目,这个网上商城呢,比较复杂,分为pc端web管理后台,微信端销售公众号,那么我们分成四个项目,pc端网站,微信端网站,还有一个后台服务项目,接口服务项目。
全栈程序员站长
2022/06/29
2630
Dubbo分布式服务框架入门(附工程)
springboot整合dubbo(xml形式)[通俗易懂]
dubbo是一个远程服务调用的分布式框架。让我们告别了webservice的wsdl调用方式,取而代之的是服务注册和服务消费模式。下面对dubbo的组成做一个简单的解释,为的是读者能更好的理解下面的代码 dubbo在结构上一共分为4个部分。 1 .provider:服务的提供者,将服务注册到Registry中,供外界调用。 2 .container:服务容器 ( 加载dubbo配置文件,将配置文件中的服务部署运行 ) 3 .registry:服务的注册中心(本篇使用zookeeper) 3 .consumer:服务的消费者,消费提供者注册的服务。 4 .monitor:统计中心(主要统计服务的调用次数和调用时间)
全栈程序员站长
2022/08/01
7880
springboot整合dubbo(xml形式)[通俗易懂]
相关推荐
记录一次dubbo项目实战
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档