【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、集群监控

高级特性

序列化

地址缓存

超时与重试

多版本

负载均衡

集群容错

服务降级

相关推荐
吴名氏.14 分钟前
Java转AI Agent教程(第十三周)混合检索与重排
java·数据库·人工智能·ai·ai agent
.痞老板.1 小时前
java ee--多线程(进阶)
java·java-ee
深入云栈3 小时前
Netty 4.2.x 源码深度解析 (二十三):ByteBuf 核心设计 —— 索引、类型与零拷贝
java·后端·架构
爱笑的k113 小时前
nano-vllm 源码剖析:千行 Python 手写离线推理引擎的调度、显存与并行时序
开发语言·python·vllm
wang_shu_mo_ran4 小时前
MyBatis 从入门到进阶(一)
java·spring·mybatis
X1A0RAN4 小时前
PPT 图片批量处理教程:导出全部幻灯片 · 提取全部素材
开发语言·javascript·powerpoint
量化分析码农5 小时前
股票历史数据的复权参数对照:多级别返回的字段与数值差异
java·javascript·后端
猫猫不是喵喵.5 小时前
从0到1创建一个微服务项目
java·数据库·微服务·1024程序员节
熊猫钓鱼>_>5 小时前
普通用户视角的端侧智能体验手记【鸿蒙心迹】
开发语言·人工智能·华为·智能手机·性能优化·ai编程·harmonyos
瑞雪兆丰年兮5 小时前
JavaWeb-day13-SpringBootWeb事务管理&AOP
java·开发语言·springboot·javaweb·事务·web·aop