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 #指向提供者的服务名
    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Asyncload是一款异步并行加载工具(依赖字节码技术)。背景前段时间在做应用的性能优化时,分析了下整体请求,profile看到90%的时间更多的是一些外部服务的I/O等待,cpu利用率其实不,在10%以 下。 单次请求的响应时间在50ms左右,所以tps也不会太,测试环境压力测试过程,受限于环境因素撑死只能到200tps,20并发下。I/O目前一般的I/O的访问速度: L1 > L2 > memory -> disk or network常见的IO:nas上文件 (共享文件存储)output/xxx (磁盘文件)memcache client / cat client (cache服务)database (oracle , mysql) (数据库)dubbo client (外部服务)search client (搜索引擎)思路正因为考虑到I/O阻塞,长的外部环境单个请求处理基本都是在几十ms,最终的出路只能异步 并行,从而诞生了该开源产品项目介绍名称:asyncload译意: async cocurrent load语言: 纯java开发定位: 业务层异步并行加载工具包,减少页面响应时间工作原理原理描述:针对方法调用,基于字节码增强技术,运行时生成代理类,快速返回mock对象,后台异步进行调用通过管理和调度线程池,将后台异步调用进行加速处理,达到一个平衡点业务执行过程需要获取mock对象的真实数据时,阻塞等待原始结果返回,整个过程透明完成很明显,经过异步并行加载后,一次request请求总的响应时间就等于最长的依赖关系请求链的相应时间。相关文档See the wiki page for : wiki文档wiki文档列表HomeIntroductionQuickStartChangeLog用户手册 标签:Asyncload
### 回答1: Dubbo3是一种面向并发服务架构设计的框架,可以实现分布式服务的注册、发现和调用。通过使用Dubbo3,我们可以实现并发的微服务调用。 在使用Dubbo3进行并发服务架构设计时,可以考虑以下几个方面: 首先,要合理划分微服务的粒度。微服务应该是具备内聚、低耦合的,每个微服务应该只关注自身业务逻辑,并且尽量保持独立性。合理划分微服务的粒度可以减少不必要的依赖和通信,提升系统的性能和响应速度。 其次,使用负载均衡策略。在并发的场景下,单一的服务可能会成为性能瓶颈。通过使用负载均衡策略,可以将请求均匀地分发到多个服务实例中,提升系统的吞吐量和并发能力。Dubbo3提供了多种负载均衡策略的选择,可以根据实际需求进行配置。 接着,进行服务容错处理。在并发环境下,服务不可避免地会出现故障或者网络延迟等问题。为了保证系统的稳定性和可用性,需要对服务的容错处理进行设计。Dubbo3提供了多种容错策略,如快速失败、失败重试等,可以根据具体情况进行配置。 最后,进行性能优化。在并发服务架构设计中,性能优化是至关重要的一环。可以通过合理的并发控制、缓存机制、异步调用等方式来提升系统的性能Dubbo3也提供了线程池和异步通信等功能,可以帮助我们进行性能优化。 总结来说,Dubbo3是一种可以应用于并发服务架构设计的框架。在使用Dubbo3进行并发服务架构设计时,需要合理划分微服务的粒度,使用负载均衡策略和容错处理,进行性能优化等。通过合理使用Dubbo3的功能,可以提升系统的并发能力和性能,实现效稳定的微服务架构。 ### 回答2: Dubbo3是一种并发服务架构设计方案,能够解决在面对大规模并发请求时,保障系统的稳定性和可靠性的问题。 首先,对于并发的情况,Dubbo3采用了异步非阻塞的通信模型,能够更高效地处理大量并发请求。通过使用Netty作为底层通信框架,可以充分利用多线程和IO多路复用的优势,提系统的吞吐量和响应速度。 其次,Dubbo3还引入了注册中心来管理服务的注册与发现。通过将服务提供者注册到注册中心,服务消费者可以在运行时动态地发现可用的服务提供者,从而实现负载均衡和服务调用的透明化。这对于并发场景下的微服务架构非常重要,可以通过动态调整服务的数量和位置来提系统的扩展性和弹性。 此外,Dubbo3还支持服务治理功能,包括负载均衡、容错机制和熔断降级等。这些功能可以在并发环境中提供服务的可靠性和稳定性,当某个服务出现故障或者不可用时,Dubbo3可以自动地转移请求到其他可用的服务提供者,从而避免系统的单点故障。 最后,Dubbo3还提供了丰富的监控和调试工具,用于实时监控服务性能指标和服务调用情况。这对于并发的微服务架构设计来说至关重要,可以帮助开发人员及时发现和解决系统瓶颈和问题,提供更好的用户体验和可用性。 综上所述,Dubbo3是一种针对并发服务架构设计的解决方案,通过异步非阻塞通信、注册中心、服务治理功能和监控工具等特性,能够提供性能可用和可扩展的服务调用能力,满足面对大规模并发请求时的系统需求。 ### 回答3: Dubbo3是一种支持并发的微服务架构设计,能够帮助开发者构建可扩展和可靠的分布式系统。以下是对Dubbo3实战并发服务架构设计的回答。 首先,Dubbo3具备性能并发的特性。它采用了异步非阻塞的网络通信模型,能够在保证系统吞吐量的同时,支持大量并发请求的处理。通过NIO多路复用和效线程池的使用,Dubbo3可以充分利用系统资源,提服务的响应速度并发处理能力。 其次,Dubbo3采用了一种基于事件驱动的架构模式。通过事件的发布和订阅机制,可以实现服务之间的解耦和异步处理。服务提供者将事件发布到消息队列,然后由消费者订阅并处理事件。这种架构模式能够有效地降低系统的耦合度,并提系统的可扩展性和可维护性。 另外,Dubbo3还提供了多种负载均衡策略和容错机制,能够实现服务可用性和负载的均衡。负载均衡策略可以根据服务性能和负载情况,动态地将请求分发到不同的服务实例上。容错机制可以在服务提供者出现故障时,快速切换到备用节点,保证服务的可用性和可靠性。 此外,Dubbo3还提供了丰富的监控和管理功能。开发者可以通过Dubbo3的控制台,实时监控系统的运行状态和性能指标,并对服务的配置进行动态调整。通过集成第三方的监控工具,可以进一步优化系统性能,诊断和解决问题。 总结起来,Dubbo3是一种强大的并发服务架构设计,具备性能可用性和可扩展性的特点。通过合理地设计和配置,可以帮助开发者构建稳定、效的分布式系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值