热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringBoot+zookeeper+dubbo小案例

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

Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
现在我们便使用SpringBoot+zookeeper+dubbo的方式编写一个小小的demo。闲话不多说直接给上案例目录结构。
案例目录结构
dubbo-api里面存放的是一些公共的方法,实体类以及接口。如图:
在这里插入图片描述
因为是简单的案例,所以只有一个实体类以及一个接口对应的代码如下:
User

package com.it.ds.model;import lombok.Data;import java.io.Serializable;/*** @ClassName: User* @Description:* @Author: 盗帅* @Date: 2020/1/17 10:22*/
@Data
public class User implements Serializable {private String id;private String userName;private String password;private String amil;private String address;
}

IUserService

package com.it.ds.service;import com.it.ds.model.User;import java.util.List;public interface IUserService {List getAll();
}

接下来便是对应的提供者dubbo-provider对应的模块,提供者里面主要的便是接口的实现类UserServiceImpl,由于是简单的案例,所以就没有进行数据库查询,直接使用虚拟数据,代码如下:

package com.it.ds.service.impl;import com.it.ds.model.User;
import com.it.ds.service.IUserService;
import org.springframework.stereotype.Service;import java.util.Arrays;
import java.util.List;
import java.util.UUID;/*** @ClassName: UserServiceImpl* @Description:* @Author: 盗帅* @Date: 2020/1/17 10:26*/
@Service
@com.alibaba.dubbo.config.annotation.Service //暴露dubbo服务
public class UserServiceImpl implements IUserService {@Overridepublic List getAll() {User user1 = new User();user1.setId(UUID.randomUUID().toString());user1.setUserName("盗帅");user1.setPassword("123456");user1.setAmil("10086@qq.com");user1.setAddress("北京");User user2 = new User();user2.setId(UUID.randomUUID().toString());user2.setUserName("孙悟空");user2.setPassword("123456");user2.setAmil("10087@qq.com");user2.setAddress("上海");return Arrays.asList(user1,user2);}
}

其中最重要的便是@com.alibaba.dubbo.config.annotation.Service 这个注解,这个注解的作用是暴露服务,也就是将这个服务暴露出去提供消费者调用这个服务以达到不同服务器上的相互调用。接着便是需要进行一些配置将服务注册到注册中心了,在案例中使用的是zookeeper注册中心。因为是简单的入门案例,所以这里只需要进行一些基本的配置即可,具体的配置如下

#指定当前服务的名字
dubbo.application.name=dubbo-provider
#指定注册中心的位置 protocol:指定协议
dubbo.registry.protocol=zookeeper
#address:指定地址
dubbo.registry.address=127.0.0.1:2181
#指定通信规则和端口号
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
#连接监控中心
dubbo.monitor.protocol=registry

接下来也是比较关键的一步了,配置什么的都写好了,剩下的就是需要zookeeper,接下来我们就可以去网上下载一个zookeeper,解压后进入目录如下:
在这里插入图片描述
进入其中的bin目录运行zkServer.cmd文件即可
在这里插入图片描述
这个时候已经进行了一半了,为了我们更加直观的观察我们需要安装一个提供者与消费者的控制台页面,这个案例中用的是dubbo-admin,当然也可以自行百度,运行了该控制页面后,就可以将案例中刚刚编写的dubbo-provider模块启动。启动类代码如下:

package com.it.ds;import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@EnableDubbo //开启基于注解的dubbo功能
@SpringBootApplication
public class DubboProviderApplication {public static void main(String[] args) {SpringApplication.run(DubboProviderApplication.class, args);}}

@EnableDubbo该注解需要加上,只有加上它之前那个暴露服务的注解才能生效。启动好之后便可以去控制台页面查看结果了,如图:
在这里插入图片描述
这样一来我们的提供者算是完成了。
接下来便是需要编写消费者了,消费者同理创建一个springboot的模块,由于是案例只写了一个简单控制层,代码如下:

package com.it.ds.controller;import com.alibaba.dubbo.config.annotation.Reference;
import com.it.ds.model.User;
import com.it.ds.service.IUserService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import java.util.List;/*** @ClassName: UserController* @Description:* @Author: 盗帅* @Date: 2020/1/17 10:51*/
@Controller("user")
public class UserController {@ReferenceIUserService userService;@RequestMapping("getAll")@ResponseBodypublic List getAll(){return userService.getAll();}
}

