首页 > 其他分享 >[SpringBoot 2] 任务 和 Dubbo+ Zookeeper

[SpringBoot 2] 任务 和 Dubbo+ Zookeeper

时间:2023-10-03 21:34:30浏览次数:50  
标签:Dubbo 调用 SpringBoot Zookeeper 注册 方法 远程

SpringBoot_2


1. 任务

1.1 异步任务:

方法上添加@Async, Application方法上开启异步@EnableAsync

1.2 邮件任务:

添加 spring-boot-starter-mail

在自己的邮件账户中打开POP3/SMTP协议, 并获取到授权码

spring.mail.host=smtp.服务器host.com

(具体着相关的文档)

注入JavaMailSenderImpl就可以使用了

1.3 定时任务:

Springboot中有两个类和定时任务有关:

TaskSchedule 任务调度者

TaskExecutor 任务执行者

注解方面:

@EnableScheduling在applicaiton上开启注解

@Scheduled放在具体的方法上在什么时候去执行

cron表达式用来表达表示什么时候执行(时间相关)

使用只需要在方法上写@Scheduled(core = "* * * * * *")即可

2. 分布式 Dubbo Zookeeper

集群: 多个机器做同样的事情(类似pod)

分布式: 不同的节点做不同的事情(微服务是分布式的一种解决方案)

2.1 RPC

Remote Procedure Call 远程过程调用(程序调用另一个地址空间的过程或者函数, 而RPC就是要像调用本地的函数一样去调用远程函数)

本机方法A()调用本机方法B(), 是本地调用

本机方法A()调用远程机器的方法B(), 是远程调用(网络不可靠)

RPC的两个核心: 通信(http也可以做) 序列化(方便数据传输)

Dubbo就是用来解决通信和序列化这些比较繁琐的问题

2.2 Dubbo

三大核心能力: 面向接口的远程方法调用, 智能容错和负载均衡, 服务自动注册和发现

Provider: 服务提供者, 在init时, 向注册中心注册自己提供的服务

Consumer: 调用远程服务的消费者, 消费者init时, 向注册中心订阅自己需要的服务;

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

Monitor: P和C发送统计数据给Monitor(可要可不要)

2.3 ZooKeeper

一个注册中心(提供注册与发现)

2.4 SpringBoot整合Dubbo和Zookeeper

本地启动一个Zookeeper程序(Zookeeper需要单独下载运行, 是一个独立的程序), 运行在127.0.0.1:2181端口

springBoot中写两个项目, 一个provider, 一个consumer, 要在consumer项目中调用provider项目中提供的函数;

两个项目中导入Dubbo和zookeeper包, 然后把服务注册到Zookeeper中

  • 在Provider中:
#指定服务的应用名
#指定注册中心的地址
#指定那些服务要被扫描进去注册
dubbo: 
    application: 
        name: provider-service
    registry: 
        address: zookeeper://127.0.0.1:2181
    scan: 
        base-packages: com.xxx(项目的某个目录)

同时, 在要被扫描的类上加上@DubboService注解(首先是被spring托管的)

  • 在Customer中:

yml指定服务应用名和注册中心地址,

在使用时, 写个和provider中相同地址的接口(注意: dubbo下, 这个包的路径必须完全相同, 因为包路径也注册到了注册中心中, 而springcloud不用这样)(类似于springCloud中的feign)然后使用时自动注入这个类, 并写@DubboReference来调用远程的类, 而不是本地的类方法

  • SpringCloud

这四个是需要核心解决的问题(原因: 网络是不可靠的)

标签:Dubbo,调用,SpringBoot,Zookeeper,注册,方法,远程
From: https://www.cnblogs.com/Roy2048/p/17741673.html

相关文章

  • 使用Springboot实现点击名称跳转到详情页面
    终于解决出来啦!!!嘎嘎嘎嘎~~~只需要在td标签里面嵌套上a标签就能实现啦!这里主要看一下功能,页面直接使用的白板~html页面的具体代码如下(将超链接标签a的样式进行了美化):<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>主界面</title></head>......
  • SpringBoot配置文件
    management.endpoints.web.exposure.include=*#server.port=8080#设置banner开关spring.main.banner-mode=console#设置logback日志logging.level.root=error#设置指定包级别logging.level.com.wanan.springbootdemo=errorlogging.level.com.wanan.springbootdemo.controller=erro......
  • springboot整合elasticsearch中的分词查询配置
    前言:elasticsearch最好还是在linux中进行集群部署,这样更符合企业需求和规范,笔者只在windows的单节点9200端口上部署,仅用于测试和学习。 什么是分词查询: 指的是将输入的文本或查询语句切分成一个个独立的词语或词项,以便更好地处理和分析,然后进行查询,比如你在百度上搜索”成都......
  • 【精品】Springboot 接收发送日期类型的数据
    问题无法请求到后台,后台报错:[Failedtoconvertpropertyvalueoftype'java.lang.String'torequiredtype'java.time.LocalDateTime'forproperty:2023-10-02T09:26:16.069+08:00WARN14296---[p-nio-80-exec-1].w.s.m.s.DefaultHandlerExceptionRes......
  • SpringBoot 配置多数据源 dynamic-datasource(多库)
    1.Maven包com.baomidoudynamic-datasource-spring-boot-starter3.1.12.配置文件###MySQLdruid多数据源配置(纯粹多库)####去除durid配置spring.autoconfigure.exclude=com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure#指定默认数据源(必须配置)spring.d......
  • JDWP调试SpringBoot程序
    JDWP调试SpringBoot程序<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-loader</artifactId></dependency>java-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5050-jar&......
  • Springboot+Echarts+Element(二)
    今天主要是记录一些问题,主要是在使用vue通过axios发送请求的时候,起初我认为需要把vue和springboot整合到一块但是在听完课之后发现并不需要,因为vue的目的是实现前后端分离的开发,因此两个项目可以同时运行,调整vue项目就是改前端代码,调整springboot就是改后端代码,前端只负责发送请......
  • 关于在springboot中开发mybatis来实现前后端分离
    一、分层架构Controller:负责处理用户的请求和响应get请求与post请求的区别:get请求需要的在http协议上输入参数,而post请求不需要在http协议上输入参数,要在请求体中寻找参数。 在一次请求与响应过程中,首先浏览器发起一次请求到服务器,服务器中会有一个前端控制器处理请求,处理......
  • springboot整合sentinel,sleuth
     1. 整合sentinel流控当需要对一个接口进行流量监控时可以使用springboot整合sentinel  (1)在common模块中导入依赖spring-cloud-starter-alibaba-sentinel;  (2)下载sentinel控制台并启动;  (3)配置sentinel控制台地址信息spring.cloud.sentinel.transport.dashboa......
  • springboot第40集:架构师写的代码,那叫一个优雅
    事务的隔离性上,从低到高可能产生的读现象分别是:脏读、不可重复读、幻读。脏读指读到了未提交的数据。不可重复读指一次事务内的多次相同查询,读取到了不同的结果。幻读师不可重复读的特殊场景。一次事务内的多次范围查询得到了不同的结果。通过在写的时候加锁,可以解决脏读。通过在......