自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 收藏
  • 关注

原创 java获取某个指定的包或类路径下所有方法的名字

由于公司业务,需要检查某个项目下controller包下所有Controller类的全部方法名,以便判断是否所有的方法都可以被事务和权限的拦截器拦截。并且需要找出没有被拦截到的方法名,以便进行归类,然后配置到拦截器中。

2023-03-02 15:59:13 636

原创 SpringCloud学习笔记 - 分布式系统全局事务管理 - Seata1.5.2+Nacos+OpenFeign

由于业务和技术的发展,单体应用被拆分成微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用三个独立的数据源,业务操作需要调用三个服务来完成。此时每个服务内部的数据一致性由本地事务来保证, 但是全局的数据一致性问题没法保证。Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。

2023-03-01 21:53:20 3306

原创 SpringCloud学习笔记 - Sentinel流控规则配置的持久化 - Sentinel

默认的的流控规则是配置在sentinel中的,又因为sentinel是懒加载的,只有当我们访问了一个请求的时候,sentinel才能监控到我们的簇点链路,我们才能对该链路进行流控配置,一旦我们重启应用sentinel将会丢失我们的监控链路,sentinel规则也将会消失,这样对我们的生产服务器的重新部署是非常不友好的。我们知道nacos中是内置了一个轻量化的数据库的,我们就可以将我们的流控规则通过一种方式配置在nacos中的,只要Nacos里面的配置不删除,sentinel上的流控规则就持续有效。

2023-02-25 21:53:03 966 3

原创 SpringCloud学习笔记 - @SentinelResource的fallback&blockHandler配置详解 - sentinel

也就是说会优先处理服务限流,保证高可用,不要卡死服务器。http://localhost:84/consumer/fallback/5,在没有降级处理的时候会直接报错,添加了fallback后进入降级处理方法。访问 http://localhost:84/consumer/paymentSQL/2,此时将9003服务提供者断开,84消费侧自动降级,不会被耗死。访问 http://localhost:84/consumer/fallback/1,多次访问,通过观察端口号可以发现,对支付服务进行了轮询访问。

2023-02-17 10:13:58 914

原创 SpringCloud学习笔记 - 自定义及解耦降级处理方法 - Sentinel

这时我们就需要定义自己的降级处理类,将我们自定义的降级处理方法放在一个统一的类中进行管理,从而将降级方法抽象出来,以便之后的方法复用,并且实现降级处理方法和现有业务逻辑代码的解耦

2023-02-14 15:22:51 351

原创 SpringCloud学习笔记 - 系统自适应限流 - Sentinel

Sentinel 系统自适应限流从整体维度对应用入口流量进行控制,结合应用的 Load、CPU 使用率、总体平均 RT、入口 QPS 和并发线程数等几个维度的监控指标,通过自适应的流控策略,让系统的入口流量和系统的负载达到一个平衡,让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。我们把系统处理请求的过程想象为一个水管,到来的请求是往这个水管灌水,当系统处理顺畅的时候,请求不需要排队,直接从水管中穿过,这个请求的RT是最短的;系统保护规则是应用整体维度的,而不是资源维度的,并且仅对入口流量生效。

2023-02-09 14:48:58 391

原创 SpringCloud学习笔记 - 热点参数限流 - Sentinel

何为热点?热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的 Top N 数据,并对其访问进行限制。比如:* 商品 ID 为参数,统计一段时间内最常购买的商品 ID 并进行限制* 用户 ID 为参数,针对一段时间内频繁访问的用户 ID 进行限制

2023-02-03 15:55:10 539

原创 SpringCloud学习笔记 - 熔断降级 - Sentinel

除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。一个服务常常会调用别的模块,可能是另外的一个远程服务、数据库,或者第三方 API 等。例如,支付的时候,可能需要远程调用银联提供的 API;查询某个商品的价格,可能需要进行数据库查询。然而,这个被依赖服务的稳定性是不能保证的。如果依赖的服务出现了不稳定的情况,请求的响应时间变长,那么调用服务的方法的响应时间也会变长,线程会产生堆积,最终可能耗尽业务自身的线程池,服务本身也变得不可用。

