Dubbo

分布式

  1. Dubbo RPC 远程过程调用,RPC框架,专业

  2. SpringCloud HTTP

RPC

Remote Procedure Call 远程过程调用,进程间通信方式,是思想不是规范,一台电脑调用另一台电脑的过程或函数

核心模块: 通讯,序列化

序列化:数据传输

Dubbo

高性能,轻量级开源Java RPC框架。

核心能力:面向接口的远程方法调用,智能容错和负责均衡,服务自动注册和发现

  • 服务提供者(Provider):暴露服务的服务提供方,服务提供者在启动时,向注册中心注册自己提供的服务。

  • 服务消费者(Consumer):调用远程服务的服务消费方,服务消费者在启动时,向注册中心订阅自己所需的服务,服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

  • 注册中心(Registry):注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者

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

调用关系说明

  1. 服务容器负责启动,加载,运行服务提供者。

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

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

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

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

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

Zookeeper安装

  • 官网下载安装办,linux版即可
  • 解压,运行bing/zkServer.cmd 闪退,修改zkServer.cmd,在endlocal前加入:pause,此时再运行,就可以看到报错。缺少了zoo.cfg文件,进入conf目录,复制zoo_sample.cfg一份,命名为zoo.cfg,然后在运行
  • 运行bin/zkCli.cmd客户端,连接成功

创建节点:create e /节点名 节点值

查看节点列表:ls /

Dubbo-admin安装

  • 下载地址:https://github.com/apache/dubbo-admin/tree/master

  • 解压,修改dubbo-admin-server\src\main\resources\application.properties

    • admin.registry.address=zookeeper://127.0.0.1:2181,默认不用修改
    • 新增配置“server.port=7001
    • 账户密码默认都是root
  • mvn打包:mvn clean package -Dmaven.test.skip=true

  • dubbo-admin-master\dubbo-admin-server\target 下jar包运行 java -jar jar包

  • 访问:localhost:7001

  • 前提:zookeeper服务要启动

总结:zookeeper:注册中心

dubbo-admin:监控管理后台,查看注册了哪些服务,消费了哪些服务,非必须

Spring+Dubbo+Zookeeper项目

依赖
 <!-- Dubbo Spring Boot Starter -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.3</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>
        <!-- 引入zookeeper -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>2.12.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>2.12.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.14</version>
            <!--排除这个slf4j-log4j12-->
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

服务提供者
  • 配置

    server.port=8001
    #服务提供者名字
    dubbo.application.name=provider-server
    #注册中心地址
    dubbo.registry.address=zookeeper://127.0.0.1:2181
    #要注册到注册中心的服务
    dubbo.scan.base-packages=com.moral.service
    
  • 服务:一般是接口实现类,需要加注解@@DubboService(dubbo的,老版叫@service)和@service/@compent

TicketService

public interface TicketService {
    
    String buy();
}

TicketServiceImpl

@DubboService
@Service
public class TicketServiceImpl implements TicketService {
    @Override
    public String buy() {
        return "服务提供者buy";
    }
}

消费者

  • 配置

    server.port=8002
    #消费者名字
    dubbo.application.name=consumer-server
    #注册中心地址,从这里拿
    dubbo.registry.address=zookeeper://127.0.0.1:2181
    
  • 要想调用到服务提供者的服务,方法1:在消费者建和服务提供者所提供服务一样的服务路径,一般是接口

  • @Service
    public class UserService {
    
        @DubboReference
        TicketService ticketService;
    
        public void buy(){
            System.out.println(ticketService.hello());
        }
    }
    
posted @   jpy  阅读(2)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示