dubbox使用

Dubbox简介

Dubbox是一个分布式服务框架
Dubbox由当当网基于阿里的开源框架dubbo开发并维护
Dubbox常用来管理基于SOA的服务系统

Dubbox原理图

在这里插入图片描述
节点角色说明:
1.Provider: 暴露服务的服务提供方。
2.Consumer: 调用远程服务的服务消费方。
3.Registry: 服务注册与发现的注册中心。
4.Monitor: 统计服务的调用次调和调用时间的监控中心。
5.Container: 服务运行容器。
调用关系说明:
1.服务容器负责启动,加载,运行服务提供者。
2.服务提供者在启动时,向注册中心注册自己提供的服务。
3.服务消费者在启动时,向注册中心订阅自己所需的服务。
4.注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
5.服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心

用Zookeeper做注册中心

使用

注册方

1.在web.xml中配置监听器listener

<!--配置Spring监听器-->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <!--指定加载路径-->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:spring/applicationContext*.xml</param-value>
  </context-param>

2.在Spring配置文件中

<?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:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:mvc="http://www.springframework.org/schema/mvc"
       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://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    
    <!--发布的名称 不能重复-->
    <dubbo:application name="pinyougou-sellergoods"/>
    <!--注册中心地址-->
    <dubbo:registry address="zookeeper://192.168.xx.xxx:2181"/>
    <!--发布的协议和端口-->
    <dubbo:protocol name="dubbo" port="20882"/>
    <!--标签 每个类都要配置-->
    <!--<dubbo:service interface="com.pinyougou.sellergoods.service.TbBrandService" ref="tbBrandService"/>-->
    <!--<bean id="tbBrandService" class="com.pinyougou.sellergoods.service.impl.TbBrandServiceImpl"/>-->
    <!--注解 @service  import com.alibaba.dubbo.config.annotation.Service;-->
    <dubbo:annotation package="com.pinyougou.sellergoods.service.impl"></dubbo:annotation>
    <!-- 服务系统访问注册中心的超时时间 -->
    <dubbo:provider timeout="50000"/>
</beans>

调用方

在SpringMVC配置文件中

<!-- 引用dubbo 服务  发布的名称-->
	<dubbo:application name="pinyougou-manager-web" />
	<!--访问的路径-->
	<dubbo:registry address="zookeeper://192.168.xx.xxx:2181"/>
	<!--开启注解的路径 @Reference注入-->
	<dubbo:annotation package="com.pinyougou.manager.controller" />

### Dubbox框架的基本使用方法 Dubbox 是一个基于 Java 的分布式服务框架,其核心功能是提供高性能和透明化的远程服务调用(RPC)以及面向服务的架构(SOA)治理方案。在实际开发中,Dubbox 通常用于构建微服务或分布式系统,适用于需要高并发、低延迟的服务场景。 #### 环境准备 在开始使用 Dubbox 前,需确保以下环境已配置好: - JDK 1.7 或以上版本。 - Maven 构建工具(推荐使用 3.x 版本)。 - Zookeeper 作为注册中心(Dubbox 默认使用 Zookeeper 进行服务发现与注册)[^2]。 #### 核心组件 Dubbox 框架主要包括以下几个关键组件: - **服务提供者(Provider)**:负责暴露服务接口并实现具体业务逻辑。 - **服务消费者(Consumer)**:通过远程调用方式访问服务提供者的接口。 - **注册中心(Registry)**:用于服务注册与发现,默认使用 Zookeeper。 - **协议支持**:Dubbox 支持多种通信协议,如 dubbo、rmi、http 等。 #### 快速入门示例 ##### 1. 创建服务接口 首先定义一个服务接口,供服务提供者和消费者共同依赖: ```java public interface HelloService { String sayHello(String name); } ``` ##### 2. 实现服务提供者 在服务提供者模块中,实现上述接口,并通过 Dubbox 配置将其暴露为远程服务: ```xml <!-- dubbo-provider.xml --> <dubbo:application name="hello-provider"/> <dubbo:registry address="zookeeper://192.168.1.100:2181"/> <dubbo:protocol name="dubbo" port="20880"/> <bean id="helloService" class="com.example.HelloServiceImpl"/> <dubbo:service interface="com.example.HelloService" ref="helloService"/> ``` 服务实现类如下: ```java public class HelloServiceImpl implements HelloService { public String sayHello(String name) { return "Hello, " + name; } } ``` ##### 3. 编写服务消费者 在消费者端,通过 Dubbox 引用远程服务,并像本地调用一样使用它: ```xml <!-- dubbo-consumer.xml --> <dubbo:application name="hello-consumer"/> <dubbo:registry address="zookeeper://192.168.1.100:2181"/> <dubbo:reference id="helloService" interface="com.example.HelloService"/> ``` 调用服务的方式如下: ```java public class Consumer { public static void main(String[] args) throws Exception { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("dubbo-consumer.xml"); context.start(); HelloService helloService = (HelloService) context.getBean("helloService"); System.out.println(helloService.sayHello("Dubbox")); } } ``` #### 服务治理功能 除了基本的远程调用外,Dubbox 还提供了丰富的服务治理能力,包括但不限于: - 负载均衡:支持随机、轮询、最少活跃调用等策略。 - 服务降级:当服务不可用时,可配置默认返回值或异常处理机制。 - 超时控制:设置服务调用的最大等待时间,避免长时间阻塞。 - 重试机制:在调用失败时自动尝试其他服务实例。 这些功能可以通过 XML 配置文件或注解方式进行配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值