2023-01-30 21:54:10 748

原创 SpringCloud学习笔记 - 流控规则 - Sentinel

这里的流控指的是“流量控制”,进一步解释说明:资源名:唯一名称,默认请求路径。针对来源:Sentinel可以针对调用者进行限流,填写微服务名,默认default(不区分来源)。QPS(每秒钟的请求数量)︰当调用该API的QPS达到阈值的时候,进行限流。线程数:当调用该API的线程数达到阈值的时候,进行限流。是否集群:不需要集群直接:API达到限流条件时,直接限流关联:当关联的资源达到阈值时,就限流当前资源。

2023-01-17 21:53:31 1718

原创 SpringCloud学习笔记 - Sentinel概述

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。简而言之,sentinel就是为了做微服务的服务熔断、服务降级、服务限流、服务调用雪崩的,和Hystrix具有异曲同工之妙。

2023-01-12 16:23:59 565

原创 SpringCloud学习笔记 - Nacos集群配置和配置持久化

Nacos集群配置和配置持久化

2023-01-09 15:49:58 610

原创 SpringCloud学习笔记 - Nacos配置中心搭建 - Nacos Config

Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。

2022-12-17 22:01:58 2087

原创 SpringCloud学习笔记 - Nacos服务注册中心 - Nacos Discovery

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

2022-12-07 18:01:11 885

原创 SpringCloud学习笔记 -Spring Cloud Alibaba

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。诞生:2018.10.31,Spring Cloud Alibaba 正式入驻了Spring Cloud官方孵化器,并

2022-12-05 09:40:40 271

原创 SpringCloud学习笔记 - 链路监控 - SpringCloud Sleuth

在微服务框架中,一个由客户端发起的请求,在后端系统中会调用多个不同的的服务节点,来协同产生最后的响应结果,因此每一个前端请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误时都会引起整个请求最后的失败。因此就需要一个能够跟踪我们发出的请求调用了哪些服务,哪些服务出现了问题的组件,这时Sleuth就应运而生Spring Cloud Sleuth提供了一套完整的服务跟踪的解决方案在分布式系统中提供追踪解决方案并且兼容支持了zipkin。

2022-11-30 11:05:28 1288

原创 SpringCloud学习笔记 - 消息驱动 - Spring Cloud Stream

什么是Spring Cloud Stream?官方定义Spring Cloud Stream是一个构建消息驱动微服务的框架。应用程序通过inputs或者 outputs 来与Spring Cloud Stream中binder对象交互。通过我们配置来binding(绑定),而Spring Cloud Stream 的binder对象负责与消息中间件交互。所以,我们只需要搞清楚如何与Spring Cloud Stream交互就可以方便使用消息驱动的方式。

2022-11-26 21:00:37 280

原创 SpringCloud学习笔记 - 消息总线 - Spring Cloud Bus

消息代理中间件构建了一个共用的消息主题让所有微服务实例订阅,当该消息主题产生消息时会被所有微服务实例监听和消费。消息代理又是什么?消息代理是一个消息验证、传输、路由的架构模式,主要用来实现接收和分发消息,并根据设定好的消息处理流来转发给正确的应用。它在微服务之间起到通信调度作用,减少了服务之间的依赖。什么是 Spring Cloud BusSpring Cloud Bus 是 Spring Cloud 体系内的消息总线,用来连接分布式系统的所有节点。

2022-11-22 12:23:53 1476

原创 SpringCloud学习笔记 - 分布式配置中心 - config

Spring Cloud Config是用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持的。它由服务端和客户端构成:其中,服务端也称为分布式配置中心,是一个独立的微服务应用,用来连接配置仓库、为客户端提供支持;客户端则一般是各个微服务应用本身,它们通过指定服务端来管理自身的配置。Spring Cloud Config默认支持Git作为配置仓库,存储各个微服务的配置信息,同时也能支持其他的存储方式,如:码云、SVN、本地化文件系统。

