我是靠谱客的博主 高挑水蜜桃,最近开发中收集的这篇文章主要介绍dubbo (速度)更快,(并发)更高,(性能)更强,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

原理:前人之述备矣

1. 何为dubbo

dubbo 是阿里巴巴公司开源的高性能服务框架,底层实现是基于原生的TCP协议

2. dubbo VS Feign

feign同样也可以用作微服务之间的调用,dubbo 的优势何在

  1. dubbo支持多种传输协议,在传输小数据量时性能更高
  2. dubbo的负载均衡设置最小单位是方法 , 而feign是客户端
  3. dubbo协议采用单一长连接和NIO通讯,支持大并发量

3. 项目构造

  1. ticket 电影票微服务 (基本搭建略过)
  2. order 订单微服务 (基本搭建略过)
  3. 微服务间调用使用dubbo

3.1 父级项目搭建

	<!--公共的一些配置-->
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.SR2</spring-cloud.version>
        <alibaba.version>2.1.0.RELEASE</alibaba.version>
        <spring-boot.version>2.1.13.RELEASE</spring-boot.version>
    </properties>

    <!--1.管理SpringBoot的依赖-->
    <parent>
        <groupId> org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.13.RELEASE</version>
    </parent>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.20</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

3.2 dubbo-api公共接口引入

import com.qiuming.alibaba.domain.Ticket;
import com.qiuming.alibaba.domain.to.TicketTO;

import java.util.List;

/**
 * @author 
 * dubbo提供的tpc协议,实现微服务之间相互调用
 */
public interface TicketService {

    /**
     * 展示所有上线的电影票
     * 
     * @return
     */
    List<Ticket> listAllOnlineTicket();
    
}

3.3 改造ticket服务 (提供者)

  1. 在项目中引入dubbo 的 maven

    <!--该包为上述引入的dubbo-api包-->
    <dependency>
        <groupId>com.qiuming</groupId>
        <artifactId>alibaba-dubbo-api</artifactId>
        <version>1.0-SNAPSHOT</version>
        <scope>compile</scope>
    </dependency>
    
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-dubbo</artifactId>
    </dependency>
    
  2. 实现dubbo-api接口

    ! 注解@service 的 全限定名为org.apache.dubbo.config.annotation.Service

    import com.qiuming.alibaba.domain.to.TicketTO;
    import org.apache.dubbo.config.annotation.Service;
    import org.springframework.beans.factory.annotation.Autowired;
    import com.qiuming.alibaba.api.TicketService;
    import com.qiuming.alibaba.domain.Ticket;
    import com.qiuming.alibaba.mapper.TicketMapper;
    
    import java.util.List;
    
    /**
     * dubbo api的实现
     *
     * @author 
     **/
    @Service
    public class DubboTicketServiceImpl implements TicketService {
    
        @Autowired
        private TicketMapper ticketMapper;
    
        @Override
        public List<Ticket> listAllOnlineTicket() {
            return ticketMapper.listAllOnlineTicket();
        }
    
    }
    
  3. 增加yml配置

    dubbo:
      scan:
        base-packages: com.qiuming.alibaba.api #dubbo扫描包,一定要将dubbo-api和其实现都放在该包下面
      protocol:
        name: dubbo #通信协议的名称,默认dubbo
        port: 20883 #使用的通讯协议的默认端口,注意端口冲突
      registry:
        address: spring-cloud://192.168.1.7 #使用springcloud进行注册
    

3.4 改造order服务(消费者)

  1. maven引入

    <!--dubbo-api的引入-->
    <dependency>
        <groupId>com.qiuming</groupId>
        <artifactId>alibaba-dubbo-api</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-dubbo</artifactId>
    </dependency>
    
  2. 在业务层中引入dubbo-api

    ! 注解@Reference 的 全限定名为org.apache.dubbo.config.annotation.Reference

    ! 注解@Service 的 全限定名为org.springframework.stereotype.Service

    package com.qiuming.alibaba.service.impl;
    
    import com.qiuming.alibaba.api.TicketService;
    import com.qiuming.alibaba.domain.Ticket;
    import com.qiuming.alibaba.service.OrderService;
    import org.apache.dubbo.config.annotation.Reference;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    import java.util.*;
    
    /**
     * @author 
     * 业务实现类
     **/
    @Service
    @Transactional
    public class OrderServiceImpl implements OrderService {
        
        @Reference
        private TicketService ticketService;
    
        @Override
    	public List<Ticket> listAllOnlineTicket(){
            List<Ticket> tickets = ticketService.listAllOnlineTicket();
            return tickets;
        }
    
    }
    
    
  3. yml配置增加

    dubbo:
      scan:
        base-packages: com.qiuming.alibaba.api #dubbo扫描包,一定要将dubbo-api放在该包下面
      protocol:
        name: dubbo #通信协议的名称,默认dubbo
        port: 20889 #使用的通讯协议的默认端口,注意端口冲突
      registry:
        address: spring-cloud://192.168.1.7 #使用springcloud进行注册
      cloud:
        subscribed-services: ticket-service #指向提供者的服务名
    

最后

以上就是高挑水蜜桃为你收集整理的dubbo (速度)更快,(并发)更高,(性能)更强的全部内容,希望文章能够帮你解决dubbo (速度)更快,(并发)更高,(性能)更强所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部