IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 白话讲解Dubbo服务 -> 正文阅读

[网络协议]白话讲解Dubbo服务

白话讲解Dubbo服务

dubbo服务是典型的RPC服务调用方式,即所谓的远程调用。
dubbo服务涉及三要素:

一、协议

即服务提供者和服务消费者都要遵守的协议规则,里面规定了该服务都有哪些接口。一般都是直接定义接口名和接口内的方法名,然后打成依赖包注册到版本库中。服务的提供者和服务的消费者都要引用该协议的依赖。
**具体写法:**
直接新建一个maven项目,项目中直接定义service,不必具体实现。该maven项目中也可放入服务提供者和消费者都要用到的实体类。编写完毕后直接打包注册到setting.xml文件配置的版本库中(一般公司都是自己搭建的私服)。

二、服务提供者

服务提供者需要实现该协议中规定的接口,重写该协议中未实现的接口方法。
**具体写法:**
1.引入dubbo和springboot整合的依赖
        <!--dubbo和springboot整合的依赖-->
        <dependency>
            <groupId>io.dubbo.springboot</groupId>
            <artifactId>spring-boot-starter-dubbo</artifactId>
            <version>1.0.0</version>
        </dependency>
2.引入协议依赖,实现协议中的接口。*一定要注意该实现类要加上com.alibaba.dubbo.config.annotation.Service;包的@Service注解。*
package com.sunlibin.weatherprovider.service;


import com.alibaba.dubbo.config.annotation.Service;
import com.sunlibin.bean.District;
import com.sunlibin.service.RpcDistrictService;
import com.sunlibin.weatherprovider.mapper.DistrictMapper;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;

@Transactional
@Service(interfaceClass = com.sunlibin.service.RpcDistrictService.class)
//service注解为alibaba的service注解,指明实现的远程接口是哪个
public class DistrictService implements RpcDistrictService {

    @Resource
    private DistrictMapper districtMapper;

    @Override
    public List<District> getAllDistrict() {
        return this.districtMapper.getAllDistrict();
    }

    @Override
    public District getDistrictById(Integer id) {
        return this.districtMapper.getDistrictById(id);
    }
}

3.application.properties文件中配置dubbo的注册地址和注册名称

#配置dubbo
#dubbo提供者的别名,只是个标识
spring.dubbo.application.name=spring-boot-starter-dubbo-demo-provider
#zk地址(dubbo的注册地址)
spring.dubbo.registry.address=zookeeper://localhost:2181
#dubbo协议
spirng.dubbo.protocol.name=dubbo
#duboo端口号
spring.dubbo.protocol.port=20880
#这是你要发布到dubbo的接口所在包位置
spring.dubbo.scan=com.sunlibin.weatherprovider

配置完毕后随着此项目的启动,此提供者也就开始提供协议中规定的服务了。

三、服务消费者

服务消费者需要直接引用该协议中的接口,然后调用该协议中规定的接口方法。通过dubbo的映射机制就会调用到服务提供者所提供的接口方法具体实现。
**具体写法:**
1.引入协议依赖和dubbo与springboot整合的依赖
        <!--dubbo和springboot整合的依赖-->
        <dependency>
            <groupId>io.dubbo.springboot</groupId>
            <artifactId>spring-boot-starter-dubbo</artifactId>
            <version>1.0.0</version>
        </dependency>

2.在application.properties文件配置dubbo

#该服务名称在dubbo中的别称
spring.dubbo.application.name=spring-boot-starter-dubbo-demo-consumer
#zk地址
spring.dubbo.registry.address=zookeeper://localhost:2181
#dubbo协议
spring.dubbo.protocal.name=dubbo
#duboo端口号
spring.dubbo.protocol.port=20880
#这是要扫描使用的dubbo接口所在包位置
spring.dubbo.scan=com.sunlibin.weathercustomer
3.直接在serviceImpl层通过com.alibaba.dubbo.config.annotation.Reference;包@Reference注解直接使用协议中规定的服务。
package com.sunlibin.weathercustomer.service.impl;

import com.alibaba.dubbo.config.annotation.Reference;
import com.sunlibin.bean.District;
import com.sunlibin.service.RpcDistrictService;
import com.sunlibin.weathercustomer.service.DistrictService;
import org.springframework.stereotype.Service;

import java.util.List;

@Service("districtService")
public class DistrictServiceImpl implements DistrictService {

    @Reference
    private RpcDistrictService rpcDistrictService;

    @Override
    public List<District> getAllDistrict() {
        return this.rpcDistrictService.getAllDistrict();
    }

    @Override
    public District getDistrictById(Integer id) {
        return this.rpcDistrictService.getDistrictById(id);
    }
}

如此待项目启动后,会自动调用zk中注册的相关服务提供者。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-01-03 16:27:45  更:2022-01-03 16:30:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 11:32:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码