2022-11-20 13:21:34 520 1

原创 SpringCloud学习笔记 - 微服务网关 - Spring Cloud Gateway

Spring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。Spring Cloud Gateway作为Spring Cloud生态系中的网关,目标是替代Netflix ZUUL,其不仅提供统一的路由方式,并且基于Filter链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等。

2022-11-16 18:30:35 416

原创 SpringCloud学习笔记 - 服务熔断、服务降级 - Hystrix断路器

Hystrix 是什么?在分布式环境中,许多服务依赖项中的一些必然会失败。Hystrix是一个延迟和容错库,通过添加延迟容忍和容错逻辑,帮助你控制这些分布式服务之间的交互。Hystrix通过隔离服务之间的访问点、停止级联失败和提供回退选项来实现这一点,所有这些都可以提高系统的整体弹性。Hystrix 有什么用?通过第三方客户端库访问(通常通过网络)的依赖项,提供对延迟和故障的保护和控制。停止复杂分布式系统中的级联故障。快速失败并快速恢复。在可能的情况下回退并优雅地降级。

2022-11-11 10:35:40 492

原创 SpringCloud学习笔记 - 服务调用、负载均衡组件 - OpenFeign

OpenFeign是一个显示声明式的WebService客户端。使用OpenFeign能让编写Web Service客户端更加简单。使用时只需定义服务接口,然后在上面添加注解。OpenFeign也支持可拔插式的编码和解码器。spring cloud对feign进行了封装,使其支持MVC注解和HttpMessageConverts。和eureka(服务注册中心)和ribbon组合可以实现负载均衡。

2022-11-06 15:28:12 168

原创 SpringCloud学习笔记 - 服务调用、负载均衡组件 - ribbon

负载均衡在系统架构中是一个非常重要,并且是不得不去实施的内容。因为负载均衡是对系统的高可用、网络压力的缓解和处理能力扩容的重要手段之一。我们通常所说的负载均衡都指的是服务端负载均衡,其中分为硬件负载均衡和软件负载均衡。硬件负载均衡主要通过在服务器节点之间按照专门用于负载均衡的设备,比如F5等;而软件负载均衡则是通过在服务器上安装一些用于负载均衡功能或模块等软件来完成请求分发工作,比如Nginx等。

2022-11-02 09:15:20 186

原创 SpringCloud学习笔记 - 注册中心组件 - consul

consul是常用的服务发现框架之一,consul是分布式的、高可用、横向扩展的。consul提供的一些关键特性:上图来自于consul官方文档我们只看数据中心1,可以看出consul的集群是由N个SERVER(服务端),加上N个CLIENT(客户端)组成的。而不管是SERVER还是CLIENT,都是consul的一个节点,所有的服务都可以注册到这些节点上,正是通过这些节点实现服务注册信息的共享。除了这两个,还有一些小细节,一一简单介绍:CLIENTCLIENT表示consul的client模式,就是

2022-10-31 09:59:23 393

原创 SpringCloud学习笔记 - 注册中心组件 - eureka

Eureka 是 Netflix 出品的用于实现服务注册和发现的工具,Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现Eureka采用C-S的设计架构,包含Eureka Server 和Eureka Client两个组件。

2022-10-30 11:39:02 492

原创 SpringCloud学习笔记 - 基础项目搭建

创建多服务的cloud应用的一般过程

2022-10-30 10:07:02 320

原创 spring学习笔记-从‘动态代理’理解spring的面向切面编程

