【SpringBoot】SpringBoot基础教程(18)
前言:
本文内容:定时执行任务、分布式系统理论、什么是RPC
推荐免费SpringBoot基础教程视频:【狂神说Java】SpringBoot最新教程通俗易懂_哔哩哔哩_bilibili
定时执行任务
1 | TaskScheduler 任务调度者 |
-
在service包下新建
ScheduledService
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24package com.jokerdig.service;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
/**
* @author Joker大雄
* @data 2022/7/30 - 10:38
**/
// 开启定时
public class ScheduledService {
// hello在特定的时间执行 cron计划任务
// cron 表达式 可以通过在线生成指定的cron表达式
// 秒 分 时 日 月 星期(0-7)
// @Scheduled(cron = "30 57 10 * * ?")
// 每两秒执行一次
public void hello(){
System.out.println("hello 现在被执行了");
}
} -
到指定时间后,就会执行
hello
方法1
hello 现在被执行了
分布式系统理论
什么是分布式系统
分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统
分布式系统是由一组通过网络进行通信,为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据。
Dubbo2.x
随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构的趋势,急需一个治理系统架构保证其有条不紊的严谨
单一应用架构
当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。
垂直应用架构
当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,提升效率的方法之一是将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。
分布式服务架构
当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。
流动计算架构
当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键。
Dubbo3.x
背景
- 首先,如何更好的满足企业实践诉求
- 其次,适配云原生技术栈的发展
总体目标
Dubbo3 依旧保持了 2.x 的经典架构,以解决微服务进程间通信为主要职责,通过丰富的服务治理(如地址发现、流量管理等)能力来更好的管控微服务集群;Dubbo3 对原有框架的升级是全面的,体现在核心 Dubbo 特性的几乎每个环节,通过升级实现了稳定性、性能、伸缩性、易用性的全面提升。
- 通用的通信协议。 全新的 RPC 协议应摒弃私有协议栈,以更通用的 HTTP/2 协议为传输层载体,借助 HTTP 协议的标准化特性,解决流量通用性、穿透性等问题,让协议能更好的应对前后端对接、网关代理等场景;支持 Stream 通信模式,满足不同业务通信模型诉求的同时给集群带来更大的吞吐量。
- 面向百万集群实例,集群高度可伸缩。 随着微服务实践的推广,微服务集群实例的规模也在不停的扩展,这得益于微服务轻量化、易于水平扩容的特性,同时也给整个集群容量带来了负担,尤其是一些中心化的服务治理组件;Dubbo3 需要解决实例规模扩展带来的种种资源瓶颈问题,实现真正的无限水平扩容。
- 更丰富的编程模型,更小的业务侵入。 在开发态业务应用面向 Dubbo SDK 编程,在运行态 SDK 与业务应用运行在同一个进程,SDK 的易用性、稳定性与资源消耗将在很大程度上影响业务应用;因此 3.0 应该具备更抽象的 API、更友好的配置模式、更少的侵占业务应用资源、具备更高的可用性。
- 更易用、更丰富的服务治理能力。 微服务的动态特性给治理工作带来了很高的复杂性,而 Dubbo 这方面一直做的不错,是最早的一批治理能力定义者与实践者;3.0 需面向更丰富的场景化,提供诸如可观测性、安全性、灰度发布、错误注入、外部化配置、统一的治理规则等能力。
- 全面拥抱云原生
什么是RPC
概述
RPC[Remote Procedure Call]是指远程过程调用,是一种进程见通信方式,他是一种技术的思想,而非规范。程序调用另一个地址空间(通常是共享网络的另一台机器)的过程或函数,而不用程序员显式编码这个远程调用的细节,即程序员无论调用本地还是远程的函数,本质上编写的调用代码基本相同。
RPC的核心模块
通信
-
RPC的远程调用为了保证数据的可靠性,默认采用TCP传输
-
网络传输的数据必须是二进制数据,但调用方请求的出入参数都是对象,对象无法在网络中传输,所以需要序列化。
-
服务方根据协议格式就可以从二进制数据中分割出不同的请求来,同时根据请求类型和序列化类型,把二进制的消息体逆向还原成请求对象,称为反序列化
-
服务方根据反序列化出来的请求对象找到对应的实现类,完成真正的方法调用,再将结果传输序列化之后通过 TCP 传输给调用方
-
调用方再反序列化即可获得应答对象
序列化
序列化就是将对象转换成二进制数据的过程,而反序列就是反过来将二进制转换为对象的过程。