Dubbo简单介绍

ByteStrider
• 阅读 1318

Dubbo介绍

Apache Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
Dubbo简单介绍

Dubbo特点

Dubbo简单介绍

Dubbo入门案例

定义公共接口项目

说明:接口项目一般定义公共的部分,并且被第三方依赖.
Dubbo简单介绍

后台服务提供者介绍

代码结构

Dubbo简单介绍

编辑实现类

package com.jt.dubbo.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import com.alibaba.dubbo.config.annotation.Service;
import com.jt.dubbo.mapper.UserMapper;
import com.jt.dubbo.pojo.User;
@Service(timeout=3000) //3秒超时 内部实现了rpc
//@org.springframework.stereotype.Service//将对象交给spring容器管理
public class UserServiceImpl implements UserService {
   @Autowired
 private UserMapper userMapper;
   @Override
 public List<User> findAll() {
      System.out.println("我是第一个服务的提供者");
      return userMapper.selectList(null);
   }
   @Override
 public void saveUser(User user) {
      userMapper.insert(user);
   }
}

编辑提供者配置文件

server:
  port: 9000   #定义端口

spring:
  datasource:
    #引入druid数据源
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/jtdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
    username: root
    password: root

#关于Dubbo配置   
dubbo:
  scan:
    basePackages: com.jt    #指定dubbo的包路径 扫描dubbo注解
  application:              #应用名称
    name: provider-user     #一个接口对应一个服务名称   一个接口可以有多个实现
  registry:  #注册中心 用户获取数据从机中获取 主机只负责监控整个集群 实现数据同步
    address: zookeeper://192.168.126.129:2181?backup=192.168.126.129:2182,192.168.126.129:2183
  protocol:  #指定协议
    name: dubbo  #使用dubbo协议(tcp-ip)  web-controller直接调用sso-Service
    port: 20880  #每一个服务都有自己特定的端口 不能重复.

      
mybatis-plus:
  type-aliases-package: com.jt.dubbo.pojo       #配置别名包路径
  mapper-locations: classpath:/mybatis/mappers/*.xml  #添加mapper映射文件
  configuration:
    map-underscore-to-camel-case: true                #开启驼峰映射规则

前台web介绍

编辑Controller

package com.jt.dubbo.controller;
import java.util.List;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.dubbo.config.annotation.Reference;
import com.jt.dubbo.pojo.User;
import com.jt.dubbo.service.UserService;
@RestController
public class UserController {
   //利用dubbo的方式为接口创建代理对象 利用rpc调用
 //@Reference(loadbalance = "random") //random:负载均衡随机策略
 //@Reference(loadbalance = "roundrobin") //roundrobin:负载均衡轮询的方式,就是一个一个访问
 //@Reference(loadbalance = "consistenthash") //consistenthash:负载均衡一致性hash算法,消费者绑定服务器提供者
 @Reference(loadbalance = "leastactive") //leastactive:挑选当前负载小的服务器进行访问。
 private UserService userService;
   
   /**
 * Dubbo框架调用特点:远程RPC调用就像调用自己本地服务一样简单
 * @return
 */
 @RequestMapping("/findAll")
   public List<User> findAll(){
      //远程调用时传递的对象数据必须序列化.
 return userService.findAll();
   }
   
   @RequestMapping("/saveUser/{name}/{age}/{sex}")
   public String saveUser(User user) {
      
      userService.saveUser(user);
      return "用户入库成功!!!";
   }
}

编辑YML配置文件

server:
  port: 9001
dubbo:
  scan:
    basePackages: com.jt
  application:
    name: consumer-user   #定义消费者名称
  registry:               #注册中心地址
    address: zookeeper://192.168.126.129:2181?backup=192.168.126.129:2182,192.168.126.129:2183

Dubbo入门案例测试

Dubbo简单介绍

关于Dubbo框架小知识

1、如果其中一个服务器宕机,用户访问是否受限?

由于zk的帮助,使得程序永远可以访问正确的服务器.并且当服务重启时,duboo自身有服务的自动发现功能,web服务器不需要重启即可以访问新的服务.

2、如果ZK集群短时间宕机,用户访问是否受限?

用户的访问不受影响,由于web服务器在本地存储服务列表信息,当访问故障机时,自动的将标识信息改为down属性.

Dubbo负载均衡策略

负载均衡种类

