首页 > 其他分享 >1.dubbo入门案例

1.dubbo入门案例

时间:2022-11-12 18:22:58浏览次数:42  
标签:dubbo 调用 入门 Long public 案例 user id

1.Dubbo的基本架构


节点角色说明:

节点 角色说明
Provider 暴露服务的服务提供方。
Consumer 调用远程服务的服务消费方。
Registry 服务注册与发现的注册中心。
Monitor 统计服务的调用次数和调用时间的监控中心。
调用关系说明:
  1. 服务容器负责启动,加载,运行服务提供者。
  2. 服务提供者在启动时,向注册中心注册自己提供的服务。
  3. 服务消费者在启动时,向注册中心订阅自己所需的服务。
  4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
  5. 服务消费者,从提供者地址列表中,基于负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
  6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

2.入门案例,需求:使用Dubbo构建分布式架构,完成根据用户id查询用户

2.1编写dubbo服务提供者

(1)创建user-provider模块,导入依赖

  <dependency>
            <groupId>cn.itcast</groupId>
            <artifactId>user-api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>

        <!--dubbo的起步依赖-->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.8</version>
        </dependency>

        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-registry-nacos</artifactId>
            <version>2.7.8</version>
        </dependency>

(2)编写引导类

@SpringBootApplication
@MapperScan("com.zhang.mapper")
public class UserProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserProviderApplication.class, args);
    }
}

(3)domain

@Data
public class User implements Serializable {
    private Long id;
    private String username;
    private String address;
}

(4)mapper

public interface UserMapper {

    //根据id查询用户
    @Select("select * from tb_user where id = #{id}")
    User selectById(@Param("id") Long id);
}

(5)api

public interface UserService {
    //根据id查询用户
    User selectById(Long id);

    //根据id查询用户名
    String queryUserName(Long id);
}

(6)apiImpl


@DubboService(version = "v1.0.0")
public class UserServiceImpl implements UserService {

    //把dao接口自动装配到service实现类上
    @Autowired
    private UserMapper userMapper;


    /**
     * 根据id查询用户
     * @param id
     * @return
     */
    public User selectById(Long id) {
        User user = userMapper.selectById(id);
        user.setUsername(user.getUsername()+"v1.0.0");
        return user;
    }


    /**
     * 根据id查询用户名
     * @param id
     * @return
     */
    public String queryUserName(Long id) {
        User user = userMapper.selectById(id);
        String username = user.getUsername();
        return username;
    }

7.application.yml dubbo重点配置

dubbo: #配置dubbo提供者
  protocol: #duboo协议和访问端口
    name: dubbo #协议
    port: 20882 #端口,一般从20880开始
  registry: #nacos地址
    address: nacos://127.0.0.1:8848
  scan: #dubbo包扫描,扫描那个带有@DubboService注解的接口实现类
    base-packages: com.zhang.service

标签:dubbo,调用,入门,Long,public,案例,user,id
From: https://www.cnblogs.com/zhangdashuaige/p/16884361.html

相关文章

  • 极客编程python入门-不可变对象
    不可变对象str是不变对象,而list是可变对象对于可变对象,比如list,对list进行操作,list内部的内容是会变化的,比如l=[1,2,34,56,34,78,23,12,12,34,45,657,45]l.sort()print(l)......
  • 语义分割入门(一)
    本文参照:FCN网络结构详解(语义分割)_哔哩哔哩_bilibili以及:FullyConvolutionalNetworksforSemanticSegmentation转置卷积(TransposedConvolution、fractionally-str......
  • c#创建windows服务入门教程实例
    https://www.cnblogs.com/bruce1992/p/15028817.html用c#中创建一个windows服务非常简单,与windows服务相关的类都在System.ServiceProcess命名空间下。每个服务都需要继......
  • 篇(7)-Asp.Net Core入门实战-从系统菜单功能的增删改查开始(二:修改和删除)
    入门实战-从系统菜单功能的增删改查开始(一:修改和删除)上一篇讲了查询和增加,本章节就把修改和删除讲完。1.实现修改功能。(1).在MenuController中增加2个Action:Edit,分别是......
  • 篇(6)-Asp.Net Core入门实战-从系统菜单功能的增删改查开始(一:查询和增加)
    入门实战-从系统菜单功能的增删改查开始(一:查询和增加)检验数据库配置正确与否,并且检验EF配置的连接是否可用,需要从数据库中拉取数据在视图页面显示,这样流程才通。我建个......
  • RK3588 AVS全景拼接技术案例
    该案例可以将多路输入图像拼接为一路图像输出,能满足全景(水平360度,垂直180度)图像拼接需求,实现无死角的视频拍摄;同时用户可以指定任意视点位置和FOV(即镜头所能覆盖的范围),用来......
  • 海量电商数据与用友YS系统数据对接案例
    案例背景客户是历史比较悠久的企业。企业内部用的系统多达十几套,专门成立信息化公司进行数字化转型,第一期需求系统旺店通的ERP以及旺店通的WMS并且启用京东的沧海外仓。......
  • 海量电商数据与用友YS系统数据对接案例
    案例背景客户是历史比较悠久的企业。企业内部用的系统多达十几套,专门成立信息化公司进行数字化转型,第一期需求系统旺店通的ERP以及旺店通的WMS并且启用京东的沧海外仓。在选......
  • HTML概念介绍和快速入门
    HTML概念介绍概念:是最基础的网页开发语言HaperTextMarkupLanguage超文本标记语言超文本:超文本是用超链接的方式,将各种不同空间的文字信息组织在一起的网状文......
  • Mybatis 入门实战(1)--简介
    1、Mybatis是什么MyBatis是一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBat......