dubboAdmin客户端 --监控 && 启动 Zookeeper 客户端 --注册中心

生产者:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent> <groupId>com.gton</groupId>
<artifactId>producer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>producer</name> <description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--Dubbbo+Zookeeper 核心依赖 -->
<!-- 从dubbo官网进入github,看下方的帮助文档,找到dubbo-springboot,找到依赖包 -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.8</version>
</dependency>
<!--zookeeper的包我们去maven仓库下载,zkclient; -->
<dependency>
<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> <!--Spring Boot web核心依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>

项目如图:

application.properties:

# 端口
server.port=8888 #当前应用名字
dubbo.application.name=producer-service
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#配置生效位置包或者注解@service 注意是 Dubbo 下的
dubbo.scan.base-packages=com.gton.service

生产者的服务

接口:
package com.gton.service; /**
* @program: ZooKeeper_Dubbo_Demo
* ClassName: ProducerService
* @description: RPC 服务生产者
* @author: GuoTong
* @create: 2021-05-20 23:22
* @since JDK 1.8
**/
public interface ProducerService { public String getProducerMsg();
}
实现类:
package com.gton.service.serviceimpl; import com.gton.service.ProducerService;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Component; /**
* @program: ZooKeeper_Dubbo_Demo
* ClassName: ProducerServiceImpl
* @description:
* @author: GuoTong
* @create: 2021-05-20 23:23
* @since JDK 1.8
**/
@Component
@DubboService
public class ProducerServiceImpl implements ProducerService { @Override
public String getProducerMsg() {
return "来自生产者的问候!!!";
}
}

生产者启动器:

package com.gton;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class ProducerApplication { public static void main(String[] args) {
SpringApplication.run(ProducerApplication.class, args);
} }

消费者

# 端口
server.port=8889
#当前应用名字
dubbo.application.name=consumer-service
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#RPC提供服务

远程RPC-dubbo调用

package com.gton.service;

import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Component; /**
* @program: ZooKeeper_Dubbo_Demo
* ClassName: ConsumerService
* @description: 消费生产者的物品
* @author: GuoTong
* @create: 2021-05-20 23:25
* @since JDK 1.8
**/
@Component
public class ConsumerService { @DubboReference
ProducerService producerService; public void getProdMsg() {
String msgToRPC = producerService.getProducerMsg();
System.out.println(msgToRPC);
} }

微服务---Dubbo+Zookeeper的更多相关文章

  1. 微服务-dubbo学习

    什么是微服务: 由于业务发展迅速,为了减少代码和功能重复,方便扩展,部署,维护等因素,将系统业务组件化和服务化拆分,拆分为一个个独立的服务,由服务治理系统统一管理,每个微服务为一个进程,之间的通讯方式 ...

  2. 微服务Dubbo和SpringCloud架构设计、优劣势比较

    本文主要围绕微服务的技术选型.通讯协议.服务依赖模式.开始模式.运行模式等几方面来综合比较Dubbo和Spring Cloud 这2种开发框架.架构师可以根据公司的技术实力并结合项目的特点来选择某个合 ...

  3. 分布式服务Dubbo+Zookeeper安全认证

    前言 由于之前的服务都是在内网,Zookeeper集群配置都是走的内网IP,外网不开放相关端口.最近由于业务升级,购置了阿里云的服务,需要对外开放Zookeeper服务. 问题 Zookeeper+d ...

  4. 微服务dubbo面试题

    dubbo的工作原理? dubbo支持的序列化协议? dubbo的负载均衡和高可用策略?动态代理策略? dubbo的SPI思想? 如何基于dubbo进行服务治理.服务降级.失败重试以及超时重试? du ...

  5. springboot+dubbo+zookeeper微服务实践demo

    微服务化越来越火,实际上是应互联网时代而生的,微服务化带来的不仅是性能上的提升,更带来了研发组织的更加便利,协作更加轻松,团队效能更高. 当然不能为了技术而技术,我们需要切合实际的对业务进行划分,降低 ...

  6. 微服务架构的服务与发现-Spring Cloud

    1 为什么需要服务发现 简单来说,服务化的核心就是将传统的一站式应用根据业务拆分成一个一个的服务,而微服务在这个基础上要更彻底地去耦合(不再共享DB.KV,去掉重量级ESB),并且强调DevOps和快 ...

  7. Spring Cloud微服务技术概览

    Spring Cloud 是一系列框架的有序集合.它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总线.负载均衡.断路器.数据监控等,都 ...

  8. 什么是微服务架构 Spring Cloud?

    1 为什么微服务架构需要Spring Cloud 简单来说,服务化的核心就是将传统的一站式应用根据业务拆分成一个一个的服务,而微服务在这个基础上要更彻底地去耦合(不再共享DB.KV,去掉重量级ESB) ...

  9. SpringCloud微服务架构升级总结

    一.背景 1.1 应用系统的架构历史 1.2 什么是微服务? 起源:微服务的概念源于 2014 年 3 月 Martin Fowler 所写的一篇文章“Microservices”.文中内容提到:微服 ...

  10. SpringBoot 快速构建微服务体系 知识点总结

    可以通过http://start.spring.io/构建一个SpringBoot的脚手架项目 一.微服务 1.SpringBoot是一个可使用Java构建微服务的微框架. 2.微服务就是要倡导大家尽 ...