1.客户端负载均衡
Dubbo/SpringCloud等微服务框架
Dubbo简单介绍
2.服务端负载均衡
客户端发起请求之后,必须由统一的服务器进行负载均衡,所有的压力都在服务器中(Nginx).
Dubbo简单介绍

Dubbo负载均衡方式

@Reference(loadbalance = "random")
random:负载均衡随机策略
@Reference(loadbalance = "roundrobin")
roundrobin:负载均衡轮询的方式,就是一个一个访问
@Reference(loadbalance = "consistenthash")
consistenthash:负载均衡一致性hash算法,消费者绑定服务器提供者
@Reference(loadbalance = "leastactive")
leastactive:挑选当前负载小的服务器进行访问。

点赞
收藏
评论区
推荐文章
Dubbo架构设计与源码解析(二) 服务注册
作者:黄金一、Dubbo简介Dubbo是一款典型的高扩展、高性能、高可用的RPC微服务框架,用于解决微服务架构下的服务治理与通信问题。其核心模块包含【RPC通信】和【服务治理】,其中服务治理又分为服务注册与发现、服务容错、负载均衡、流量调度等。今天将重点介
Stella981 Stella981
4年前
Apache Dubbo的爱奇艺之旅
ApacheDubbo 简单介绍ApacheDubbo是一款开源的RPC(RemoteProcedureCall,远程过程调用)框架,其提供了简单易用、高性能的RPC能力、灵活可控的扩展、强大的服务治理、完善的开源生态支持,目前已有Java、Go、JS、Python等多个语言支持。ApacheDubbo更
Stella981 Stella981
4年前
Dubbo 如何成为连接异构微服务体系的最佳服务开发框架
从编程开发的角度来说,ApacheDubbo(以下简称Dubbo)首先是一款RPC服务框架,它最大的优势在于提供了面向接口代理的服务编程模型,对开发者屏蔽了底层的远程通信细节。同时Dubbo也是一款服务治理框架,它为分布式部署的微服务提供了服务发现、流量调度等服务治理解决方案。在这篇文章中,我们将以以上基础能力为背景,尝试突破Dubbo
Wesley13 Wesley13
4年前
DUBBO 详细介绍
摘要:主要核心部件:Remoting:网络通信框架,实现了syncoverasync和requestresponse消息机制.RPC:一个远程过程调用的抽象,支持负载均衡、容灾和集群功能Registry:服务目录框架用于服务的注册和服务事件发布和订阅Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能
Stella981 Stella981
4年前
Dubbo源码解析之SPI(1):扩展类的加载过程
!(https://oscimg.oschina.net/oscnet/22928b1118e3cec1496d7f176996c004dfc.png)Dubbo是一款开源的、高性能且轻量级的JavaRPC框架,它提供了三大核心能力:面向接口的远程方法调用、智能容错和负载均衡,以及服务自动注册和发现。Dubbo最早是阿里公司内部的RPC
Stella981 Stella981
4年前
Dubbo源码解析之SPI(一):扩展类的加载过程
Dubbo是一款开源的、高性能且轻量级的JavaRPC框架,它提供了三大核心能力:面向接口的远程方法调用、智能容错和负载均衡,以及服务自动注册和发现。Dubbo最早是阿里公司内部的RPC框架,于2011年开源,之后迅速成为国内该类开源项目的佼佼者,2018年2月,通过投票正式成为Apache基金会孵化项目。目前宜信公司内部也有不少项目在使用Dub
Wesley13 Wesley13
4年前
5 springboot 集成dubbo
ApacheDubbo是一款高性能JavaRPC框架由阿里巴巴开源并进入Apache孵化器,官网 http://dubbo.apache.org(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fdubbo.apache.org%2Fzhcn%2F)提供服务化基础功能: 接口
Stella981 Stella981
4年前
Dubbo是什么?能做什么?
1\.Dubbo是什么?Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用
Stella981 Stella981
4年前
Dubbo常见面试题
阅读文本大概需要3分钟。!(https://oscimg.oschina.net/oscnet/70db51c5516c4d3284e04eccf811be69.jpg)dubbo是什么dubbo是一个分布式框架,远程服务调用的分布式框架,其核心部分包含:集群容错:提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失
郑文 郑文
1年前
Dubbo 3 深度剖析 - 透过源码认识你
Dubbo3深度剖析透过源码认识你download》quangneng.com/1928/关于Dubbo3地介绍Dubbo3是ApacheDubbo的一个新版本,是一个高性能、轻量级的开源JavaRPC框架。Dubbo3在设计上采用了许多先进的技术和理念,