【Java】萌新的Spring纯注解集成Dubbo学习笔记

news2024/11/25 2:24:53

目录

介绍

Dubbo架构

实现


介绍

Dubbo 是一款高性能的 Java RPC 框架,它提供了完整的服务治理解决方案,包括远程服务调用、负载均衡、容错机制、服务注册和发现等功能。同时,Dubbo 与 Zookeeper 进行集成,利用 Zookeeper 作为注册中心来实现服务的注册与发现。

下面将详细介绍 Dubbo 的主要特性并穿插介绍与 Zookeeper 的集成:

  1. 远程服务调用:Dubbo 提供了高效的远程服务调用功能,可以让服务消费者通过网络调用服务提供者的方法,实现分布式系统中的服务协作。通过 Dubbo 的配置,可以轻松地实现远程服务的调用和管理。

  2. 负载均衡:Dubbo 支持多种负载均衡策略,可以根据实际需求选择合适的负载均衡算法,包括随机、轮询、最少活跃调用等。这些策略可以帮助系统在多个服务提供者之间进行负载均衡,提高系统的稳定性和性能。

  3. 服务注册与发现:Dubbo 通过集成 Zookeeper 或其他注册中心,实现了服务的注册与发现功能。服务提供者会将自己的地址信息注册到 Zookeeper 中,而服务消费者则可以从注册中心获取可用的服务提供者列表,动态地发现和调用服务。

  4. 容错机制:Dubbo 提供了多种容错处理方式,包括失败自动切换、失败重试、失败快速失败等,可以根据实际需求选择合适的容错机制来保障服务的可靠性和稳定性。

  5. 服务治理:Dubbo 提供了丰富的服务治理功能,包括监控、路由、限流等,可以帮助开发者更好地管理和控制分布式系统中的服务。

在使用 Dubbo 时,通常需要借助 Zookeeper 来实现服务注册和发现功能。Zookeeper 是一个分布式协调服务,可以用于构建分布式系统的注册中心。Dubbo 通过与 Zookeeper 的集成,实现了服务提供者和消费者之间的动态注册与发现,从而提高了整个系统的灵活性和可靠性。

Dubbo架构

实现

1.Maven 依赖配置

<!-- Spring Boot 引导器 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>

<!-- Dubbo 依赖 -->
<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>2.7.10</version>
</dependency>

<!-- ZooKeeper 客户端依赖 -->
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-recipes</artifactId>
    <version>4.2.0</version>
</dependency>

2.配置ZooKeeper注册中心

@Configuration
public class DubboConfig {

    @Bean
    public RegistryConfig registryConfig() {
        RegistryConfig registryConfig = new RegistryConfig();
        registryConfig.setAddress("zookeeper://127.0.0.1:2181");
        return registryConfig;
    }
}

3.配置Dubbo服务提供者

@Service
public class MyServiceImpl implements MyService {
    @Override
    public String sayHello() {
        return "Hello from Dubbo service!";
    }
}

public interface MyService {
    String sayHello();
}

4.配置Dubbo服务消费者

@RestController
public class MyController {
    @Reference
    private MyService myService;

    @RequestMapping("/hello")
    public String hello() {
        return myService.sayHello();
    }
}

5.Spring Boot应用程序入口

@SpringBootApplication
public class MyApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1512190.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爬虫之矛---JavaScript基石篇5<JS混淆问题(2)>

前言: 继续上一篇:https://blog.csdn.net/m0_56758840/article/details/136633897 正文: 在这一篇讲混淆的时候,需要先清除一个概念!! 什么是Unicode~ Unicode编码 定义 Unicode是一种字符编码标准&#xff0c;用于表示世界上几乎所有的字符集。它为每个字符分配了一个唯一…

手机备忘录可以设置密码吗 能锁屏加密的备忘录

在繁忙的生活中&#xff0c;手机备忘录成了我随身携带的“小秘书”。那些关于工作的灵感、生活的琐事&#xff0c;甚至深藏心底的小秘密&#xff0c;都被我一一记录在里面。然而&#xff0c;每次当手机离开我的视线&#xff0c;或者需要借给他人使用时&#xff0c;我总会心生担…

使用Anaconda创建Python指定版本的虚拟环境

由于工作的需要和学习的需要&#xff0c;需要创建不同Python版本的虚拟环境。 比如zdppy的框架&#xff0c;主要支持的是Python3.8的版本&#xff0c;但是工作中FastAPI主要使用的是3.11的版本&#xff0c;所以本地需要两套Python环境。 决定使用Anaconda虚拟环境管理的能力&…

【Web世界探险家】打开Web世界的大门

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &…

2024 年 2 月 NFT 行业动态:加密货币飙升,NFT 市场调整

作者&#xff1a;stellafootprint.network 数据来源&#xff1a;NFT 研究页面 - Footprint Analytics 2024 年 2 月&#xff0c;加密货币与 NFT 市场显现出了复杂性。该月&#xff0c;NFT 领域的交易量达到 12 亿美元&#xff0c;环比下降了 3.7%。值得关注的是&#xff0c;包…

鸿蒙原生应用元服务开发-WebGL网页图形库开发无着色器绘制2D图形

