【Dubbo+Zookeeper】——SpringBoot+Dubbo+Zookeeper知识整合

🎼个人主页:【Y小夜】

😎作者简介:一位双非学校的大二学生,编程爱好者,

专注于基础和实战分享,欢迎私信咨询!

🎆入门专栏:🎇【MySQL,Java基础,Rust】

🎈热门专栏:🎊【Python,Javaweb,Vue框架】

感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持!❤️

目录

🎯分布式理论

🎃分布式系统

🎃Dubbo框架

🎃单一应用架构

🎃垂直应用架构

🎃分布式服务架构

🎃流动计算架构

🎯什么是RPC?

🎃RPC基本原理

🎯Dubbo

🎃什么是dubbo?

✨dubbo基本概念

✨调用关系说明

🎃window下安装zookeeper

🎯SpringBoot + Dubbo + zookeeper

🎃框架搭建

🎃服务提供者

🎃消费者

5. 测试类编写;


🎯分布式理论

🎃分布式系统

“分布式系统是若干独立计算机的集合,这些计算机对 于用户来说就像单个相关系统

        分布式系统(distributed system)是建立在网络之上的软件系统。

        首先需要明确的是,只有当单个节点的处理能力无法满足日益增长的计算、存储任务的时候,且硬件的 提升(加内存、加磁盘、使用更好的CPU)高昂到得不偿失的时候,应用程序也不能进一步优化的时 候,我们才需要考虑分布式系统。因为,分布式系统要解决的问题本身就是和单机系统一样的,而由于 分布式系统多节点、通过网络通信的拓扑结构,会引入很多单机系统没有的问题,为了解决这些问题又 会引入更多的机制、协议,带来更多的问题。

🎃Dubbo框架

        随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及 流动计算架构势在必行,急需一个治理系统确保架构有条不紊的演进。

🎃单一应用架构

        当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。

        适用于小型网站,小型管理系统,将所有功能都部署到一个功能里,简单易用。 

缺点:

  • 1、性能扩展比较难
  • 2、协同开发问题
  • 3、不利于升级维护

🎃垂直应用架构

        当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提 升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键

        通过切分业务来实现各个模块独立部署,降低了维护和部署的难度,团队各司其职更易管理,性能扩展 也更方便,更有针对性。

缺点: 公用模块无法重复利用,开发性的浪费

🎃分布式服务架构

        当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定 的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。

🎃流动计算架构

        当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问 压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心**(SOA)[ Service Oriented Architecture]是关键**

🎯什么是RPC?

        RPC【Remote Procedure Call】是指远程过程调用,是一种进程间通信方式,他是一种技术的思想,而 不是规范。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用 程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的函数,本质上编写的调用 代码基本相同。        

        也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由 于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。为什么要用 RPC呢?就是无法在一个进程内,甚至一个计算机内通过本地调用的方式完成的需求,比如不同的系统 间的通讯,甚至不同的组织间的通讯,由于计算能力需要横向扩展,需要在多台机器组成的集群上部署 应用。RPC就是要像调用本地的函数一样去调远程函数;

🎃RPC基本原理

🎯Dubbo

🎃什么是dubbo?

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

✨dubbo基本概念

服务提供者**(Provider)**:暴露服务的服务提供方,服务提供者在启动时,向注册中心注册自己提 供的服务。

服务消费者**(Consumer)**: 调用远程服务的服务消费方,服务消费者在启动时,向注册中心订阅自 己所需的服务,服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如 果调用失败,再选另一台调用。

注册中心**(Registry)**:注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基 于长连接推送变更数据给消费者

监控中心**(Monitor)**:服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发 送一次统计数据到监控中

✨调用关系说明

l 服务容器负责启动,加载,运行服务提供者。 l 服务提供者在启动时,向注册中心注册自己提供的服务。

l 服务消费者在启动时,向注册中心订阅自己所需的服务。

l 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费 者。

l 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再 选另一台调用。

l 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

🎃window下安装zookeeper

1、下载zookeeper ;

2、运行/bin/zkServer.cmd ,初次运行会报错,没有zoo.cfg配置文件;

可能遇到问题:闪退 !

解决方案:编辑zkServer.cmd文件末尾添加 pause 。这样运行出错就不会退出,会提示错误信息, 方便找到原因

3、修改zoo.cfg配置文件 将conf文件夹下面的zoo_sample.cfg复制一份改名为zoo.cfg即可

注意几个重要位置: dataDir=./ 临时数据存储的目录(可写相对路径) clientPort=2181 zookeeper的端口号 修改完成后再次启动zookeeper

 4、使用zkCli.cmd测试 ls /:列出zookeeper根下保存的所有节点

[zk: 127.0.0.1:2181(CONNECTED) 4] ls /
 [zookeeper]

create –e /kuangshen 123:创建一个kuangshen节点,值为123

get /kuangshen:获取/kuangshen节点的值

再来查看一下节点

🎯SpringBoot + Dubbo + zookeeper

🎃框架搭建

1. 启动zookeeper !

2. IDEA创建一个空项目;

3.创建一个模块,实现服务提供者:provider-server , 选择web依赖即可