随机推荐

  1. 不懂 Kubernetes 实现云原生是什么体验?

    云原生的本质和最终效果 要明白什么是云原生,就要先弄明白云计算是什么有什么问题,云计算将计算资源.网络.存储等基础设施统一管理,通过资源规模化和自动化管理,实现降低资源的成本和提高资源的管理效率,云计 ...

  2. haodoop企业优化

    MapReduce 跑的慢的原因 MapReduce程序效率的瓶颈在于两点 计算机性能 CPU,内存,磁盘健康,网络 I/O操作优化 数据倾斜 Map和Reduce数设置不合理 Map运行时间太长,导 ...

  3. 算法:KMP, str1字符串是否包含str2字符串

    [普通解法]从左到右遍历str1的每一个字符,然后看如果 以当前字符作为第一个字符出发 是否匹配 str2字符串. [KMP算法] 1)生成一个nextArr数组,长度与str2字符串长度一样.i 的 ...

  4. Deployment控制器(pod)更新策略

    最小就绪时间: 配置时,用户可以使用Deplpoyment控制器的spec.minReadySeconds属性来控制应用升级的速度.新旧更替过程中,新创建的Pod对象一旦成功响应就绪探测即被视作可用, ...

  5. Kibana控制台(Dev Tools) Console

    控制台插件提供一个用户界面来和 Elasticsearch 的 REST API 交互.控制台有两个主要部分: editor ,用来编写提交给 Elasticsearch 的请求: response ...

  6. Qemu/Limbo/KVM镜像 Ubuntu 22.04 精简版,可运行Windows软件,内存占用不到200M

    镜像特征: Ubuntu 22.04系统 内置Wine 7.8,可运行大量Windows 软件 高度精简,内存占用仅200M不到. 自制UI,Windows3.1风格. 完全开源 镜像说明: 用户名为 ...

  7. python_flask开发环境设置

    flask开发环境设置,在powershell终端窗口,可以通过一下方式设置: # 设置当前app实例 $env:FLASK_APP="app:create_app()" #将当前 ...

  8. HDU1561 The more, The Better(树形背包)

    通过这道题对树形背包理解更深一步...... 有几个地方需要注意: 1.本题数据结构为森林,需增加一个超根作为根节点,M+=1(后面解释). 2.本题有拓扑序的限制,通过vector建成的一棵树中,必 ...

  9. Java斗地主(集合综合练习)

    ​ 学完了集合后我们可以开始做一个简易版的 " 斗地主 " 了,但是呢咱们这个斗地主只能实现制造牌,洗牌.发牌.看牌这几个简单的功能,并不是我们玩的 " 真人版斗地主 & ...

  10. 创建第一个springboot项目、用springboot实现页面跳转、@Controller和@RestController的区别

    文章目录 一.第一个spring boot项目 二.spring boot跳转到指定页面 三.怎样将后台的信息传递到前台 四. @Controller和@RestController的区别? 一.第一 ...