无着色器绘制2D图形 使用WebGL开发时&#xff0c;为保证界面图形显示效果&#xff0c;请使用真机运行。 此场景为未使用WebGL绘制的2D图形&#xff08;CPU绘制非GPU绘制&#xff09;。开发示例如下&#xff1a; 1.创建页面布局。index.hml示例如下&#xff1a; <div class…

【Spring】学习Spring框架那点小事儿

Spring作者&#xff1a;Rod Johnson Rod Johnson 是一位软件开发人员和作家&#xff0c;他在软件开发领域有着广泛的影响力。他出生于澳大利亚&#xff0c;拥有计算机科学和音乐双学位&#xff08;能写出有优雅的代码一定有艺术细胞&#xff09;。 Rod Johnson 在 2002 年出版…

【Vuforia+Unity】一个简单AR识别图像弹出按钮播放暂停视频

场景搭建 2.按钮播放视频这部分写一个按钮回调函数即可 3.控制视频的代码 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Video;public class videomanager : MonoBehaviour {// 这个脚本实现按钮控制VIDEO播放GameO…

机试:最大子序列的和

问题描述: 算法思想: 若第(i-1)个序列的小于0,则第i个序列的最大值为nums[i]; 若第(i-1)个序列的小于0,则第i个序列的最大值为max(i-1) nums[i]; 如果max(i-1)>0,max(i)max(i-1)Nums(i) 如果max(i-1)<0,max(i)Nums(i)代码示例: #include <bits/stdc.h> //该算法…

Scrapy 爬虫框架

网络爬虫框架scrapy &#xff08;配置型爬虫&#xff09; 什么是爬虫框架&#xff1f; 爬虫框架是实现爬虫功能的一个软件结构和功能组件集合爬虫框架是个半成品&#xff0c;帮助用户实现专业网络爬虫 scrapy框架结构("52"结构) spider: 解析downloader返回的响…

unity3d Animal Controller的动物组件使用明天继续

控制器介绍 动物脚本负责控制动物的所有运动逻辑.它管理所有的动画师和刚体参数,以及所有的状态和模式,动物可以做。 动物控制器 是一个动画框架控制器,根动或到位,为任何生物或人形。它利用刚体与物理世界的互动和动画师的玩动画。 States States 是不互相重叠的动画。例如…

算法刷题Day7 | 454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和

目录 0 引言1 四数相加II1.1 使用map解题1.2 总结 2 赎金信2.1 我的解题 3 三数之和3.1 双指针法 4 四数之和4.1 双指针题解 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;算法专栏&#x1f4a5; 标题&#xff1a;算法刷题Day7 | 454.四数相加II…

Python 导入Excel三维坐标数据 生成三维曲面地形图(面) 4-4、线条平滑曲面(修改颜色)去除无效点

环境和包: 环境 python:python-3.12.0-amd64包: matplotlib 3.8.2 pandas 2.1.4 openpyxl 3.1.2 scipy 1.12.0 代码: import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from scipy.interpolate import griddata fro…

redis 中的八大问题

前言 在分布式系统中&#xff0c;由于redis分布式锁相对于更简单和高效&#xff0c;成为了分布式锁的首先&#xff0c;被我们用到了很多实际业务场景当中。 但不是说用了redis分布式锁&#xff0c;就可以高枕无忧了&#xff0c;如果没有用好或者用对&#xff0c;也会引来一些意…

查找和最小的 K 对数字

优质博文IT-BLOG-CN 一、题目 给定两个以 非递减顺序排列 的整数数组nums1和nums2, 以及一个整数k。 定义一对值(u,v)&#xff0c;其中第一个元素来自nums1&#xff0c;第二个元素来自nums2。 请找到和最小的k个数对(u1,v1), (u2,v2) ... (uk,vk)。 示例 1: 输入: nums1 […

PTA L2-007 家庭房产

给定每个人的家庭成员和其自己名下的房产&#xff0c;请你统计出每个家庭的人口数、人均房产面积及房产套数。 输入格式&#xff1a; 输入第一行给出一个正整数N&#xff08;≤1000&#xff09;&#xff0c;随后N行&#xff0c;每行按下列格式给出一个人的房产&#xff1a; …

k8s中calico网络组件部署时一个节点一直处于Pending状态

k8s中calico网络组件部署时一个节点一直处于Pending状态 故障截图 故障排查思路&#xff0c;通过describe查看具体原因 ~]# kubectl describe pod calico-node-pzlfv -n kube-system通过describe查看得知报错 Warning FailedScheduling 58s (x23 over 23m) default-sche…

pytest生成allure的报告

首先要下载安装配置allure allure serve ./outputs/allure_report 可以生成html的文件自动在默认浏览器中打开

【NR 定位】3GPP NR Positioning 5G定位标准解读(十六)-UL-AoA 定位

前言 3GPP NR Positioning 5G定位标准&#xff1a;3GPP TS 38.305 V18 3GPP 标准网址&#xff1a;Directory Listing /ftp/ 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;一&#xff09;-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;…

Java输出流之BufferWriter类

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴——bug菌&#xff0c;今天又来给大家普及Java SE相关知识点了&#xff0c;别躲起来啊&#xff0c;听我讲干货还不快点赞&#xff0c;赞多了我就有动力讲得更嗨啦&#xff01;所以呀&#xff0c;养成先点赞后阅读的好…