微服务-dubbo工程案例搭建

基础案例搭建

1 依赖

  • 父工程POM
<dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${com.alibaba.cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${com.cloud.version}</version><type>pom</type><scope>import</scope></dependency><!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-dubbo --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId><version>${com.dubbo.version}</version></dependency></dependencies></dependencyManagement>
  • 当前工程POM provider + consumer 都是这个POM
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.liyong.learn</groupId><artifactId>dubbo-Facde</artifactId><version>1.0-SNAPSHOT</version></dependency>

这里的dubbo-Facde是一个单独的模块,提供了公共的接口,打包为jar引入即可:
在这里插入图片描述
2 配置(选用nacos作为注册中心)

  • provider
server:port: 9070
spring:application:name: dubbo-providercloud:nacos:discovery:server-addr: 111.229.199.181:8848
dubbo:application:name: dubbo-providerprotocol:name: dubboport: 29070 registry:address: nacos://111.229.199.181:8848
  • consumer
server:port: 9075
spring:application:name: dubbo-consumercloud:nacos:discovery:server-addr: 111.229.199.181:8848
dubbo:application:name: dubbo-consumerprotocol:name: dubboport: 29075 registry:address: nacos://111.229.199.181:8848

3 使用

  • provider
@DubboService
public class DubboDemoServiceImpl implements DubboDemoService {@Overridepublic String dubboDemo() {return "dubboDemo go on !!!!!!";}
}
  • consumer
@Component
public class InvokeService {@DubboReferenceprivate DubboDemoService dubboDemoService;public String echo() {return dubboDemoService.dubboDemo();}
}
  • 启动类
@SpringBootApplication
@EnableDiscoveryClient
@EnableDubbo
public class DubboProviderApplication {public static void main(String[] args) {SpringApplication.run(DubboProviderApplication.class, args);}
}

依赖检查&负载均衡

1 依赖检查
所谓的依赖检查也就是,检查提供方是否提供了对应的服务,如果没有则消费方是会启动报错的。

在这里插入图片描述

可以通过注解里面的参数控制:

// 关闭检查,没有提供方也能正常启动
@DubboReference(check = false); 

check设置为false后,如果没有提供方调用会抛异常,如果将来提供方正常了以后,还是可以调用成功。

2 负载均衡
默认就有负载均衡,也可以通过@DubboReference进行设置

@DubboReference(check = false , loadbalance = LoadbalanceRules.RANDOM)
// 有下面这些规则可以设置
public interface LoadbalanceRules {/***  This class select one provider from multiple providers randomly.**/String RANDOM = "random";/***  Round robin load balance.**/String ROUND_ROBIN = "roundrobin";/***  Filter the number of invokers with the least number of active calls and count the weights and quantities of these invokers.**/String LEAST_ACTIVE = "leastactive";/***  Consistent Hash, requests with the same parameters are always sent to the same provider.**/String CONSISTENT_HASH = "consistenthash";/***  Filter the number of invokers with the shortest response time of success calls and count the weights and quantities of these invokers.**/String SHORTEST_RESPONSE = "shortestresponse";String EMPTY = "";}

广播调用

广播调用就是我们调用一个引用,但是其实所有节点都会执行这个方法,这个应用场景就比如我们要清空每个节点的业务缓存,或者每个节点都要记录一些日志。
在这里插入图片描述

官方文档广播调用

//broadcast.fail.percent=20 代表了当 20% 的节点调用失败就抛出异常,不再调用其他节点。
@DubboReference(cluster = "broadcast", parameters = {"broadcast.fail.percent", "20"})

缓存

也是就是提供方返回的数据进行缓存,前提是数据不需要频繁的变动。这里需要注意缓存数据的大小适不适合做本地缓存,如果是大数据缓存那么需要整合第三方缓存,例如Redis。
在这里插入图片描述
官方文档:
dubbo调用结果缓存

// 接口粒度
@DubboReference(cache = "lru")
private DemoService demoService;
// 方法粒度
@DubboReference(methods = {@Method(name="sayHello",cache = "lru")})
private DemoService demoService;

点对点案例搭建

点对点调用就是,我们要指定一台特定的机器来调用。例如本地和其他人联调,例如需要选择一台服务器做一些事情,不关心有几个节点。官方不推荐在生产环境中使用,所以了解即可,可能会在调试中使用到。
官网网站

@DubboReference(url = "dubbo://localhost:29072")
private DemoService demoService;

泛化调用

泛化调用官方文档

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

书生·浦语大模型实战营第一次课堂笔记

书生浦语大模型全链路开源体系。大模型是发展通用人工智能的重要途径,是人工通用人工智能的一个重要途径。书生浦语大模型覆盖轻量级、重量级、重量级的三种不同大小模型,可用于智能客服、个人助手等领域。还介绍了书生浦语大模型的性能在多个数据集上全面超过了相似量级或相近…

交换机04_远程连接

通过远程管理方式连接交换机 1、telnet简介 telnet 是应用层协议 基于传输层TCP协议的&#xff0c;默认端口&#xff1a;23 采用的是明文密码方式 不是很安全&#xff0c;一般用于内网管理。 2、ssh协议简介 ssh 是应用层的协议&#xff0c;基于传输层的TCP协议&#x…

C# 自定义配置文件序列化生成+文件格式错误自动回档

文章目录 前言选择Xml简单的Xml使用测试用例简单的写简单的读简单的生成配置修改配置类测试用例运行结果对比 代码逻辑封装逻辑示意封装好的代码测试生成配置文件格式错误测试使用默认值覆盖来解决问题 配置文件人为修改错误如何解决解决方案代码测试用例运行结果 代码封装总结…

Hadoop集群三节点搭建(二)

一、克隆三台主机&#xff08;hadoop102 hadoop103 hadoop104&#xff09; 以master为样板机克隆三台出来&#xff0c;克隆前先把master关机 按照上面的步骤克隆其他两个就可以了&#xff0c;记得修改ip和hostname 二、编写集群同步脚本 在/home/attest/ 创建bin目录&…

一个H3C交换机周期性断网并自动恢复的排查案例

一个朋友发我一个H3C日志&#xff0c;这个交换机是汇聚层交换机&#xff0c;1和2口是trunk口&#xff0c;其它接口是access接口&#xff0c;17-21口据说接的都是监控、终端。日志里面看到大量的拓朴改变&#xff0c;好几个网口up、down的日志&#xff0c;怀疑是环路&#xff0c…

Adboost算法

1描述 AdaBoost算法每次都是使用全部的样本进行训练&#xff0c;每一轮训练结束后&#xff0c;得到一个基学习器&#xff0c;并计算该基学习器在训练样本的预测误差率&#xff0c;然后根据这个误差率来更新下一轮训练时训练集合样本的权重系数和本轮基学习器的投票权重&#x…

Spring Boot实现数据加密脱敏:注解 + 反射 + AOP

文章目录 1. 引言2. 数据加密和脱敏的需求3. Spring Boot项目初始化4. 敏感数据加密注解设计5. 实现加密和脱敏的工具类6. 实体类和加密脱敏注解的使用7. 利用AOP实现加密和脱敏8. 完善AOP切面9. 测试10. 拓展功能与未来展望10.1 加密算法的选择10.2 动态注解配置 11. 总结 &am…

三剑客前端教程

前端教程 结构层&#xff08;html&#xff09;表现层&#xff08;css&#xff09;行为层&#xff08;javascript&#xff09; HTML 超文本标记语言&#xff09; HTML&#xff08;超文本标记语言——HyperText Markup Language&#xff09;是构成 Web 世界的一砖一瓦。它定义…

云服务器ECS搭建个人项目

一、登录云服务器ECS 在ECS实例的操作列中点击远程连接云服务器ECS&#xff0c;点击实例最右侧的远程连接按钮&#xff0c;并立即登录后会跳转至Workbench的登录页面。但是第一次进去不知道密码&#xff1f;可以重置密码 登录后可以看到如下页面&#xff0c;说明已经成功登录到…

【数据结构】树的遍历

树的遍历 前序遍历 前序遍历是按照根节点->左子树->右子树的顺序进行遍历 图片来源维基百科深度优先遍历&#xff08;前序遍历&#xff09;: F, B, A, D, C, E, G, I, H. 代码实现 递归 # class TreeNode: # def __init__(self, x): # self.val x # …

RFID标签在汽车监管方面的应用与实施方案

RFID技术在汽车工业领域得到了广泛应用&#xff0c;主要体现在汽车资质证书远程监管系统的普及化&#xff0c;系统包括OBD接口监视器、车证监管箱、超高频读写设备、应用系统软件以及大数据采集与处理等组成部分。 在汽车物流监管方面&#xff0c;系统利用OBD接口监控车辆并实时…