1.面向切面编程中的一些专业术语横切关注点: 首先一个方法可能有很多关注点,那么多个方法就有多个关注点,但是这些方法的关注点中可能有一两个是所有方法都需要关注的,也就是横跨了多个模块(比如各个模块的增删改查,对数据库进行了操作,我们需要记录日志信息),那么我们就可以将这些点叫做横切关注点。通知方法: 通常在方法中我们比较关注的地方会做一些操作,不管是记录一些日志还是发送一些通知,这些都是通过方法进行的,并且因为这些方法高度通用,所以我们会将它抽象后定义到一个独立的class中,这个class就是“切面

2020-09-28 10:02:24 205

原创 spring学习笔记-java代理模式

1.什么是代理模式代理模式是面向对象编程中比较常见的设计模式。其目的就是避免用户直接接触实际的业务类而带来的不必要的麻烦,或者增强被代理类的功能而又不和被代理类的业务逻辑耦合。代理模式就像是给人穿上了一套“机械骨骼”,增强了人的身体机能,但是又可以随时脱掉,并不会像打了兴奋剂一样,进入容易再想出来就难了。代理模式主要分为静态代理和动态代理两种,但是这两种代理模式有一个共同的特点就是被代理类一定要实现一个接口。不管是静态代理还是动态代理他们底层的实现方式都是实现被代理类的接口。1.静态代理静态代

2020-08-28 20:29:54 152

原创 spring学习笔记-泛型依赖注入