4.项目创建完毕,我们写一个服务,比如卖票的服务;

5.创建一个模块,实现服务消费者:consumer-server , 选择web依赖即可

6.项目创建完毕,我们写一个服务,比如用户的服务;

🎃服务提供者

1、将服务提供者注册到注册中心,我们需要整合Dubbo和zookeeper,所以需要导包 我们从dubbo官网进入github,看下方的帮助文档,找到dubbo-springboot,找到依赖包

<!-- Dubbo Spring Boot Starter -->
 <dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>2.7.3</version>
 </dependency>    

2、在springboot配置文件中配置dubbo相关属性

#当前应用名字
dubbo.application.name=provider-server
 #注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
 #扫描指定包下服务
dubbo.scan.base-packages=com.kuang.provider.service

3.在service的实现类中配置服务注解,发布服务!注意导包问题

import org.apache.dubbo.config.annotation.Service;
 import org.springframework.stereotype.Component;
 @Service //将服务发布出去
@Component //放在容器中
public class TicketServiceImpl implements TicketService {
    @Override
    public String getTicket() {
        return "aaqa";
    }
 }

🎃消费者

1、导入依赖,和之前的依赖一样;

配置参数

#当前应用名字
dubbo.application.name=consumer-server
 #注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181

3. 本来正常步骤是需要将服务提供者的接口打包,然后用pom文件导入,我们这里使用简单的方式,直 接将服务的接口拿过来,路径必须保证正确,即和服务提供者相同;

4.完善消费者的服务类

package com.kuang.consumer.service;
 import com.kuang.provider.service.TicketService;
 import org.apache.dubbo.config.annotation.Reference;
 import org.springframework.stereotype.Service;
 @Service //注入到容器中
public class UserService {
    @Reference //远程引用指定的服务,他会按照全类名进行匹配,看谁给注册中心注册了这个全
类名
    TicketService ticketService;
    public void bugTicket(){
        String ticket = ticketService.getTicket();
        System.out.println("在注册中心买到"+ticket);
    }
 }

5. 测试类编写;

@RunWith(SpringRunner.class)
 @SpringBootTest
 public class ConsumerServerApplicationTests {
    @Autowired
    UserService userService;
    @Test
    public void contextLoads() {
        userService.bugTicket();
    }
 }

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DeepSeek R1 学习笔记

DeepSeek为了方便大众的使用&#xff0c;同时提供了6个蒸馏版本 DeekSeek使用方式 1.大众方式&#xff1a; 网页版&#xff1a;DeepSeek App版&#xff1a;手机各大应用商店下载安装DeepSeek-AI智能对话助手 2.专业用户 开发者&#xff1a;调用API DeepSeek服务器 网址&a…

《从零构建企业级容器镜像生态:Harbor与Registry双星架构实战手记》

目录 一、企业级镜像中枢&#xff1a;Harbor架构深度解析 1.Harbor介绍 环境准备 2. Harbor战略部署 下载安装Harbor 关键配置文件 报错一 添加本地解析 登录测试Harbor 报错二 登录成功 测试 成功显示 二、轻量化镜像驿站&#xff1a;Registry闪电战部署 简单介…

FPGA之USB通信实战:基于FX2芯片的Slave FIFO回环测试详解

FPGA之Usb数据传输 Usb 通信 你也许会有疑问&#xff0c;明明有这么多通信方式和数据传输&#xff08;SPI、I2C、UART、以太网&#xff09;为什么偏偏使用USB呢? 原因有很多&#xff0c;如下&#xff1a; 1. 高速数据传输能力 高带宽&#xff1a;USB接口提供了较高的数据传…

mysql中in和exists的区别?

大家好&#xff0c;我是锋哥。今天分享关于【mysql中in和exists的区别?】面试题。希望对大家有帮助&#xff1b; mysql中in和exists的区别? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 MySQL 中&#xff0c;IN 和 EXISTS 都用于进行子查询&#xff0c;但它…

Unity摄像机跟随物体

功能描述 实现摄像机跟随物体&#xff0c;并使物体始终保持在画面中心位置。 实现步骤 创建脚本&#xff1a;在Unity中创建一个新的C#脚本&#xff0c;命名为CameraFollow。 代码如下&#xff1a; using UnityEngine;public class CameraFollow : MonoBehaviour {public Tran…

springcloud sentinel教程

‌QPS&#xff08;Queries Per Second&#xff09;即每秒查询率 TPS&#xff0c;每秒处理的事务数目 PV&#xff08;page view&#xff09;即页面浏览量 UV 访问数&#xff08;Unique Visitor&#xff09;指独立访客访问数 一、初识Sentinel 什么是雪崩问题? 微服务之间相…

【Tools】Windows下Git 2.48安装教程详解

00. 目录 文章目录 00. 目录01. Git简介02. Git参考资料03. Git安装04. Git测试05. 附录 01. Git简介 Git(读音为/gɪt/。)是一个开源的分布式版本控制系统&#xff0c;可以有效、高速的处理从很小到非常大的项目版本管理。 [1] Git 是 Linus Torvalds 为了帮助管理 Linux 内核…

