学习笔记-dubbo

背景

 

什么是RPC?RPC协议

远程过程调用,对JAVA来说,也就是远程方法调用

RPC协议:指定了调用方法(http啊、socket啊)和数据格式。

springcloud、dubbo对比

1、dubbo是RPC框架,基于TCP的长链接,二进制传输,效率会高一些

2、springcloud是短连接,http协议,一般使用json报文,消耗大

dubbo只是springcloud的一个子集,解决的是分布式服务间调用。

Dubbo

官网定义

apache dubbo 提供了六大核心能力:面向接口代理的高性能RPC调用,智能容错和负载均衡,服务自动注册和发现,高度可扩展能力,运行期流量调度,可视化的服务治理与运维。

dubbo工作流程图

0. start  服务端启动.

1. register注册 服务提供者在启动时,向注册中心注册自己提供的服务。

2. subscribe订阅 服务消费者在启动时,向注册中心订阅自己所需的服务。

3. notify通知 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。

4. invoke调用 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

Dubbo为什么要与zookeeper/Consule一起使用?

1、 zookeeper用来注册服务和进行负载均衡

2、可以保证高可用,无论服务挂了还是新增了,zk可以通过心跳机制可以检测,通知到消费。

dubbo架构设计

1、proxy服务代理层: JDK 动态代理、javassist等代理机制

2、registry注册中心层:如常用的 Nacos、Consul、Zookeeper 等

3、protocol远程调用协议层:http、dubbo

4、transport网络传输层:支持netty、mina等网络传输框架

5、serialize数据序列化层:JSON、Hessian

dubbo的工作流程

1、start: 启动spring容器时,自动启动dubbo的provider

2、register:provider注册:IP、端口、接口列表、版本、协议

3、subscribe: 订阅,消费者启动后会订阅 (会将provider缓存本地)

4、notify:通知,provider信息发生变化(挂了),自动registry向Consumer推送通知

5、count:次数, 默认2分钟

注册中心的好处

原来对应集群,是通过ng做负载均衡。有了注册中心,可以通过调用方的框架负载均衡。

dubbo

背景:

对服务提供、服务调用、连接处理、通信协议、序列化方式、服务发现、服务路由、日志输出等行为进行封装的服务框架。以及SOA(Service-Oriented Architecture)服务治理方案。远程服务调用的分布式框架

dubbo协议默认端口20880

服务通过配置到注册中心:dubbo://ip:20880

 常用标签:

服务提供方: @service (这个是dubbo下的,能被注册发现)

消费方:@Reference ( 引入服务 可以有参数:timeout )

参数:loadbalance  负责均衡配置,可以消费、也可以随机 

集群容错模式:

 服务降级:

mock参数或者stub参数

泛化依赖

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值