1.简单继承结构的泛型依赖注入我们使用最简单的继承结构来实现泛型的依赖注入,带泛型的类baseEntity,继承了baseEntity的user和organization,以及一个方便理解泛型依赖注入是怎么回事。1.创建baseEntitypackage com.hao.spring.autowired.model;public class BaseEntity<T> { private Integer status; public Integer getSt

2020-08-28 20:26:44 477

原创 spring学习笔记-使用@autowired注解实现对象属性的自动装配

使用@autowired实现对象的依赖注入是spring的核心功能之一,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。1.使用@autowired实现依赖注入(DI)@autowired要做的工作其实就是初始化我们类的成员变量,不管是model中的属性字段,还是serviceImpl中我们要引用的其他接口对象,我们都可以使用@autowired来进行初始化操作。使用@autowired注解最大的好处就是简化我们操作。之前我们要将对象注入到IOC容器中,需要在xml中配置bean和.

2020-08-15 15:44:03 2626

原创 spring学习笔记-通过注解将对象注入IOC容器

1.通过注解将对象注入IOC容器我们可以通过使用以下四个注解的任意一个将类快速注入到IOC容器中,而不必再去applicationContext中进行繁琐的配置:@controller: org.springframework.stereotype.Controller控制器,推荐添加在控制类上@service: org.springframework.stereotype.Service业务逻辑,推荐添加在业务接口类上@repository: org.springframework.stere

2020-07-30 18:48:01 2347

原创 spring学习笔记-IOC容器中的自动装配和spEL表达式

1.使用autowire属性为自定义对象进行自动赋值我们可以在IOC容器中,使用autowire属性为bean中的引用数据类型进行自动赋值(也就是我们注册到IOC中的自定义对象,基本数据类型因为是要给定具体的值所以直接赋值就好了)。autowire分别有5个属性:default,no,byName,byType,constructor,采用不同的检索规则为对象赋值1. autowire="byName"通过属性名称在IOC容器中匹配id对应的bean对象当User中有一个Organization

2020-07-30 18:42:48 228

原创 spring学习笔记-通过context名称空间引入外部配置文件管理数据库连接池

1.传统方式创建一个数据库连接池package com.hao.test;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;public class DbConnectConfig { public static final String URL = "jdbc:mysql://192.168.1.160:3306/

2020-07-29 08:53:31 1161

原创 spring学习笔记-IOC容器中bean的生命周期和后置处理器

1.bean的生命周声明单例bean的生命周期: 从容器的创建开始到容器的关闭结束。实例bean的生命周期: 从容器中获取对象开始,到自行销毁对象结束。我们可以使用init-method和destroy-method方法为bean对象指定初始化对象或者销毁对象时需要做的操作。单例bean1. 在对象的class中创建需要执行的方法 public void initBean() { System.out.println("初始化方法"); } public void destroy

2020-07-20 19:49:40 176

原创 spring学习笔记-使用静态/实例工厂方法创建bean对象

1.IOC容器中bean的作用域我们可以在标签中使用scope属性来控制当前的bean对象的作用范围,scope的属性值有:singleton: 单例模式,在不指定scope的情况下bean的默认值。单例模式其实就是创建一个静态的bean对象,也就是在内存中单独开辟一个空间,将这个对象实实在在的放在这里,你用或者不用它就在这里。单例对象会在IOC容器创建时就创建完成,在调用时永远都是同一个对象(内存地址是相同的)。1.1.单例模式下对象在容器创建时就会创建完成,并且只会创建一次对象在获取IOC容器时

2020-07-20 19:44:27 1277

原创 spring学习笔记-IOC容器中bean的继承、抽象和依赖关系

1.bean的继承IOC容器中bean的继承和java或者其他语言中传统意义上的继承并不一样,它并不是说将其他class中的属性或方法继承过来(比如我们的业务对象继承baseEntity对象,它相当于是一个增量的继承),而IOC容器中bean的继承更像是克隆一样,当我们继承了其他bean对象时,我们就相当于得到了一个被继承bean的克隆体,我们只需要起一个别名(bean的id属性)就可以了,或者也可以修改其中的某个属性。在bean中使用parent属性继承bean对象<bean id="rule

2020-07-04 18:15:14 296

原创 spring学习笔记-在IOC容器中为复杂数据类型赋值

所有的基本数据类型我们都可以在property标签中使用value属性进行赋值,而所有的复杂数据类型的赋值都必须在property的标签体中进行

2020-07-04 14:36:52 204

原创 spring学习笔记-IOC容器如何为对象进行初始化赋值

在IOC容器中初始化对象有两种方式,一种是使用property调用set方法进行初始化赋值,另一种是调用constructor-arg调用有参构造器进行初始化赋值1.在bean中使用property调用set进行初始化赋值在bean中使用property标签进行初始化赋值,这种赋值方式会调用bean对象中的set方法进行赋值操作,它会先调用无参构造器创建对象,然后调用set方法进行赋值操作验证测试:添加无参构造器和打印输出,为set方法添加打印输出使用property进行初始化赋值在test中

2020-07-04 14:22:09 3646

原创 spring学习笔记-初步理解IOC容器

1.创建一个简单的spring项目1. 创建一个java项目,并导入spring-core的依赖jar包在项目下创建一个lib文件夹,将spring的核心jar包放入该文件夹,并将jar包引入项目(build path)2. 创建applicationContext.xml2.1. 在src(类的根路径)下创建一个xml文件,并写入统一的头声明<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spri

2020-07-01 20:33:02 211

原创 spring学习笔记-spring的核心模块介绍

1.下载spring所需的jar包jar包下载链接: spring Artifact Repository Browser进入jar包选择页面,选择自己想要下载的版本(我选择的是4.3.27),右键点击“Native Browser”进入下载页面,下载所需文件3. 解压“spring-framework-4.3.27.RELEASE-dist.zip”4. 解压后我们在lib文件夹下会看到60个jar文件,所有的jar文件都是以3个为一组,对应Spring的20个模块的功能.

2020-07-01 20:15:49 468

原创 spring学习笔记-什么是spring?

1.什么是spring?spring是一个开源的、轻量级的java应用程序开发框架,最初是由 Rod Johnson 编写的,并且于 2003 年 6 月首次在 Apache 2.0 许可下发布,它的主要特性是IOC(控制反转)和AOP(面向切面编程)。框架:框架就是一些别的大神写好的、可高度复用的代码抽取成的jar文件,你导入到自己的项目,在里面修修改改或者调东调西,然后感觉自己秒天秒地秒空气,java不值得的东西。2.spring的特点1.低浸入式spring并不会强制要求项目使用spri

2020-07-01 19:59:25 193

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除