【Linux系统编程】初识系统编程

目录 一、什么是系统编程1. 系统编程的定义2. 系统编程的特点3. 系统编程的应用领域4. 系统编程的核心概念5. 系统编程的工具和技术 二、操作系统四大基本功能1. 进程管理&#xff08;Process Management&#xff09;2. 内存管理&#xff08;Memory Management&#xff09;3. 文…

神经网络|(十四)|霍普菲尔德神经网络-Hebbian训练

【1】引言 前序学习进程中&#xff0c;除了对基本的神经网络知识进行了学习&#xff0c;还掌握了SOM神经网络原理&#xff0c;文章链接包括且不限于&#xff1a; 神经网络|(十一)|神经元和神经网络-CSDN博客 神经网络|(十二)|常见激活函数-CSDN博客 神经网络|(十三)|SOM神经…

Hive八股

Hive八股 说一下GC模型遇到过gc调优吗yarn有哪些了解讲讲hqI转化为MR源码hbase读写流程hive数据倾斜page cache和buffer的区别和相同近来你关注了大数据生态哪些领域的发展&#xff0c;比如新的feature&#xff0c;新的领域等 Hive1Hive1hive简介2hive架构3hive与Hadoop的关系4…

Docker 部署 Graylog 日志管理系统

Docker 部署 Graylog 日志管理系统 前言一、准备工作二、Docker Compose 配置三、启动 Graylog 服务四、访问 Graylog Web 界面总结 前言 Graylog 是一个开源的日志管理平台&#xff0c;专为实时日志收集、分析和可视化设计。它支持强大的搜索功能&#xff0c;并且与 Elastics…

im即时聊天客服系统SaaS还是私有化部署:成本、安全与定制化的权衡策略

随着即时通讯技术的不断发展&#xff0c;IM即时聊天客服系统已经成为企业与客户沟通、解决问题、提升用户体验的重要工具。在选择IM即时聊天客服系统时&#xff0c;企业面临一个重要决策&#xff1a;选择SaaS&#xff08;软件即服务&#xff09;解决方案&#xff0c;还是进行私…

MySQL(单表)知识点

文章目录 1.数据库的概念2.下载并配置MySQL2.1初始化MySQL的数据2.2注册MYSQL服务2.3启动MYSQL服务2.4修改账户默认密码2.5登录MYSQL2.6卸载MYSQL 3.MYSQL数据模型3.1连接数据库 4.SQL简介4.1SQL的通用语法4.2SQL语句的分类4.3DDL语句4.3.1数据库4.3.2表(创建,查询,修改,删除)4…

同为科技智能PDU在数据中心场景的应用与解决方案

数据中心当前处于一个快速发展和技术变革的特殊时期&#xff0c;全新的人工智能应用正在重塑整个世界&#xff0c;为社会带来便捷的同时&#xff0c;也为数据中心的发展带来了新的机遇和挑战。智能算例的爆发式增长&#xff0c;对数据中心提出了大算力、高性能的新需求&#xf…

基于Asp.net的零食购物商城网站

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

Redis|Springboot集成Redis

文章目录 总体概述本地Java连接Redis常见问题集成Jedis集成lettuce集成RedisTemplate——推荐使用连接单机连接集群 总体概述 jedis-lettuce-RedisTemplate三者的联系 jedis第一代lettuce承上启下redistemplate着重使用 本地Java连接Redis常见问题 bind配置请注释掉保护模式…

【编译器】VSCODE编译C语言

【编译器】VSCODE编译C语言 文章目录 [TOC](文章目录) 前言一、下载配置二、代码1.main.c2.lanuch3.task 三、编译运行——方法一&#xff1a;编译器运行1.编译&#xff1a;终端-运行生成任务&#xff08;ctrlshiftB&#xff09;2.运行&#xff1a;运行-启动调试&#xff08;F5…

信息安全访问控制、抗攻击技术、安全体系和评估(高软42)

系列文章目录 信息安全访问控制、抗攻击技术、安全体系和评估 文章目录 系列文章目录前言一、信息安全技术1.访问控制2.抗攻击技术 二、欺骗技术1.ARP欺骗2.DNS欺骗3.IP欺骗 三、抗攻击技术1.端口扫描2.强化TCP/IP堆栈 四、保证体系和评估1.保证体系2.安全风险管理 五、真题在…

1 、六气概念-六气内涵

复泰中医体系里&#xff0c;木火土金水&#xff0c;属于传统中医理论的5分法。 有六气&#xff1a;厥阴风木、少阴君火、少阳相火、太阴湿土、阳明燥金、太阳寒水&#xff0c;属于6分法。 五行的体系用在补虚的体系里。 六气的体系用于泻实的体系里。 一、六气概念 天有六气&a…

svn删除所有隐藏.svn文件,文件夹脱离svn控制

新建一个文件&#xff0c;取名remove-svn-folders.reg&#xff0c;输入如下内容&#xff1a; Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN] "Delete SVN Folders" [HKEY_LOCAL_MACHINE\SOFTWARE\Class…