【java入门到放弃】Dubbo

RPC和Feign

RPC(Remote Procedure Call,远程过程调用)就是:让你"像调用本地方法一样调用远程服务"。

Feign 是"声明式 HTTP 客户端"

在使用体验上像 RPC

但本质仍然是 HTTP 调用,不是 RPC

Dubbo之所以是RPC,是因为它把"远程服务调用"封装成了"本地方法调用",底层通过代理、序列化和网络通信实现。

Feign = HTTP版远程调用

Dubbo = TCP版本地方法远程调用

Netty

Dubbo 使用 Netty 基于 TCP 长连接来实现 RPC 远程调用的。

功能

1、RPC 远程调用

2、服务注册与发现:dubbo使用注册中心(Zookeeper / Nacos)来实现的。

3、负载均衡

4、容错机制:重试、超时控制、失败转移、快速失败

5、 服务治理:流量控制、黑白名单、限流、权重调整、动态配置

6、高性能通信:Dubbo 底层特点:Netty、TCP 长连接、二进制序列化

整体架构

Provider:服务提供者

Consumer:服务消费者

Registry:注册中心,例如:Nacos、Zookeeper

Monitor:监控中心

监控中心

dubbo-monitor-simple:是 Dubbo 体系里的一个模块,现已不用

使用简易说明:需要下载并启动dubbo-monitor-simple,这是一个服务,注册到注册中心,然后其他服务注册者,服务提供者就需要接入监控中心,也就是从注册中心里找到监控中心。

现在主流监控方案一般是:Dubbo+ Prometheus + Grafana + SkyWalking

使用

java 复制代码
//公共接口模块
package com.demo.api;

public interface UserService {
    String getUserName(Long id);
}

//Provider
<dependencies>

    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo-spring-boot-starter</artifactId>
        <version>3.2.0</version>
    </dependency>

    <dependency>
        <groupId>com.alibaba.nacos</groupId>
        <artifactId>nacos-client</artifactId>
    </dependency>

</dependencies>

package com.demo.provider.service;

import org.apache.dubbo.config.annotation.DubboService;
import com.demo.api.UserService;

@DubboService
public class UserServiceImpl implements UserService {

    @Override
    public String getUserName(Long id) {
        return "用户-" + id;
    }
}

server:
  port: 8081

dubbo:
  application:
    name: user-service

  registry:
    address: nacos://127.0.0.1:8848

  protocol:
    name: dubbo
    port: 20880
        
//Consumer
package com.demo.consumer.controller;

import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import com.demo.api.UserService;

@RestController
public class OrderController {

    @DubboReference
    private UserService userService;

    @GetMapping("/test")
    public String test() {

        return userService.getUserName(1L);

    }
}


server:
  port: 8082

dubbo:
  application:
    name: order-service

  registry:
    address: nacos://127.0.0.1:8848

dubbo-admin

Dubbo Admin 是 Dubbo 官方提供的"可视化管理控制台"。

1、 查看服务状态

2、服务测试

3、流量治理

4、动态配置

5、服务 Mock

6、查看依赖关系

7、集群监控

高级特性

序列化

地址缓存

超时与重试

多版本

负载均衡

集群容错

服务降级

相关推荐
超梦dasgg6 分钟前
Java 生产环境 MQ 技术选型全解析
java·开发语言·java-rocketmq·java-rabbitmq
霸道流氓气质7 分钟前
Spring AI 多工具链式调用(Tool Chain)极简实战
java·人工智能·spring
罗超驿42 分钟前
22.深入剖析JDBC架构:从原生API到企业级数据交互核心
java·数据库·mysql·面试
桀人43 分钟前
C++——模板初阶(收录在专栏C++入门到精通)
开发语言·c++
一直有一个ac的梦想1 小时前
cmu15445 2025fall lec 18 transactions with two-phase lock
java·开发语言·数据库
九皇叔叔1 小时前
Spring-Ai-Alibaba [04] 04-llm-platform-custom-demo
java·人工智能·spring
技术路上的探险家1 小时前
Sa-Token 单点登录(SSO)三种模式大白话详解:告别重复登录
java·sa-token·单点登录·sso
JAVA社区1 小时前
Java进阶全套教程(四)—— SpringMVC框架详解
java·开发语言·spring·面试·职场和发展
ㄣ知冷煖★1 小时前
统一网关架构实践:从 Token 鉴权到路由、策略与凭证池转发全链路解析
java·服务器·架构
Lumbrologist1 小时前
【C++】零基础入门 · 第 2 节:变量、基本数据类型与输入输出
java·开发语言·c++