前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >分布式技术之dubbo二

分布式技术之dubbo二

作者头像
张哥编程
发布于 2024-12-13 05:51:39
发布于 2024-12-13 05:51:39
7600
代码可运行
举报
文章被收录于专栏:云计算linux云计算linux
运行总次数:0
代码可运行

1,课程回顾 2,本章重点 父子工程的使用,子工程相互调用 springboot+mybatis+dubbo+zookeeper+mysql 部署一个dubbo_admin治理项目(可以对提供者和消费者进行管理) dubbo负载均衡功能 3,具体内容 3.1 springboot,mybatis整合dubbo 3.1.1创建父项目(springboot+mybatis方式创建),pom.xml引入jar:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!--引入springboot 和dependencies并列-->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.7</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>
 
<!--springboot web包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--简化实例类包-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- Spring Boot Dubbo 依赖 -->
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<!-- zookeeper依赖 -->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>

3.1.2 创建子项目common 创建公共的实体类和服务层接口 3.1.3创建子项目consumer

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependency>
            <groupId>com.aaa</groupId>
            <artifactId>common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

新建启动类并加入dubbo支持:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.aaa.pc;
import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
 * @ fileName:PowerConsumerApplication
 * @ description:
 * @ author:zhz
 * @ createTime:2022/1/5 9:51
 * @ version:1.0.0
 */
@SpringBootApplication
@EnableDubboConfiguration  //开启dubbo配置
public class PowerConsumerApplication {
    public static void main(String[] args) {
        //run方法
        SpringApplication.run(PowerConsumerApplication.class,args);
    }
}

编写controller,引入Service:

@Reference(check=false) Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题,默认 check=“true”. 可以通过 check=“false” 关闭检查,比如,测试时,有些服务不关心,或者出现了循环依赖,必须有一方先启动。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.aaa.pc.controller;
import com.aaa.common.controller.BaseController;
import com.aaa.common.entity.Menu;
import com.aaa.common.service.MenuService;
import com.aaa.common.util.Result;
import com.alibaba.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Map;
/**
 * 菜单权限表(Menu)表控制层
 *
 * @author makejava
 * @since 2022-01-05 09:45:33
 */
@RestController
@RequestMapping("menu")
public class MenuController extends BaseController {
    /**
     * 服务对象
     */
    @Reference(check = false)   //没有配置文件,直接使用引用注解
    private MenuService menuService;
    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    @GetMapping("selectOne")
    public Result selectOne(Integer id) {
        return this.success(this.menuService.queryById(id));
    }

    /**
     * 添加
     *
     * @param menu
     * @return
     */
    @PutMapping("add")
    public Result add(@RequestBody Menu menu) {
        return this.success(this.menuService.insert(menu));
    }
    /**
     * 更新
     *
     * @param menu
     * @return
     */
    @PutMapping("update")
    public Result update(@RequestBody Menu menu) {
        return this.success(this.menuService.update(menu));
    }
    /**
     * 根据编号删除
     *
     * @param id
     * @return
     */
    @DeleteMapping("deleteById")
    public Result deleteById(Integer id) {
        return this.success(this.menuService.deleteById(id));
    }
}
application.properties:
#访问端口号
server.port=18090
#dubbo - customer名称
spring.dubbo.application.name=power_customer

zookeeper 注册中心

spring.dubbo.registry.address=zookeeper://192.168.170.41:2181 #dubbo 通信端口 spring.dubbo.protocol.name=dubbo spring.dubbo.protocol.port=20881 3.1.4创建子项目provider

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pom.xml
       <dependency>
    <groupId>com.aaa</groupId>
    <artifactId>common</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.0</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.10</version>
</dependency>
<!--druid包-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.8</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.8</version>
</dependency>

启动类加入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.aaa.pp;
import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
 * @ fileName:PowerProviderApplication
 * @ description:
 * @ author:zhz
 * @ createTime:2022/1/5 10:32
 * @ version:1.0.0
 */
