自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 OpenFeign集成Sentinel实现服务的熔断降级

前面我们已经介绍了Sentinel的各种特性,接下来我们一起来看看OpenFeign对Sentinel的集成吧。

2022-09-17 23:11:22 1966 1

原创 Spring Cloud Gateway集成Sentinel流控

Sentinel 支持对 Spring Cloud Gateway、Zuul 等主流的 API Gateway 进行限流。:网关限流规则,针对 API Gateway 的场景定制的限流规则,可以针对不同 route 或自定义的 API 分组进行限流,支持针对请求中的参数、Header、来源 IP 等进行定制化的限流。:用户自定义的 API 定义分组,可以看做是一些 URL 匹配的组合。比如我们可以定义一个 API 叫my_api,请求 path 模式为/foo/**和/baz/**的都归到my_api。

2022-09-17 23:10:33 670

原创 Sentinel集成Nacos对流控与降级规则的持久化

在上一篇我们介绍了流控和降级熔断这几个概念,并对Sentinel的流控与降级的规则进行了进一步的阐述。但是我们之前在控制台配置的规则,控制台是默认通过API推送至客户端并直接更新到内存中。一旦我们重启应用,这些规则便会消失,所以,接下来就让我们一起来看看如何将这些规则持久化吧。

2022-09-09 17:34:35 1208

原创 Sentinel的流控与熔断降级规则详解

FlowSlot会根据预设的规则,结合前面、、统计出来的实时信息进行流量控制。限流的直接表现是在执行的时候抛出异常。是的子类,您可以捕捉来自定义被限流之后的处理逻辑。同一个资源可以创建多条限流规则。FlowSlot会对该资源的所有限流规则依次遍历,直到有规则触发限流或者所有规则遍历完毕。resource:资源名,即限流规则的作用对象count: 限流阈值grade: 限流阈值类型(QPS 或并发线程数)limitApp: 流控针对的调用来源,若为default则不区分调用来源strategy。

2022-09-09 00:29:01 2580

原创 常见的负载均衡策略分析

也可以在yml里面配置spring : cloud : nacos : discovery : server-addr : weight : #默认1,注意配置范围是0~1我们除了使用上面自带的负载均衡策略以外,我们还可以自己实现,如何实现可以参考这篇文章我就不再赘述。

2022-09-04 21:44:27 314

原创 MySQL默认字符集设置

在MySQL 8.0版本之前,默认字符集为latin1,utf8字符集指向的是utf8mb3。网站开发人员在数据库设计的时候往往会将编码修改为utf8字符集。如果遗忘修改默认的编码,就会出现乱码的问题。从MySQL8.0开始,数据库的默认编码将改为utf8mb4 ,从而避免上述乱码的问题。使用以下命令可以查看MySQL的默认字符集。

2022-09-04 21:42:36 14357 1

原创 @SentinelResource详解

Sentinel需要先把可能需要保护的资源定义好,之后再配置规则。也可以理解为,只要有了资源,我们就可以在任何时候灵活地定义各种流量控制规则。在编码的时候,只需要考虑这个代码是否需要保护,如果需要保护,就将之定义为一个资源。主流框架的默认适配抛出异常的方式定义资源返回布尔值方式定义资源注解方式定义资源异步调用支持这里我不再一一的详细介绍,想要详细了解每种方式的同学可以自行查阅官网。

2022-09-04 21:41:49 5827 1

原创 Sentinel的安装与配置

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。Sentinel 是由阿里巴巴中间件团队开发的开源项目,是一种面向分布式微服务架构的轻量级高可用流量控制组件Sentinel 主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度帮助用户保护服务的稳定性。丰富的应用场景。

2022-09-04 21:41:11 3845 1

原创 Nacos整合Gateway实现动态路由

前面我们已经介绍了Nacos的安装与配置,集成Nacos作为服务的注册中心和配置中心,集成Nacos实现服务的负载均衡和一些常见的负载均衡策略、使用Dubbo、OpenFegin进行RPC调用以及整合Spring Cloud Gateway作为服务的网关和Gateway的过滤器配置接下来就让我们一起来看看Spring Cloud Gateway的动态路由以及负载均衡。

2022-09-04 21:40:39 7904 1

原创 Spring Cloud Gateway过滤器配置

当请求与路由匹配时,过滤 Web 处理程序会将 的所有实例和所有特定于路由的实例添加到过滤器链中。这个组合的过滤器链是按接口排序的,你可以通过实现getOrder()方法来设置。由于 Spring Cloud Gateway 区分过滤器逻辑执行的“前”和“后”阶段(请参阅它的工作原理),具有最高优先级的过滤器是“前”阶段的第一个和“后”阶段的最后一个阶段。参考示例/**log . error("用户名为null,非法用户");} /**

2022-09-04 21:39:48 2234

原创 Nacos整合Gateway入门示例

我们知道在微服务架构中,大型服务都被拆分成了独立的微服务,每个微服务通常会以RESTFUL API的形式对外提供服务。但是在UI方面,我们可能需要在一个页面上显示来自不同微服务的数据,此时就会需要一个统一的入口来进行API的调用。API 网关就在此场景下充当了多个服务的大门,系统的统一入口,从面向对象设计的角度看,它与外观模式类似,API 网关封装了系统的内部复杂结构,同时它还可能具有其他API管理/调用的通用功能,如认证,限流,流控等功能。Spring Cloud全家桶中有一个很重要的组件就是网关。

2022-09-04 21:39:01 724

原创 Nacos整合OpenFegin实现RPC调用

Spring Cloud OpenFeign 是声明式的服务调用工具,它整合了Ribbon和Hystrix,拥有负载均衡和服务容错功能Feign是声明式的服务调用工具,我们只需创建一个接口并用注解的方式来配置它,就可以实现对某个服务接口的调用,简化了直接使用来调用服务接口的开发量。Feign具备可插拔的注解支持,同时支持Feign注解、JAX-RS注解及SpringMvc注解。当使用Feign时,Spring Cloud集成了Ribbon和Eureka以提供负载均衡的服务调用及基于Hystrix。

2022-09-04 21:38:19 2660

原创 Spring Cloud集成Dubbo实现RPC调用

是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提供了 Java、Golang 等多语言 SDK 实现。使用 Dubbo 开发的微服务原生具备相互之间的远程地址发现与通信能力, 利用 Dubbo 提供的丰富服务治理特性,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。Dubbo 被设计为高度可扩展,用户可以方便的实现流量拦截、选址的各种定制逻辑。Dubbo比起OpenFegin支持多种传输协议支持更多的负载均衡算法支持多种容错策略开箱即用高度可扩展。

2022-09-04 21:37:24 1202

原创 LoadBalancer集成Nacos实现负载均衡

前面我们已经介绍了Nacos的安装与配置,以及集成Nacos作为服务的注册中心。接下来,我们接着上一讲,我们使用自带的来实现负载均衡。

2022-09-02 19:18:04 5721 4

原创 Spring Cloud集成Nacos作为配置中心

配置中心,顾名思义,就是用来统一管理项目中所有配置的系统。在微服务架构中,当系统从一个单体应用,被拆分成分布式系统上一个个服务节点后,配置文件也必须跟着迁移(分割),这样配置就分散了,不仅如此,分散中还包含着冗余。配置中心将配置从各应用中剥离出来,对配置进行统一管理,应用自身不需要自己去管理配置。如果一个中型的项目,不采用配置中心的模式,一大堆的各类配置项,各种不定时的修改需求,一定会让开发同学非常头疼且管理十分混乱。所以,我们需要使用配置中心对这些配置进行集中管理。配置项容易读取和修改。

2022-09-02 19:17:23 3485

原创 Spring Cloud集成Nacos作为注册中心

前面我们已经介绍过如何准备 以及 环境了,接下来就让我们继续接着上一讲开始使用 集成 作为注册中心吧 最为核心功能:服务治理,随着微服务概念的流行,越来越多的系统被拆分成了多个服务,每个服务进行分布式部署,又因为服务与服务之间可能会互相调用,为了更好的管理服务与服务之间的调用关系,那么就需要一个注册中心来注册这些服务,消费者只需要拉取对应的服务列表,然后选择对应的负载均衡策略,选择其中一个服务调用就是常用的服务注册中心有: ,今天我们主要介绍 的功能非常强大,也比较容易使用,支持 和 模型(相对于 只

2022-09-02 19:15:58 280

原创 Nacos的安装与配置

是Spring Cloud Alibaba的开源组件之一,它不仅可以像Consul、Eureka那样作为注册中心,还可以像Spring Config那样作为远程的配置中心,并且,它还有很多自己的特性,下面我们看看官网对它的介绍:Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 致力于帮助您发现、配置和管理微服务。

2022-09-02 19:15:10 2369

原创 Spring Security集成JWT实现权限认证

基于角色的访问控制(RBAC)是实施面向企业安全策略的一种有效的访问控制方式。其基本思想是,对系统操作的各种权限不是直接授予具体的用户,而是在用户集合与权限集合之间建立一个角色集合。每一种角色对应一组相应的权限。一旦用户被分配了适当的角色后,该用户就拥有此角色的所有操作权限。这样做的好处是,不必在每次创建用户时都进行分配权限的操作,只要分配用户相应的角色即可,而且角色的权限变更比用户的权限变更要少得多,这样将简化用户的权限管理,减少系统的开销。

2022-08-24 11:21:53 810 1

原创 你真的会手写单例吗?

今天在刷牛客看面经的时候遇到手写单例的面试题,本来以为这是一件很简单的事情,但是真的当我准备写的时候一时竟让不知道从何写起,平时很少注意到这些细节。所以,在经过学习之后将其总结成这篇文章我们一个一个问题逐步来分析,单例模式我这里不做详细介绍,其大概的意思就是全局只有这一个类。既然如此,要满足全局只有这一个类,那么我们首先需要想到,这样,其他的类就不能创建该类了既然构造器已经私有,那么我们还需要提供一个公共的方法供其他类调用,因此,OK,基本的概念我已经介绍完毕了,那么我们来看看手写单例的六种方式吧。...

2022-08-11 00:46:14 119

原创 Netty心跳机制详解

心跳其实就是指在TCP长连接中,客户端和服务端之间发送心跳包来确认彼此存活。如果超过一段时间并未接收到心跳包,那么就会关闭TCP连接,释放资源。因为网络环境的复杂性,客户端和服务端在保持TCP长连接的时候有可能因为断电、断网等意外情况导致客户端和服务端断开连接。而如果在这段时间内,客户端和服务端恰好没发生交互的话那么在短时间内很难感知到对方已经下线,白白浪费资源所以,TCP就引入了心跳机制,通过客户端和服务端每间隔一段时间发送心跳包的方式来感知对方是否存活。一旦在规定的时间内并没有感知到对方的心跳,那么就

2022-07-05 14:27:06 1748

原创 Java中的XML解析

这几天在手写Spring IOC的时候遇上了xml文件的解析,通过解析Spring.xml配制文件的方式来创建对象。因为之前从来都没遇见过相关的需求,所以对此做一份记录XML (eXtensible Markup Language) 意为可扩展标记语言,被多数技术人员用以选择作为数据传输的载体,成为一种通用的数据交换格式,xml的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的便利。在不同的语言中,解析mxl的方式都是一样的,只不过实现的语法不同而已。XML解析主要有两种方式,一种称为D

2022-07-04 13:41:42 3063

原创 Kryo,Hessain,Protostuff三种序列化方式对比

前段时间在写RPC框架的时候用到了Kryo、Hessian、Protostuff三种序列化方式。但是当时因为急于实现功能,就只是简单的的看了一下如何使用这三种序列化方式,并没有去深入研究各自的特性,以及优点和缺点。知道现在就将RPC框架写完了之后,才有时间静下心来对三种方式做一个对比,总结。Kryo、Hessain、Protostuff都是第三方开源的序列化/反序列化框架,要了解其各自的特性,我们首先需要知道序列化/反序列化是什么:如果对序列化相关概念还不是很清楚的同学可以参照美团技术团队的这篇文章:美团

2022-07-02 13:24:48 1014

原创 ThreadLocal详解

这几天看《Java并发编程之美》的时候又遇到了这个类,不得不说,这个类在平时很多场景都遇得到,所以对其进行一个系统性的学习,然后再输出成这篇博客。那么,什么是ThreadLocal呢?我们都知道,多线程访问同一个共享变量很容易出现并发问题,特别是当多个线程对同一个共享变量进行写入操作时。一般为了避免这种情况,我们会使用这个关键字对代码块加锁。但是这种方式一是会让没获取到锁的线程进行阻塞等待,二是需要使用者对锁有一定的了解,无疑提高了编程的难度。其实ThreadLocal 就可以做这件事情,虽然Threa

2022-07-01 13:23:39 2448

原创 使用Idea搭建Spring源码阅读环境

之前一直想要拜读的源码,但是因为前段时间忙着应付学校的考试所以就一直没来得及准备。前几天总算考完了,然后准备开始看一下的源码。又因为想要自己写一点注释,然后跟着项目一步一步的Debug,所以最好还是将的源码克隆下来在本地进行测试以及添加注释比较好。虽然看着很简单,但是在开始做这件事的时候还是走了很多弯路,浪费了不少时间,所以我将我遇到的坑记录下来,给大家做一个参考。首先,我们需要在github上找到的仓库,点击,然后将链接复制,进行克隆。但是,鉴于大家并没有魔法,所以很可能克隆项目克隆一个小时都拉不下来,大

2022-06-14 20:28:13 464

原创 JaveWeb 工资管理系统

这是一个基于原生Servlet整合Mybatis,Druid,token的工资管理系统

2022-06-09 22:09:01 946 3

原创 JSR303数据校验

JSR303数据校验,让你的代码变得更“优雅”

2022-06-09 21:13:41 335 1

原创 Java的值传递

Java的值传递前因前几天在力扣刷题,就是经典的杨辉三角 这道题,这道题虽然是简单题,但是在写的时候还是遇见了很多细节上的问题。这是我的完整代码:package cuit.epoch.pymjl.practice;import java.util.ArrayList;import java.util.List;/** * @author Pymjl * @version 1.0 * @date 2022/5/5 17:05 **/public class Main { p

2022-05-05 19:28:15 328

原创 ZooKeeper入门介绍

ZooKeeper入门介绍概述ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、分布式同步、集群管理、分布式事务等等。ZooKeeper 由 Yahoo 开发,后来捐赠给了 Apache ,现已成为 Apache 顶级项目。ZooKeeper 是一个开源的分布式应用程序协调服务器,其为分布式系统提供一致性服务。其一致性是通过基于 Pax

2022-05-05 14:49:52 634

原创 Dubbo中的SPI机制

Dubbo中的SPI机制概述Service Provider Interface 即 SPI,是JDK内置的一种服务提供发现机制,可以用来启用框架扩展和替换组件。可以让不同的厂商针对统一接口编写不同的实现SPI实际上是“接口+策略模式+配置文件”实现的动态加载机制。在系统设计中,模块之间通常基于接口编程,不直接显示指定实现类。一旦代码里指定了实现类,就无法在不修改代码的情况下替换为另一种实现。为了达到动态可插拔的效果,java提供了SPI以实现服务发现。SPI机制的应用场景有很多,我们比较常用的就是

2022-05-04 21:24:49 314

原创 注解+反射

注解入门介绍此处观看更佳完整代码地址1.概述 Annotation中文翻译过来就是注解、解释的意思。我们常用的 @Resource @PostMapping等都是框架自定义的注解 ,注解一般拥有自己的属性,我们在使用注解的时候可以给注解传参,然后通过反射获取到注解,进而再拿到我们传入的值。所以注解一般会和反射搭配使用。注解和class interface一样,也是一种类型,它是在 Java SE 5.0 版本中开始引入的概念。我们通过@interface来自定义注解,如下就是注解的定义方式。一定

2022-04-30 15:57:30 415

原创 静态代理和动态代理

静态代理和动态代理此处观看更佳1.什么是代理?代理是指设计模式中的代理模式,如下是网上对代理模式的定义:代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。代理模式的主要优点有:代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用;代理对象可以扩展目标对象的功能;代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度,增加了程序的可扩展性其主要缺点是:

2022-04-30 15:56:15 115

原创 Kryo+Netty传输序列化对象

Kryo+Netty传输序列化对象此处观看更加本文的完整代码可以在此查看1.概述这段时间不是一直想要使用Netty模仿一下dubbo,自己写一个RPC框架嘛,然后在学习的过程中还是学到了不少新东西。我们知道在网络传输中,数据都是以二进制流来传输,但是在Java中数据都是以对象的形式来存储,所以我们想要传输数据,这就涉及到对象的序列化以及反序列化了。而我们知道,不同的序列化协议适用不同的应用场景,jdk原生的序列化方式因为其性能原因绝大多数的人都不会考虑使用它,而我们想要写一个高性能的RPC框架,一个

2022-04-30 15:54:56 779

原创 Netty实战

Netty实战此处观看更加使用Netty实现一个简单的RPC框架RPC是什么,原理是什么网上很多大神都有在总结,我就不再重复。如果对RPC还不是很了解的同学不妨先去了解一下基本的概念这个实例仅仅只是学习Netty的一个很小的样例,实际上,它离真正的RPC还差得远,写这个的目的仅仅只是为了熟悉Netty一个真正的RPC至少应该具备以下的功能:注册中心网络传输序列化和反序列化动态代理负载均衡传输协议需求:模仿 dubbo,消费者和提供者约定接口和协议,消费者远程调用提供者的服务,

2022-04-30 15:51:43 1834 1

原创 Netty学习笔记

Netty学习笔记我的个人博客1.思维导图本篇文章是对思维导图的一个补充,笔记是根据尚硅谷的Netty教程整理总结点击下载思维导图2.概述Netty 是由 JBOSS 提供的一个 Java 开源框架。Netty 提供异步的、基于事件驱动的网络应用程序框架,用以快速开发高性能、高可靠性的网络 IO 程序Netty 可以帮助你快速、简单的开发出一个网络应用,相当于简化和流程化了 NIO 的开发过程Netty 是目前最流行的 NIO 框架,Netty 在互联网领域、大数据分布式计算领域、游戏行

2022-04-30 15:47:52 127

原创 idea实现热部署

title: idea实现热部署date: 2021-08-23 13:32:561.依赖准备springboot项目实现热部署需要导入以下依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <versi.

2021-08-31 23:05:01 151

原创 SpringCloud概述

title: SpringCloud概述date: 2021-08-27 15:53:331.什么是微服务什么是微服务?打个很简单的比方,微服务就好像活字印刷术中的一个个字体模板,也被称为模块,每一个模块都可以单独的起作用,可以独立的部署运行,相互解耦。即便当中的某一个模块出了问题,也不影响其它的模块正常运行。每个模块之间采用轻量级交互(通常是http协议)微服务和传统的单体架构比起来有什么好处?在了解springcloud之前,先来了解单体架构是什么?传统单体架构典型代表就是一个应用、.

2021-08-31 23:02:25 1420

原创 Eureka入门介绍

title: Eureka入门介绍date: 2021-08-31 10:36:481.Eureka服务注册Spring Cloud Eureka是Spring Cloud Netflix微服务套件中的一部分,它基于Netflix Eureka做了二次封装。主要负责完成微服务架构中的服务治理功能。在微服务规范中,通常都会构建一个(或多个)注册中心,每个微服务都会在服务中心注册自己,并且每隔一段时间都会向服务中心发送心跳以证明自己还活着。如果超过一段时间没有发送心跳那么服务中心会干掉这个服务,以达到.

2021-08-31 23:01:10 192

原创 理解BIO、NIO这一篇就够了

title: IO流详解date: 2021-07-29 00:14:32此笔记源于B站黑马BIO、NIO教程视频教程第一章 Java的I/O演进之路1.1 I/O 模型基本说明I/O 模型:就是用什么样的通道或者说是通信模式和架构进行数据的传输和接收,很大程度上决定了程序通信的性能,Java 共支持 3 种网络编程的/IO 模型:BIO、NIO、AIO实际通信需求下,要根据不同的业务场景和性能需求决定选择不同的I/O模型1.2 I/O模型Java BIO同步并阻塞(传统阻塞型),服务.

2021-07-30 10:47:11 552

原创 nginx学习笔记

title: nginx新手入门详解date: 2021-07-19 18:56:13Nginx简介一个项目或平台,用户使用量少,并发量小的情况下,一台 Tomcat 服务器就可以满足需求。但当平台用户量增多,并发量增大时,一台 Tomcat 服务器就不能够很好地支撑。于是就需要做横向扩展,多增加几台服务器,并设置一个代理服务器。用户如果要访问平台首先会经过代理服务器,代理服务器实现处理用户的请求和转发到真实服务器,也就是反向代理。在做横向扩展后,每台服务器的大小、性能可能各不相同。代理服务器需要根.

2021-07-30 10:36:48 174

原创 Typora-Picgo-七牛云自动上传图片到图床

title: Typora+Picgo+七牛云自动上传图片到图床date: 2021-07-29 19:48:31引言之前记笔记写博客的时候一直苦于Typora插入图片太麻烦,尤其是我要将我自己的.md文件上传到自己的个人网站,又要上传到CSDN上,图片路径变来变去真的是不要太麻烦。那么有没有什么更好的方式能来解决这个问题呢?肯定是有的,高版本的Typora已经支持上传图片了,那么我们就可以通过Picgo自动将图片上传到图床。这里还需要用到第三方云存储库,因为我有自己已经备案过的域名,所以我就用的每.

2021-07-30 10:25:04 262 2

空空如也

空空如也

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

TA关注的人

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