0


dubbo + ZooKeeper

Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架

Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

【dubbo系列一】搭建 dubbo 框架

consumer和provider是框架中必然存在的,Registry做为全局配置信息管理模块,推荐生产环境使用Registry,可实时推送现存活的服务提供者,Monitor一般用于监控和统计RPC调用情况、成功率、失败率等情况,让开发及运维了解线上运行情况

应用执行过程大致如下:

1,启动服务者,根据协议信息绑定到配置的IP和端口上,如果已有绑定过相同IP和端口则跳过

2,注册服务信息至注册中心

3,客户端启动,根客户端启动,根据接口和协议信息订阅注册中心中注册的服务,注册中心将存活的服务地址通知到客户端,当有服务信息变更时客户端可以通过定时通知得到变更信息

4,在客户端需要调用服务时,从内存中拿到上次通知的所有存活服务地址,根据路由信息和负载均衡机制选择最终调用的服务地址,发起调用

5,通过filter分别在客户端发送请求前和服务端接收请求后,通过异步记录一些需要的信息传递到monitor做监控或者统计

注册中心 interface

pom.xml配置

<dependencies>
    <!--spring框架-->

    <!--用于spring整体整合的jar包 {jdbc+web+test+mvc+核心}-->

    <dependency>

        <groupId>org.springframework</groupId>

        <artifactId>spring-context</artifactId>

        <!--<version>5.1.5.RELEASE</version>-->

    </dependency>

    <!--分页管理-->

    <dependency>

        <groupId>com.github.pagehelper</groupId>

        <artifactId>pagehelper</artifactId>

        <!--<version>5.1.2</version>-->

    </dependency>

    <!--hutool工具类-->

    <dependency>

        <groupId>cn.hutool</groupId>

        <artifactId>hutool-all</artifactId>

        <version>5.7.17</version>

    </dependency>

</dependencies>

服务端 (提供层provider)

dubbo-privder.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

   https://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<dubbo:application name="student-app"  /> 
<dubbo:annotation ="com.cxl.service"></dubbo:annotation> 
<dubbo:registry address="zookeeper://192.168.182.130:2182" group="test"/> 
<dubbo:protocol name="dubbo" port="20882" /> 
<!-- <dubbo:service interface="com.cxl.service.StudentService" ref="StudentServiceImpl" version="1.0"></dubbo:service>

-->

</beans>

通过注解方式配置服务暴露,Component是Spring bean注解,Service是dubbo的注解(不要和spring bean的service注解弄混),如前文所述,dubbo注解只会在spring bean中被识别

import com.cxl.service.StudentService;

import org.apache.dubbo.config.annotation.Service;

import org.springframework.stereotype.Component;

@Component

@Service(version="1.0") //版本可省略

public class StudentServiceImpl implements StudentService {

@Override

public List<Student> list() {


    ArrayList<Student> list = new ArrayList<>();

    return list;

}

}

pom.xml配置

<dependencies>
    <!-- dubbo依赖 -->

    <dependency>

        <groupId>org.apache.dubbo</groupId>

        <artifactId>dubbo</artifactId>

    </dependency>

    <dependency>

        <groupId>org.apache.dubbo</groupId>

        <artifactId>dubbo-dependencies-zookeeper</artifactId>

        <type>pom</type>

    </dependency>

    <!-- spring的jar包 -->

    <dependency>

        <groupId>org.springframework</groupId>

        <artifactId>spring-core</artifactId>

        <!-- 引用版本 -->

        <scope>compile</scope>

    </dependency>

    <dependency>

        <groupId>org.springframework</groupId>

        <artifactId>spring-context</artifactId>

    </dependency>

    <dependency>

        <groupId>org.springframework</groupId>

        <artifactId>spring-beans</artifactId>

    </dependency>

    <dependency>

        <groupId>org.springframework</groupId>

        <artifactId>spring-web</artifactId>

    </dependency>

    <dependency>

        <groupId>org.springframework</groupId>

        <artifactId>spring-webmvc</artifactId>

    </dependency>

    <dependency>

        <groupId>org.springframework</groupId>

        <artifactId>spring-jdbc</artifactId>

    </dependency>

    <dependency>

        <groupId>org.springframework</groupId>

        <artifactId>spring-tx</artifactId>

    </dependency>

    <dependency>

        <groupId>org.springframework</groupId>

        <artifactId>spring-context-support</artifactId>

    </dependency>

    <dependency>
标签: dubbo zookeeper

本文转载自: https://blog.csdn.net/u012382796/article/details/136439613
版权归原作者 zszzhangshunzhi 所有, 如有侵权,请联系我们删除。

“dubbo + ZooKeeper”的评论:

还没有评论