@SpringBootApplication
@EnableDubboConfiguration
//@EnableTransactionManagement
public class PowerProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(PowerProviderApplication.class,args);
    }
}
          
编写服务实现类加入  @server 
            @com.alibaba.dubbo.config.annotation.Service
            @Service  为dubbo 注解,注解暴露服务
application.properties:
spring.datasource.druid.url=jdbc:mysql://localhost:3306/db_qy141
spring.datasource.druid.username=root
spring.datasource.druid.password=root
spring.datasource.druid.initial-size=5
spring.datasource.druid.max-active=20
spring.datasource.druid.min-idle=10
spring.datasource.druid.max-wait=10
#端口号
server.port=19090
#dubbo 服务名称
spring.dubbo.application.name=power_provider

zookeeper 注册中心

spring.dubbo.registry.address=zookeeper://192.168.170.41:2181 #zookeeper 通信端口 spring.dubbo.protocol.name=dubbo spring.dubbo.protocol.port=20881 3.2 服务治理 3.2.1 多台zk集群 前面配置过,直接启动 3.2.2 配置治理项目,并且测试 配置tomcat tar -xzvf /root/software/apache-tomcat-9.0.52.tar.gz -C /usr/ vim /etc/profile 修改为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export PATH=$PATH:$JAVA_HOME/bin:$ZK_HOME/bin:/usr/apache-tomcat-9.0.52/bin

生效: source /etc/profile startup.sh 查看是否启动成功 jps 或者 ps -ef |grep tomcat |grep -v grep jps 可以看到Bootstrap进程 复制准备好dubbo-admin项目到tomcat下 使用xft 把dubbo-admin.war上传到/usr/apache-tomcat-9.0.52/webapps/ 修改配置 vim /usr/apache-tomcat-9.0.52/webapps/dubbo-admin/WEB-INF/dubbo.properties 修改第一行: 127.0.0.1 修改为 192.168.xxx.41 (zk所在的机子IP) 启动zk集群: /root/shelldir/zk-start-stop.sh 测试 ​​​ http://192.168.170.41:8080/dubbo-admin/​​​ 3.2.3 启动提供者和消费者,查看admin项目变化

分布式技术之dubbo二_dubbo
分布式技术之dubbo二_dubbo
分布式技术之dubbo二_ide_02
分布式技术之dubbo二_ide_02

3.3 负载均衡,集群容错, 服务降级(半权) 路由规则,动态配置,访问控制,权重调节

打包生成多个服务:

分布式技术之dubbo二_spring_03
分布式技术之dubbo二_spring_03
分布式技术之dubbo二_分布式_04
分布式技术之dubbo二_分布式_04
分布式技术之dubbo二_spring_05
分布式技术之dubbo二_spring_05
分布式技术之dubbo二_spring_06
分布式技术之dubbo二_spring_06

cd soft/

使用xftp 把provider_jar上传

cd provider_jar/

java -jar

java -jar provider.jar

运行出错:slf4j-log4j12-1.7.26.jar

修改META-INF/MANIFEST.MF文件,删除slf4j-log4j12-1.7.26.jar包,再次打包运行

再次rebuild 时,要再次修改META-INF/MANIFEST.MF 文件中多余的jar

分布式技术之dubbo二_分布式_07
分布式技术之dubbo二_分布式_07
分布式技术之dubbo二_spring boot_08
分布式技术之dubbo二_spring boot_08
分布式技术之dubbo二_dubbo_09
分布式技术之dubbo二_dubbo_09
分布式技术之dubbo二_分布式_10
分布式技术之dubbo二_分布式_10

