Dubbo+zookeeper微服务架构之服务注册与发现的简单使用

简介: Dubbo+zookeeper微服务架构之服务注册与发现的简单使用

服务注册与发现

技术栈:

springboot

dubbo

zookeeper


注册中心推荐zookeeper

下载链接:在3.5.5版本后,官方提供了bin的包,可以不需要配置环境,直接上手查看

https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz

之后以管理员方式启动bin文件夹中的cmd文件

1.png



会报错,我们需要吧conf里的,zoo_simple复制一份,改成zoo.cof

1.png


就可以了。linux版本的也一样

打开server和client之后,创建一个节点

1.png

往里面放点东西:123

成功之后我们就可查看节点里的信息了


dubbo-admin

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

下载好之后,这个是dubbo的一个服务管理中心,可以看到我们注册的服务

进入D:\dubbo-admin-develop\dubbo-admin-develop\dubbo-admin-server\src\main\resources下查看zookeeper的端口号2181,如果改动了,这里也要改

1.png



之后我们用cmd打开,mvn clean package -Dmaven.test.skip=true,打成jar包

2.png



过程可能有点慢,耐心等待

完成之后,把打包好的jar放入zookeeper根目录

之后先启动zookeeper,再跑jar包

访问:http://localhost:7001/

查看是否连接成功

1.png



当当当!

前台,中台,后台

zookeeper:注册中心

dubbo-admin:是一个监控管理后台

Dubbo :jar包

那么我们要开始实战咯


服务注册与发现

我们建两个项目如下:

1.png

custom 端口配置为 8082


privoder 端口配置为8081


privoder依赖


 

        <!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-spring-boot-starter -->
    <!--dubbo-->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.12</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
        <dependency>
            <!--zkclient,zookeeper客户端--> <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>
<!-- 引入zookeeper 并且解决日志冲突-->
<dependency>
   <groupId>org.apache.curator</groupId>
   <artifactId>curator-framework</artifactId>
   <version>2.12.0</version>
</dependency>
<dependency>
   <groupId>org.apache.curator</groupId>
   <artifactId>curator-recipes</artifactId>
   <version>2.12.0</version>
</dependency>
<dependency>
   <groupId>org.apache.zookeeper</groupId>
   <artifactId>zookeeper</artifactId>
   <version>3.4.14</version>
   <!--排除这个slf4j-log4j12-->
   <exclusions>
       <exclusion>
           <groupId>org.slf4j</groupId>
           <artifactId>slf4j-log4j12</artifactId>
       </exclusion>
   </exclusions>
</dependency>


之后去设置服务者的配置文件

server.port=8001
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#服务名字
dubbo.application.name=privoder
#那些服务要注册
dubbo.scan.base-packages=com.hyc.privoder.service


在需要注册的服务上添加注解

@DubboService//在项目一启动就注册到注册中心
@Component//为什么不加service注解,应为dubbo的注册service,用于区分
public class ticketserviceImpl implements ticketservice {
    @Override
    public String getticket() {
        return "hyc学微服务";
    }
}


注册与发现就是zookeeper的作用

启动所有需要启动的服务

zookeeper—>dubbo的jar包 —> 服务—>管理员网站服务查看

1.png

想拿到票,需要调用远程服务,拿到我们服务之者的方法,要去注册中心拿服务

我们先要配置的custom的配置,一样需要导入相关依赖。


编写配置文件:

server.port=8002
#要去哪里拿服务,需要暴露自己的名字
dubbo.application.name=custom
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181



之后我们需要调用本地的Autowired是本地调用,我们这里远程调用@DubboReference

@Service//这里要用spring的注解哟,只有spring可以字自动装配
public class UserService {
    //想拿到票,需要调用远程服务,拿到我们服务之者的方法,要去注册中心拿服务
    @DubboReference//引用 Pom坐标可以定义路径相同的接口名
    ticketservice ts;
    public  void buyTicket(){
        String getticket = ts.getticket();
        System.out.println("注册中心拿到"+getticket);
    }
}

如果报错就降级启动器,解决


记得要在统一包下的服务,

1.png

步骤:

提供者服务


导入依赖


配置文件,注册中心地址,服务发现名和要扫描的服务

想要被注册的服务上加上dubbo的service注解和spring的compent组件


消费者如何消费


导入依赖


配置文件,服务发现名,注册中心地址

我们需要在客户端建立一个一样的服务者接口,直接远程注入就可以使用这个服务的方法了,远程调用注解@DubboReference



