dubbo原理实现及环境搭建

本文详细介绍了Dubbo微服务框架的搭建过程,包括注册中心Zookeeper的配置、Dubbo服务管理控制台的部署、以及provider和consumer的定义与交互原理。同时,深入解析了Dubbo的特性与组成结构,如RPC接口调用、负载均衡、服务注册中心等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、分布式的基础理论
1.分布式系统是由多个独立的计算机组成,用户去访问一个内容(网站)时感觉就是访问一个系统一样,而这样一个系统其实是由分布式组成
2.分布式下的多个独立服务会互相调用,链路复杂,而dubbo可以对独立的服务进行治理,从而保证我们整个系统有条不紊的运行

二、dubbo特性
dubbo早期是由阿里巴巴创建的,后期交给Apache并且开源
1.支持RPC接口协议调用
2.负载均衡
3.服务注册中心
4.高度横向扩展能力
5.灰度发布
6.可视化界面进行各服务实时健康监控

三、dubbo组成结构及交互原理
在这里插入图片描述
1.首先provider(后端服务)向注册中心暴露自己的接口注册到注册中心
2.consumer(发起后端服务调用者)向注册中心发起订阅去寻找自己要调用的服务
3.注册中心通知consumer需要调用后端服务的接口地址、调用节点等信息
4.consumer通过反射机制对后端服务发起调用
5.dubbo监控中心将监控接口的调用次数及健康状况

四、dubbo框架的搭建

1.首先搭建注册中心,以zookeeper为例(官方推荐),下载zookeeper的官方包

http://repo1.maven.org/maven2/org/apache/zookeeper/zookeeper/

2.将下载的包解压后,进入zookeeper下的conf目录将zoo_sample.cfg文件改名为zoo.cfg
在这里插入图片描述3.编辑zoo.cfg文件开启zookeeper客户端端口2181(默认)
在这里插入图片描述
4.进入zookeeper下bin目录,给文件赋予执行权限,然后开启zookeeper服务

chmod a+x *
./zkServer.sh start

在这里插入图片描述
5.开启dubbo服务管理控制台,在GitHub上下载dubbo-admin解压包

https://github.com/apache/dubbo-admin

6.解压后进入dubbo-admin目录下找到resources/application.properties文件并修改连接zookeeper地址端口号跟zookeeper服务保持一致
在这里插入图片描述

图对应的server.port为后台服务对应的默认端口号要记住

7.在src目录下使用maven命令对源码进行编译打包
在这里插入图片描述
8.将打成的jar包,进行启动,并在浏览器输入http://ip:7001访问dubbo后台

java -jar 包名

在这里插入图片描述
9.将之前GitHub下载的解压包进入dubbo-monitor-simple目录执行maven编译打成jar包,并将dubbo-monitor-simple-2.0.0-assembly.tar.gz进行解压,找到conf/dubbo.properties文件并修改连接zookeeper地址端口号跟zookeeper服务保持一致
在这里插入图片描述

dubbo服务端口号默认7070要记住、jetty是monitor前台访问的端口号默认8080

10.并启动dubbo服务,并http://ip:8080访问monitor

./start.sh

11.代码定义provider跟consumer并且两个在不同的项目下,分别在resources下定义provider.xml、consumer.xml文件
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://code.alibabatech.com/schema/dubbo"
       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://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    <!-- 1、指定当前服务/应用的名字(同样的服务名字相同,不要和别的服务同名) -->
    <dubbo:application name="user-provider"></dubbo:application>

    <!-- 2、指定注册中心的位置 -->
    <!-- <dubbo:registry address="zookeeper://192.168.55.215:2181"></dubbo:registry> -->
    <dubbo:registry protocol="zookeeper" address="192.168.55.215:2181"></dubbo:registry>

    <!-- 3、指定通信规则(通信协议?通信端口) -->
    <dubbo:protocol name="dubbo" port="20882"></dubbo:protocol>

    <!-- 4、暴露服务   ref:指向服务的真正的实现对象 -->
    <dubbo:service interface="com.yushi.service.UserService"
                   ref="userServiceImpl01" timeout="1000" version="1.0.0">
        <dubbo:method name="getUserAddressList" timeout="1000"></dubbo:method>
    </dubbo:service>

    <!--统一设置服务提供方的规则  -->
    <dubbo:provider timeout="1000"></dubbo:provider>

    <!-- 服务的实现 -->
    <bean id="userServiceImpl01" class="com.yushi.gamemall.impl.UserServiceImpl"></bean>

    <!-- 连接监控中心 -->
    <dubbo:monitor protocol="registry"></dubbo:monitor>

</beans>

1.配置zookeeper的连接地址
2.指定dubbo协议的通信规则及端口号
3.将接口进行暴露并向注册中心进行注册,通过暴露的接口建立对应的实现类
4.配置monitor的连接配置

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"
   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/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
      http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd
      http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
   <context:component-scan base-package="com.yushi.gamemall.impl"></context:component-scan>

   <dubbo:application name="user-consumer"></dubbo:application>
   
   <dubbo:registry address="zookeeper://192.168.55.215:2181"></dubbo:registry>
   
   <dubbo:reference interface="com.yushi.service.UserService"
      id="userService" timeout="5000" retries="3" version="*">
      <!-- <dubbo:method name="getUserAddressList" timeout="1000"></dubbo:method> -->
   </dubbo:reference>

   <dubbo:monitor protocol="registry"></dubbo:monitor>
  
</beans>

1.配置zookeeper连接地址建立连接
2.配置要订阅的接口

12.具体代码实现的demo地址如下

git@github.com:HenryXiaoPY/Demo.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值