注意里面有一个@Reference注解,这个注解功能便是从注册中心上调用对应的服务,而不再是@Autowired。接下来便是消费者的配置了。如下:

#服务名称
dubbo.application.name=dubbo-consumer
#指定注册中心的位置 protocol:指定协议
dubbo.registry.protocol=zookeeper
#address:指定地址
dubbo.registry.address=127.0.0.1:2181
#连接监控中心
dubbo.monitor.protocol=registryserver.port=8081

最后我们需要启动消费者,启动了中同样需要加上注解@EnableDubbo,启动类如下:

package com.it.ds;import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@EnableDubbo
@SpringBootApplication
public class DubboConsumerApplication {public static void main(String[] args) {SpringApplication.run(DubboConsumerApplication.class, args);}}

启动消费者后,刷新控制页面,消费者便上来了,如图:
在这里插入图片描述
这个时候基本上就完成了,我们可以访问一下消费者对应的方法,便可以得到对应的数据了。如图:
在这里插入图片描述


推荐阅读
  • 本文介绍了一个使用Spring框架和Quartz调度器实现每周定时调用Web服务获取数据的小项目。通过详细配置Spring XML文件,展示了如何设置定时任务以及解决可能遇到的自动注入问题。 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • Spring Boot使用AJAX从数据库读取数据异步刷新前端表格
      近期项目需要是实现一个通过筛选选取所需数据刷新表格的功能,因为表格只占页面的一小部分,不希望整个也页面都随之刷新,所以首先想到了使用AJAX来实现。  以下介绍解决方法(请忽视 ... [详细]
  • 深入解析Dubbo:使用与源码分析
    本文详细介绍了Dubbo的使用方法和源码分析,涵盖其架构设计、核心特性和调用流程。 ... [详细]
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • HBase Java API 进阶:过滤器详解与应用实例
    本文详细探讨了HBase 1.2.6版本中Java API的高级应用,重点介绍了过滤器的使用方法和实际案例。首先,文章对几种常见的HBase过滤器进行了概述,包括列前缀过滤器(ColumnPrefixFilter)和时间戳过滤器(TimestampsFilter)。此外,还详细讲解了分页过滤器(PageFilter)的实现原理及其在大数据查询中的应用场景。通过具体的代码示例,读者可以更好地理解和掌握这些过滤器的使用技巧,从而提高数据处理的效率和灵活性。 ... [详细]
  • 本文探讨了如何在 Spring MVC 框架下,通过自定义注解和拦截器机制来实现细粒度的权限管理功能。 ... [详细]
  • 本文详细介绍了 Spark 中的弹性分布式数据集(RDD)及其常见的操作方法,包括 union、intersection、cartesian、subtract、join、cogroup 等转换操作,以及 count、collect、reduce、take、foreach、first、saveAsTextFile 等行动操作。 ... [详细]
  • 在Java分层设计模式中,典型的三层架构(3-tier application)将业务应用细分为表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。这种分层结构不仅有助于提高代码的可维护性和可扩展性,还能有效分离关注点,使各层职责更加明确。通过合理的设计和实现,三层架构能够显著提升系统的整体性能和稳定性。 ... [详细]
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
  • Zookeeper作为Apache Hadoop生态系统中的一个重要组件,主要致力于解决分布式应用中的常见数据管理难题。它提供了统一的命名服务、状态同步服务以及集群管理功能,有效提升了分布式系统的可靠性和可维护性。此外,Zookeeper还支持配置管理和临时节点管理,进一步增强了其在复杂分布式环境中的应用价值。 ... [详细]
  • 2016-2017学年《网络安全实战》第三次作业
    2016-2017学年《网络安全实战》第三次作业总结了教材中关于网络信息收集技术的内容。本章主要探讨了网络踩点、网络扫描和网络查点三个关键步骤。其中,网络踩点旨在通过公开渠道收集目标信息,为后续的安全测试奠定基础,而不涉及实际的入侵行为。 ... [详细]
  • 近年来,BPM(业务流程管理)系统在国内市场逐渐普及,多家厂商在这一领域崭露头角。本文将对当前主要的BPM厂商进行概述,并分析其各自的优势。目前,市场上较为成熟的BPM产品主要分为两类:一类是综合型厂商,如IBM和SAP,这些企业在整体解决方案方面具有明显优势;另一类则是专注于BPM领域的专业厂商,它们在特定行业或应用场景中表现出色。通过对比分析,本文旨在为企业选择合适的BPM系统提供参考。 ... [详细]
author-avatar
叔叔123
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有