分布式 Dubbo+Zookeepr

分布式系统理论

分布式系统是一组通过网络进行通信、为了完成共同工作而协同工作的计算机节点组成的系统。
分布式系统是为了用普通、廉价的机器完成单个机器无法完成的计算量、存储任务,目的是利用更多的机器处理更多的数据

RPC

RPC即远程过程调用,是一种进程间通信方式,它允许程序调用另一个地址空间(通常指共享网络的另一台机器上)的过程或函数
RPC核心模块:通信、序列化

Dubbo

dubbo是一款高性能、轻量级的开源Java RPC框架,它提供三大核心能力:面向接口的远程方法调用、智能容错和负载均衡、服务自动注册和发现
在这里插入图片描述

springboot整合

先安装zookeeper

生产者

配置

server.port=8001

#当前应用名字
dubbo.application.name=provider-server
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#扫描指定包下服务
dubbo.scan.base-packages=com.example.service

代码

package com.example.service;

public interface SayHello {
    public String sayHello();
}

package com.example.service;

import org.apache.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;

@Component  //放进容器
@Service //将服务发布出去
public class SayHelloImpl implements SayHello {
    @Override
    public String sayHello() {
        return "hello world";
    }
}

消费者

配置

server.port=8002

#当前应用名字
dubbo.application.name=consumer-server
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181

代码

注意:生产者和消费者中都有一个SayHello 接口,且他们的路径一样

package com.example.service;

public interface SayHello {
    public String sayHello();
}

package com.example.service;

import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;

@Service
public class UserService {
    @Reference  //远程引用指定的服务,他会按照全类名进行匹配,看谁给注册中心注册了这个全类名
    SayHello sayHello;

    public void hello(){
        System.out.println(sayHello.sayHello());
    }

}

消费者端测试

package com.example;

import com.example.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@SpringBootTest
class ConsumerServerApplicationTests {
    @Autowired
    UserService userService;
    @Test
    public void contextLoads(){
        userService.hello();
    }
}

结果:
在这里插入图片描述

总结

  1. 前提:zookeeper开启
  2. 提供者提供服务
    A. 导入依赖
    B. 配置注册中心的地址,配置服务发现名,扫描包
    C. 在要被注册的服务上增加@service注解
  3. 消费者消费
    A. 导入依赖
    B. 配置注册中心地址,配置自己的服务名
    C. 从远程注入服务
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值