关于Dubbo初始问题

目录
  • Dubbo架构
    • 节点角色说明
    • 过程
  • Zookeeper安装
  • Dubbo快速入门
    • jar包依赖
    • 开始配置dubbo
    • 配置zk
  • 总结

Dubbo架构

消费者:调用提供者,但是不能直接调,需要借助注册中心

节点角色说明

  • Provider:暴露服务的服务提供方
  • Container: 服务运行容器
  • Consumer: 调用远程服务的服务消费方
  • Registry:服务注册与发现的注册中心
  • Monitor:统计服务的调用次数和调用时间的监控中心

过程

0start:服务的提供者要运行在一个容器里面,比如运行在tomcat里面,需要将tomcat启动起来。

1注册:启动起来之后,该服务就会注册到注册中心里(将服务调用的ip、端口、服务发布url放到注册中心里面去。)。

2.subscribe:我想调用提供者提供的服务,我这时去找注册中心去找(告诉服务中心将服务的相关信息给消费者)

3.notify:消费者要一次服务,注册中心给一次。

这时消费者拿到服务的信息

4.invoke:就是rpc的过程,进行调用。不用我们管,dubbo内部自动实现。

5.Monitor:服务监控。统计某个服务调用了多少次。

asyn:异步。sync:同步。只有rpc调用时同步的,其他的都是异步的。

Zookeeper安装

先安装java1.8

解压,进入配置文件夹,复制配置文件,并修改里面的配置使其生效。复制会话窗口,创建目录,将该目录复制修改到配置文件里面。启动zk

zk默认端口为2181

Mode:standalone(当前没有搭建集群,是单节点在运行)

Dubbo快速入门

注意这里的controller调用service是远程调用,是两个工程分别部署在两台机器上。

jar包依赖

        <!--Dubbo的起步依赖,版本2.7之后统一为rg.apache.dubb -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo</artifactId>
            <version>${dubbo.version}</version>
        </dependency>
        <!--ZooKeeper客户端实现 -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>${zookeeper.version}</version>
        </dependency>
        <!--ZooKeeper客户端实现 -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>${zookeeper.version}</version>
        </dependency>

开始配置dubbo

<?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" xmlns:context="http://www.springframework.org/schema/context"
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

   <!--spring包扫描-->
   <!--<context:component-scan base-package="com.itheima.service"/>-->

   <!--dubbo的配置-->
   <!--1、配置项目的名称,唯一-->
   <dubbo:application name="dubbo-service"/>
   <!--2、配置注册中心的地址-->
   <dubbo:registry address="zookeeper://101.42.248.44:2181"/>
   <!--3、配置dubbo包扫描-->
   <dubbo:annotation package="com.itheima.service.impl"/>

</beans>

添加spring的配置,让其扫描加载刚在配置dubbo的配置文件applicationContext.xml

配置zk

上面的扫描时扫面springmvc的注解

<?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"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
         http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

    <!--打开注解驱动-->
    <mvc:annotation-driven/>
    <!--扫描包-->
    <context:component-scan base-package="com.itheima.controller"/>

    <!--dubbo的配置-->
    <!--1、配置项目的名称,唯一-->
    <dubbo:application name="dubbo-web">
        <dubbo:parameter key="qos.port" value="33333"/>
    </dubbo:application>
    <!--2、配置注册中心的地址-->
    <dubbo:registry address="zookeeper://101.42.248.44:2181"/>
    <!--3、配置dubbo包扫描-->
    <dubbo:annotation package="com.itheima.controller"/>
</beans>

