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