相关文章
|
7月前
|
运维 负载均衡 微服务
|
9月前
|
消息中间件 负载均衡 中间件
⚡ 构建真正的高性能即时通讯服务:基于 Netty 集群的架构设计与实现
本文介绍了如何基于 Netty 构建分布式即时通讯集群。随着用户量增长,单体架构面临性能瓶颈,文章对比了三种集群方案:Nginx 负载均衡、注册中心服务发现与基于 ZooKeeper 的消息路由架构。最终选择第三种方案,通过 ZooKeeper 实现服务注册发现与消息路由,并结合 RabbitMQ 支持跨服务器消息广播。文中还详细讲解了 ZooKeeper 搭建、Netty 集群改造、动态端口分配、服务注册、负载均衡及消息广播的实现,构建了一个高可用、可水平扩展的即时通讯系统。
973 0
|
8月前
|
负载均衡 Java Nacos
微服务架构中的服务注册与发现流程
本内容介绍了微服务架构中的服务注册与发现流程,包括服务注册中心(如Nacos)、服务提供者和调用者的角色分工。服务启动时自动注册信息至注册中心,调用者通过客户端负载均衡(如Spring Cloud Loadbalancer)选取服务实例进行远程调用。同时,内容还讲解了OpenFeign的工作原理,其作为HTTP客户端集成负载均衡,通过接口定义、代理生成、请求发送与结果解析,实现服务间的高效通信。
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
9月前
|
文字识别 运维 监控
架构解密|一步步打造高可用的 JOCR OCR 识别服务
本文深入解析了JOCR OCR识别服务的高可用架构设计,涵盖从用户上传、智能调度、核心识别到容错监控的完整链路,助力打造高性能、低成本的工业级OCR服务。
380 0
架构解密|一步步打造高可用的 JOCR OCR 识别服务
|
10月前
|
人工智能 安全 Cloud Native
Nacos 3.0 架构全景解读,AI 时代服务注册中心的演进
Nacos 3.0 正式发布,定位升级为“一个易于构建 AI Agent 应用的动态服务发现、配置管理和 AI 智能体管理平台”。架构上强化了安全性,引入零信任机制,并支持 MCP 服务管理、AI Registry 等新特性,助力 AI 应用高效开发与运行。
|
消息中间件 人工智能 监控
文生图架构设计原来如此简单之分布式服务
想象一下,当成千上万的用户同时要求AI画图,如何公平高效地处理这些请求?文生图/图生图大模型的架构设计看似复杂,实则遵循简单而有效的原则:合理排队、分工明确、防患未然。
471 14
文生图架构设计原来如此简单之分布式服务
|
存储 JavaScript 开发工具
基于HarmonyOS 5.0(NEXT)与SpringCloud架构的跨平台应用开发与服务集成研究【实战】
本次的.HarmonyOS Next ,ArkTS语言,HarmonyOS的元服务和DevEco Studio 开发工具,为开发者提供了构建现代化、轻量化、高性能应用的便捷方式。这些技术和工具将帮助开发者更好地适应未来的智能设备和服务提供方式。
基于HarmonyOS 5.0(NEXT)与SpringCloud架构的跨平台应用开发与服务集成研究【实战】
|
弹性计算 Kubernetes API
构建高效后端服务:微服务架构的深度剖析与实践####
本文深入探讨了微服务架构的核心理念、设计原则及实现策略,旨在为开发者提供一套系统化的方法论,助力其构建灵活、可扩展且易于维护的后端服务体系。通过案例分析与实战经验分享,揭示了微服务在提升开发效率、优化资源利用及增强系统稳定性方面的关键作用。文章首先概述了微服务架构的基本概念,随后详细阐述了其在后端开发中的应用优势与面临的挑战,最后结合具体实例,展示了如何从零开始规划并实施一个基于微服务的后端项目。 ####
|
人工智能 安全 Java
微服务引擎 MSE:打造通用的企业级微服务架构
微服务引擎MSE致力于打造通用的企业级微服务架构,涵盖四大核心内容:微服务技术趋势与挑战、MSE应对方案、拥抱开源及最佳实践。MSE通过流量入口、内部流量管理、服务治理等模块,提供高可用、跨语言支持和性能优化。此外,MSE坚持开放,推动云原生与AI融合,助力企业实现无缝迁移和高效运维。
666 1

相关产品

  • 微服务引擎