创建一个公共接口模块,减少重复代码开发,易于接口调用

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • java开发分布式服务框架Dubbo原理机制详解

    目录 前言 Dubbo框架有以下部件 Consumer Provider Registry Monitor Container 架构 高可用性 框架设计 服务暴露过程 服务消费过程 前言 在介绍Dubbo之前先了解一下基本概念: Dubbo是一个RPC框架,RPC,即Remote Procedure Call(远程过程调用),相对的就是本地过程调用,在分布式架构之前的单体应用架构和垂直应用架构运用的都是本地过程调用.它允许程序调用另外一个地址空间(通常是网络共享的另外一台机器)的过程或函数,并且

  • Dubbo3的Spring适配原理与初始化流程源码解析

    目录 引言 Spring Context Initialization FactoryBean BeanDefinition 初始化bean 解决依赖 解决属性 Dubbo Spring的一些问题及解决办法 Dubbo spring 2.7 初始化过程 Dubbo spring 3的初始化过程 属性占位符解决失败 ReferenceBean被过早初始化问题 Reference注解可能出现@Autowire注入失败的问题 引言 Dubbo 国内影响力最大的开源框架之一,非常适合构建大规模微服务集群

  • JDK与Dubbo中的SPI详细介绍

    目录 1.SPI简介 2.JDK中的SPI 3.Dubbo中的SPI 4.Dubbo中扩展点使用方式 5.DubboSPI中的Adaptive功能 1.SPI简介 SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制. 目前有不少框架用它来做服务的扩展发现,简单来说,它就是一种动态替换发现的机制.使用SPI机制的优势是实现解耦,使得第三方服务模块的装配控制逻辑与调用者的业务代码分离. 2.JDK中的SPI Java中如果想要使用SPI功能

  • 浅谈ASP.NET Core 2.0 带初始参数的中间件(译)

    问题 如何在ASP.NET Core 2.0向中间件传入初始参数? 答案 在一个空项目中,创建一个POCO(Plain Old CLR Object)来保存中间件所需的参数: public class GreetingOptions { public string GreetAt { get; set; } public string GreetTo { get; set; } } 添加一个中间件: public class GreetingMiddleware { private readon

  • AngularJS控制器controller给模型数据赋初始值的方法

    本文实例讲述了AngularJS控制器controller给模型数据赋初始值的方法.分享给大家供大家参考,具体如下: 之前的文章<AngularJS入门示例之Hello World详解>,很简单的就实现了模型数据和页面显示的自动绑定.现在我们使用控制器,给模型赋初始值.如果使用jQuery来实现变量赋初值,需要在页面加载完成后执行 $("#target").attr("value",selfValue); 使用AngularJS代码如下: <!do

  • dubbo的配置文件详解(推荐)

    一.dubbo常用配置 <dubbo:service/> 服务配置,用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心. eg.<dubbo:service ref="demoService" interface="com.unj.dubbotest.provider.DemoService" /> <dubbo:reference/> 引用服务配置,用于创建一个远程服务代理,一个引用

  • ASP.NET Core 2.0 带初始参数的中间件问题及解决方法

    问题 如何在ASP.NET Core 2.0向中间件传入初始参数? 答案 在一个空项目中,创建一个POCO(Plain Old CLR Object)来保存中间件所需的参数: public class GreetingOptions { public string GreetAt { get; set; } public string GreetTo { get; set; } } 添加一个中间件: public class GreetingMiddleware { private readon

  • 详解使用angularjs的ng-options时如何设置默认值(初始值)

    这两天我用ng-options过程中遇到的初始值为空白的问题,记得去年就遇到过,怎么解决的忘记了,费了一阵子功夫之后解决了,想记下来,方便遇到同样问题的小伙伴当然还有自己. 1.场景: 就是做一个查询列表的弹窗,其中有一个条件需要用到下拉菜单,数据是用过ajax传递过去的. 2.实现: a.html: <select ng-model="myselect" ng-options="o for o in options"></select> b

  • vue.js移动端app实战1:初始配置详解

    本系列将会用vue.js2制作一个移动端的webapp单页面,页面不多,大概在7,8个左右,不过麻雀虽小,五脏俱全,常用的效果如轮播图,下拉刷新,上拉加载,图片懒加载都会用到.css方面也会有一些描述,像不同分辨率的适配,flex布局以及scss来编写mixin来处理2x,3x图等. 初始工作: 通过vue-cli安装webpack模板后,会自动生成一大堆文件,通常我们只关心src/目录下的东西.  个人习惯在src下新建一个base目录,用来存放通用的css及js,比如样式重置css,一切js

  • ubuntu 16.04 下如何设置root用户初始密码

    安装ubuntu成功后,都是普通用户权限,并没有最高root权限,如果需要使用root权限的时候,通常都会在命令前面加上 sudo .有的时候感觉很麻烦- 我们一般使用su命令来直接切换到root用户的,但是如果没有给root设置初始密码,就会抛出 su : Authentication failure 这样的问题.所以,我们只要给root用户设置一个初始密码就好了. 输入 sudo passwd 命令,输入一般用户密码并设定root用户密码. 设定root密码成功后,输入 su 命令,并输入刚

  • 一份很全的路由器默认初始密码集合

    全向QL168010.0.0.2,用户名admin密码是qxcomm1680,管理员密码是qxcommsupport 全向QL1880192.168.1.1,用户名root密码是root 全向QL168810.0.0.2,用户名admin:密码为qxcomm1688 TP-LINKTD-8800在IE输入192.168.1.1,用户名admin,密码为admin. 合勤zyxel642telnet192.168.1.1密码1234 EcomED-802EG在IE输入192.168.1.1用户名和

  • 基于dubbo中Listener的实现方法

    这里继续dubbo的源码旅程,在过程中学习它的设计和技巧,看优秀的代码,我想对我们日程编码必然有帮助的.而那些开源的代码正是千锤百炼的东西,希望和各位共勉. 拿ProtocolListenerWrapper为例子,看源码的时候发现它是一个装饰类的标准实现有一个自身的复制构造函数,把被包装者复制进来,然后结合装饰部分的操作.看下ProtocolListenerWrapper类有这样的代码: public class ProtocolListenerWrapper implements Protoc

  • 基于注解的Dubbo服务配置方法(实例讲解)

    基于注解的Dubbo服务配置可以大大减少dubbo xml配置文件中的Service配置量,主要步骤如下: 一.服务提供方 1. Dubbo配置文件中增加Dubbo注解扫描 <!-- 开启dubbo注解支持 --> <!-- 扫描注解包路径,多个包用逗号分隔,不填pacakge表示扫描当前ApplicationContext中所有的类 --> <dubbo:annotation package="com.bounter" /> 2.Service实现

随机推荐