单机版Dubbo详解

流程

注册服务
获取服务
接口
提供者:实现类
注册中心
消费者

注册中心

  1. Zookeeper 注册中心: 基于分布式协调系统 Zookeeper 实现,采用
  2. Zookeeper 的 watch 机制实现数据变更(官方推荐)
  3. Multicast 注册中心: 基于网络中组播传输实现,不需要任何中心节点,只要广播地址,就能进行服务注册和发现
  4. Redis 注册中心: 基于 Redis 实现,采用 key/Map 数据结构存储,主 key 存储服务名和类型,Map 中 key 存储服务 URL,Map 中 value 存储服务过期时间,基于 Redis 的发布/订阅模式通知数据变更
  5. Simple 注册中心:一个普通的 Dubbo 服务,可以减少第三方依赖,使整体通讯方式一致,不支持集群

启动Dubbo

Dubbo资源我发布在"我的资源"

  1. 解压Dubbo-3.4.12.tar.gz到本地
  2. 在zookeeper-3.4.12目录下创建data目录
    在这里插入图片描述
  3. 将zookeeper-3.4.12/conf目录下的zoo_sample.cfg文件重命名为zoo.cfg
    在这里插入图片描述
  4. 修改zoo.cfg文件中的dataDir选项
    在这里插入图片描述
  5. 启动zookeeper服务端双击zookeeper-3.4.12/bin/zkServer.cmd
  6. 启动zookeeper的客户端双击zookeeper-3.4.12/bin/zkCli.cmd
  7. 在dubbo-admin.jar所在目录执行java-jar dubbo-admin.jar Dubbo就启动了
  • 总结一下就是在启动dubbo-admin.jar之前我们需要先启动注册中心,注册中心这里我用的Zookeeper,当然其他也一样,Zookeeper默认的端口号为2181,Dubbo控制台默认端口号是7001,账号密码都是root,不要弄混了

HelloWorld

以Zookeeper注册中心为例:

接口:

public interface sayHello{
	void hello(String name);
} 

提供者

配置+接口实现类:

provider.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
       http://dubbo.apache.org/schema/dubbo
       http://dubbo.apache.org/schema/dubbo/dubbo.xsd">

    <!-- 应用名称 -->
    <dubbo:application name="hello-service" />

    <!-- 配置服务注册中心 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" />

    <!-- 配置发布服务的协议和端口号 -->
    <dubbo:protocol name="dubbo" port="9090" />

    <!-- 配置服务实现类对象 -->
    <bean id="helloService"
          class="com.etoak.service.impl.HelloServiceImpl" />

    <!-- 发布服务 -->
    <dubbo:service ref="helloService"
        interface="com.etoak.service.HelloService">
    </dubbo:service>

</beans>
/*
*接口的实现类
*/
public class sayHelloImpl implements sayHello{
	@Override
	public void hello(String name){
		System.out.println("Hello"+ name);
	}
}

测试类

/*
*测试类
*/
public class Provider{
	public static void main(String[] args){
		//读配置文件
		new ClassPathXmlApplicationContext("provider.xml");
		//保持提供者存活
        System.in.read();
	}
}

先开Dubbo,再运行测试类

运行

运行后,去7001控制台看看是否有我们provider提供的服务:
在这里插入图片描述
发现是有的,说明截止到目前一切是ok的

消费者

所谓消费者的意思就是需要将服务从注册中心订阅下来,然后执行

配置

consumer.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
       http://dubbo.apache.org/schema/dubbo
       http://dubbo.apache.org/schema/dubbo/dubbo.xsd">

   <!-- 应用名称 -->
   <dubbo:application name="hello-consumer" />
   <!-- 配置注册中心 -->
   <dubbo:registry address="zookeeper://127.0.0.1:2181" />

   <!-- 引用远程服务,创建远程服务的代理对象 -->
   <dubbo:reference id="hello"
           interface="com.etoak.service.HelloService">
   </dubbo:reference>
</beans>

测试类


public class Consumer {
    public static void main(String[] args) {
        ApplicationContext ioc = new
        ClassPathXmlApplicationContext("consumer.xml");
        // 远程服务的代理对象
        HelloService service = ioc.getBean("hello", HelloService.class);
        String result = service.hello("Dubbo");
        System.out.println(result);
        System.in.read();
    }
}

运行

在这里插入图片描述
在这里插入图片描述
我们发现控制台打印了提供者的发布的方法,Dubbo也能看到provider和Consumer说明我们的代码是没有问题的

总结

单机版的Dubbo就说这么多吧,我们慢慢向微服务去过度

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

商朝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值