栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

分布式 Dubbo+Zookeepr

分布式 Dubbo+Zookeepr

目录

分布式系统理论RPCDubbospringboot整合

生产者

配置代码 消费者

配置代码 消费者端测试 总结

分布式系统理论

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

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();
    }
}

结果:

总结
    前提:zookeeper开启提供者提供服务
    A. 导入依赖
    B. 配置注册中心的地址,配置服务发现名,扫描包
    C. 在要被注册的服务上增加@service注解消费者消费
    A. 导入依赖
    B. 配置注册中心地址,配置自己的服务名
    C. 从远程注入服务
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/722572.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号