4,知识点总结 5,本章面试题

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用springboot+dubbo搭建RPC入门案例
先来一张简单的架构图吧,这个图是自己使用processOn画的(这里推荐一波processOn线上作图神器):
用户7353950
2022/05/10
4790
使用springboot+dubbo搭建RPC入门案例
使用SpringBoot+Dubbo搭建一个简单的分布式服务
开始实战之前,我们先来简单的了解一下这样几个概念:Dubbo、RPC、分布式、由于本文的目的是带大家使用SpringBoot+Dubbo 搭建一个简单的分布式服务,所以这些概念我只会简单给大家普及一下,不会做深入探究。
Java团长
2019/04/25
1.4K0
使用SpringBoot+Dubbo搭建一个简单的分布式服务
使用SpringBoot+Dubbo搭建一个简单的分布式服务
开始实战之前,我们先来简单的了解一下这样几个概念:Dubbo、RPC、分布式、由于本文的目的是带大家使用SpringBoot+Dubbo 搭建一个简单的分布式服务,所以这些概念我只会简单给大家普及一下,不会做深入探究。
好好学java
2019/12/09
1.4K0
使用SpringBoot+Dubbo搭建一个简单的分布式服务
spring dubbo集成(nacos dubbo)
1 服务层生产者开发(hs-ldm-server-service) 1.1添加dubbo依赖包
全栈程序员站长
2022/08/01
7350
spring dubbo集成(nacos dubbo)
Springboot+dubbo+zookeeper简单项目的使用
然后修改zoo.cfg中的dataDir后边的地址为你刚才创建的data文件夹的绝对路径
知识浅谈
2022/12/02
7970
Springboot+dubbo+zookeeper简单项目的使用
Springboot+dubbo+zookeeper简单项目的使用。
然后修改zoo.cfg中的dataDir后边的地址为你刚才创建的data文件夹的绝对路径
知识浅谈
2020/10/30
9050
Springboot+dubbo+zookeeper简单项目的使用。
快速学习-Skywalking的RPC调用-Dubbo的最佳实践
接下来为大家提供一些简单使用Dubbo服务调用的项目代码演示, 大家可以参考下面简单版 或者详细请参照Demo中的脚手架示例scaffold-dubbo-demo
cwl_java
2020/08/10
1.9K0
快速学习-Skywalking的RPC调用-Dubbo的最佳实践
分布式--使用Dubbo搭建分布式项目
在分布式架构中,我们会将不同功能模块化,部署到不同的服务器上,这时不同模块之间的通讯就由RPC框架完成,上次介绍了Dubbo的基本使用,知道了它基于Spring容器,因此在SpringBoot项目中可以很方便的使用
aruba
2022/06/19
5220
分布式--使用Dubbo搭建分布式项目
微服务痛点-基于Dubbo + Seata的分布式事务(AT)模式
Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。对于Seata不太了解的朋友,可以看下我之前写的文章: 微服务开发的最大痛点-分布式事务SEATA入门简介。
sanshengshui
2020/12/23
6960
微服务痛点-基于Dubbo + Seata的分布式事务(AT)模式
SpringCloud(一) - Dubbo + Zookeeper
Dubbo 和Zookeeper 不是SpringCloud的东西,放在这里只是为了方便复习;
化羽羽
2022/11/02
5650
SpringCloud(一) - Dubbo + Zookeeper
分布式技术之dubbo
1,课程回顾 zk 应用场景 (naming注册中心 管理配置文件 管理集群(java例子模拟) 分布式锁 消息队列…) zk 集群搭建 选举原理(启动选举,运行时leader宕机选举 ) zk 数据类型 4种 zk ACL(access control list)节点访问控制权限 scheme : id : permission world anyone crwda ip ip地址/主机名称 auth user digest user zk java API (对节点的CRUD 节点内容添加,修改) zk 管理集群(java例子模拟) 2,本章重点 dubbo的简介,使用场景 dubbo拆分SSM项目 3,具体内容 官网: ​​​ https://dubbo.apache.org/zh/​​​ 引言: 分布式服务:不同的业务模块部署在不同的服务器上或者同一个业务模块分拆多个子业务,部署在不同的服务器上,解决高并发的问题 集群服务:同一个业务部署在多台机器上,提高系统可用性 3.1 简介: Dubbo是阿里巴巴内部的SOA(server oriented architectrue)服务化治理方案的核心框架,每天为2000+ 个服务提供3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。Dubbo自2011年开源后,已被许多非阿里系公司使用。 Dubbo是一个分布式服务框架,以及SOA治理方案。其功能主要包括:高性能NIO通讯及多协议集成,服务动态寻址与路由,软负载均衡与容错,依赖分析与降级等。 3.2 开发团队: Dubbo共有六个开发人员参与开发和测试,每一个开发人员都是很有经验,团队合作很默契,开发过程也很有节奏,有完善质量保障流程。 梁飞 (开发人员/产品管理) 刘昊旻 (开发人员/过程管理) 刘超 (开发人员/用户支持) 李鼎 (开发人员/用户支持) 陈雷 (开发人员/质量保障)
张哥编程
2024/12/13
1160
分布式技术之dubbo
Spring Boot Dubbo 构建分布式服务
具体代码可以查看 github 的 dubbo 模块:https://github.com/UniqueDong/springboot-study
码哥字节
2021/07/27
3670
SpringBoot开发案例之整合Dubbo分布式服务
在 SpringBoot 很火热的时候,阿里巴巴的分布式框架 Dubbo 不知是处于什么考虑,在停更N年之后终于进行维护了。在之前的微服务中,使用的是当当维护的版本 Dubbox,整合方式也是使用的 xml 配置方式。
小柒2012
2018/10/15
5650
构建 Zookeeper + Dubbo + Spring Boot 的分布式调用项目
本文介绍了如何基于Zookeeper、Dubbo以及Spring Boot构建一个高可用的分布式调用系统。首先介绍了项目背景和整体架构,然后分别阐述了Zookeeper、Dubbo以及Spring Boot的作用和具体实现。最后,通过一个简单的示例展示了如何调用Dubbo服务,并总结了整个项目的技术要点。
林老师带你学编程
2018/01/04
2.5K0
构建 Zookeeper + Dubbo + Spring Boot 的分布式调用项目
手把手教你搭建分布式项目环境
根据电商项目模拟练习后 ,根据个人总结和经验重新进行了分布式项目的框架搭建 , 现总结过程步骤 ,为以后进行相关类型的开发做好基础~~~
时间静止不是简史
2020/07/27
1.5K0
手把手教你搭建分布式项目环境
01_分布式电商系统搭建dubbo+zk+SpringBoot
编写接口和存放相关的bean。也可以把bean放到common-util 这个要看个人怎么搭建项目架构.user-web。依赖api接口,不就把bean一起了。
全栈程序员站长
2022/06/30
3240
Spring Boot + Dubbo + Zookpeer分布式案例
Zookeeper:https://downloads.apache.org/zookeeper/
闫同学
2023/11/05
2300
基于Dubbo的CRUD案例
基于Dubbo的CRUD案例 基于maven,dubbo,zookeeper实现增删改查的功能 项目设计 070401-dubbo-parent 070401-dubbo-mapper 070401-dubbo-pojo 070402-dubbo-provider 070402-dubbo-interface 070402-dubb-user-service 070403-dobbo-consumer 070403-dubbo-user-protal-service 070403-dubbo-user
时间静止不是简史
2020/07/26
9270
分布式服务框架 dubbo/dubbox 入门示例
dubbo是一个分布式的服务架构,可直接用于生产环境作为SOA服务框架。 官网首页:http://dubbo.io/ ,官方用户指南 http://dubbo.io/User+Guide-zh.htm上面的几张图画得不错,完全可以当做SOA架构的学习资料 淘宝将这个项目开源出来以后,得到了不少同行的支持,包括: 当当网的扩展版本dubbox :https://github.com/dangdangdotcom/dubbox 京东的扩展版本jd-hydra: http://www.oschina.net/p/
菩提树下的杨过
2018/01/19
2.4K0
分布式服务框架 dubbo/dubbox 入门示例
Spring-boot:5分钟整合Dubbo构建分布式服务
概述:   Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种
九灵
2018/03/09
1.8K0
Spring-boot:5分钟整合Dubbo构建分布式服务
相关推荐
使用springboot+dubbo搭建RPC入门案例
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验