自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring Cloud:使用TraceId进行日志追踪

微服务系统链路跟踪,使用 TraceId 来进行日志追踪

2022-08-23 09:46:29 2389 1

原创 GitFlow工作流

Gitflow是一种用于管理Git分支的颠覆性和新颖性策略。Gitflow在基于主干的工作流上越来越受欢迎,它被称为现代持续软件开发和DevOps模式的最佳实践。Gitflow同样可用于CI/CD。什么是Gitflow?Gitflow是一种多分支管理的Git分支模型。它由文森特·德里森 (Vincent Driessen) 在 nvie 首次发布。对比基于主干的开发模式,GItflow拥有数量更多,存活时间更长,更多提交的特点。在这种模式下,开发者创建一个功能分支并延迟将其合并到主干分支直到功能完成

2022-03-28 18:51:36 3873

原创 Nginx proxy_pass详解

Nginx 是最常用的反向代理工具之一,一个指令proxy_pass搞定反向代理,对于接口代理、负载均衡很是实用,但proxy_pass指令后面的参数很有讲究,通常一个/都可能引发一个血案。通常nginx配置proxy_pass指令时,如果proxy_pass后面的url加/,表示绝对根路径;如果没有/,表示相对路径,把匹配的路径部分代理上。url 只是 host,不带/例如: http://host- √ https://host- √ http://host...

2021-12-16 08:55:23 11112

原创 Docker网络模式

Docker原生支持四种网络模式,在创建容器时通过参数--net xxx 或者--network xxx 指定。 网络模式 简介 bridge 为每一个容器分配、设置 IP 等,并将容器连接到一个 docker0 虚拟网桥,默认为该模式。 host 容器将不会虚拟出自己的网卡,配置自己的 IP 等,而是使用宿主机的 IP 和端口。 none 容器有独.

2021-12-15 14:28:54 1049

原创 设计模式之状态模式

简介状态模式(State Pattern)允许对象在内部状态发生改变时改变它的行为,类的行为是基于它差的状态改变的。状态模式属于行为型模式。使用场景: 行为随状态改变而改变的场景; 代码中包含大量与对象状态有关的条件语句; 使用方式:将各种具体的状态类抽象出来,封装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。优点: 封装了转换规则。 将所有与某个状态有关的行为放到一个类中,并且可以方便地增加新的状态,只需要改变对象状态即可改变对象的.

2021-10-29 08:54:21 95

原创 Docker常用命令

前言Docker的命令非常多,文档也非常丰富,但是对新手却不容易熟悉,其实常用的命令基本在有限的十几个,在本文中,我们将重点介绍运行Docker关键命令。Docker 命令的规律 Docker CLI 管理命令以 docker 开头,然后是空格,接着是管理类别,然后是空格最后是命令。例如,docker container stop 这一命令可以停止容器。 引用特定容器或镜像的命令需要该容器或镜像的名称或 ID。 容器命令容器生命周期管理 run 创建一个新的容器并且启动

2021-08-11 16:53:02 127

原创 Spring Boot整合Drools规则引擎实例

1、DRools介绍官网:https://www.drools.org/规则引擎主要完成的就是将业务规则从代码中分离出来。DRools一款由JBoss组织提供的基于Java语言开发的开源规则引擎,目前由 Redhat 开源的规则引擎,它是 Redhat 的 KIE Group 中的组件之一,可以比较方便的跟另一个组件 JBPM 工作流配合用于管理复杂的规则流;同时 Drools 的推理策略算法在经典 Rete 算法以及其它算法的基础上做了多个版本的增强。DRools是一个具有基于前向链接和后向链

2021-08-09 11:31:36 2451

原创 规则引擎闲谈

1、什么是规则引擎规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。因为规则引擎将复杂的业务逻辑从业务代码中剥离出来,所以可以显著降低业务逻辑实现难度;同时,剥离的业务规则使用规则引擎实现,这样可以使多变的业务规则变得可维护,配合规则引擎提供的良好的业务规则设计器,不用编码就可以快速实现复杂的业务规则,同样,即使是完全不懂编程的业务人员,也可以轻松上手使用规则引擎来定义复杂的业务规则。业务系统运行过程中难免会发

2021-08-02 14:05:54 6804

原创 Spring Cloud:Seata分布式事务实例

快速开始用例用户购买商品的业务逻辑。整个业务逻辑由3个微服务提供支持: 仓储服务:对给定的商品扣除仓储数量。 订单服务:根据采购需求创建订单。 帐户服务:从用户帐户中扣除余额。 架构图仓储服务public interface StorageService {/*** 扣除存储数量*/void deduct(String commodityCode, int count);}订单服务public interface .

2021-06-24 17:58:25 525

原创 Spring Boot:整合基于RabbitMQ的消息队列

背景消息队列是微服务分布式系统的必要中间件,通过消息队列提供的可靠传递、广播、最终一致性和低耦合等一系列功能,我们可以快速实现异步通信、应用解耦和流量削峰等等。目前市面上主流的消息中间件有ActiveMQ、RabbitMQ、Kafka和阿里开源的RocketMQ等等,每个消息队列各有优劣(网上资料一堆,这里不做展开),如何选择具体需要根据实际业务综合考量。本文重点讨论基于RabbitMQ的消息队列整合和使用,帮助大家快速掌握RabbitMQ的基础知识。RabbitMQ介绍RabbitMQ是用

2021-06-10 13:38:20 198

原创 Spring Boot:动态多数据源切换集成和源码分析

概述在大型项目开发中,当数据量达到一定程度后,我们一般采用分库分表来实现数据层的拓展,面对复杂的存储层,相应的数据库中间件和多数据源切换的需求就应运而生。这里我们重点讨论下多数据源切换,多数据源的动态切换可以方便我们快速的实现主从读写分离、异构纯粹多库等动态数据库操作。常见的多数据源一般有以下两种解决方案:1、通过显示模式声明多数据源,应用切换。优点是简单,缺点是不易于拓展,强耦合。通过优先代理类实现动态切换,Spring的AbstractRoutingDataSource就是采用这

2021-06-07 14:02:53 4224

原创 Spring Cloud:基于xxl-job的分布式任务调度

什么是XXL-JOBXXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。XXL-JOB提供了许多特性,极大简化了任务调度的开发工作,从而做到开箱即用。XXL-JOB的设计思想是将调度行为抽象形成“调度中心”公共平台,而平台自身并不承担业务逻辑,“调度中心”负责发起调度请求。将任务抽象成分散的JobHandler,交由“执行器”统一管理,“执行器”负责接收调度请求并执行对应的JobHandler中业务逻辑。系统组成 调度模块(调度中心): 负责管.

2021-06-04 15:52:21 1649

原创 Docker:Docker-compose入门

Docker Compose介绍Compose是一个用于定义和执行多容器Docker应用程序的工具。通过Compose我们可以使用一个YAML配置文件定义多容器应用程序,然后通过一个简单的单一命令来创建和启动配置的所有服务。Docker-Compose 解决了容器与容器之间如何管理编排的问题。Docker Compose 的前身是 Fig。Fig 是一个由 Orchard 公司开发的强有力的工具,在当时是进行多容器管理的最佳方案。Fig 是一个基于Docker的Python工具,允许用户基于一个 Y

2021-05-31 10:27:35 392

翻译 Spring Boot:整合Mybatis和Mybatis Plus

什么是MyBatisMyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。Mybatis使用范例添加引用要使用 MyBatis, 只需将mybatis-x.x.x.jar文件置于类路径(class..

2021-05-28 09:37:22 915

原创 Docker:Docker容器入门

Docker是什么Docker 是一个开源的应用容器引擎,属于Linux容器的一种封装,提供简单易用的容器使用接口,是目前最流行的 Linux 容器解决方案。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,获得高度的灵活性,从而实现对容器的高效创建、部署及复制。Docker的原理Docker 技术使用Linux内核和内核功能(例如Cgroups和namespaces)来分隔进程,以便各进程相互独立运行。这种独立性正是采用容器的目的所在;它可以独立运行多种进程...

2021-05-26 10:22:55 477

原创 Spring Cloud:微服务之构建支持多存储方式的分布式文件存储服务

概述在微务系统架构中,分布式文件系统(Distributed File System,DFS)是必不可少的中间件。分布式文件系统是面对互联网的需求而产生,互联网时代对海量数据如何存储?靠简单的增加硬盘的个数已经满足不了我们的要求,因为硬盘传输速度有限但是数据在急剧增长,另外我们还要要做好数据备份、数据安全等。通过分布式文件系统我们可以将相同的文件同时存储到网络上多台服务器上,从而实现提供文件的访问效率和提高文件的可用性。目前各大主流云服务商都提供对象存储服务(OSS),也存在许多成熟的开源本地化部署

2021-05-24 10:31:43 1170

原创 Spring Cloud:Spring Boot Admin使用手册

版本号:Spring Boot Admin 2.4.1Spring Boot Admin简介Spring Boot Admin是一个开源社区项目,用于管理和监控SpringBoot应用程序。 应用程序作为Spring Boot Admin Client向为Spring Boot Admin Server注册(通过HTTP)或使用SpringCloud注册中心(例如Eureka,Consul,Nacos)发现。 UI是的VueJs应用程序,展示Spring Boot Admin Client的Actu

2021-05-20 11:47:58 448

原创 Spring Cloud:基于Redisson的分布式锁实现

什么是分布式锁在分布式系统中,为了保证数据的一致性,我们通常需要很多的技术方案支持,比如分布式事务、分布式锁等。其中分布式锁主要是为了解决多线程下资源抢占的问题,原理和平常所讲的锁原理基本一致,目的就是确保在多个线程、进程(服务)并发时,只有一个线程、进程(服务)在同一刻操作这个业务。分布式锁一般有以下三种实现: 基于数据库实现分布式锁; 基于缓存(Redis等)实现分布式锁; 基于Zookeeper实现分布式锁 本次我们重点讨论基于redis的分布式锁实现。什么是

2021-05-19 09:56:23 1884 1

原创 Spring Boot:基于Apache Shiro实现权限认证和授权

Apache Shiro简介Apache Shiro是一个安全开源框架,可用于处理认证、授权、session管理和加解密。 Authentication(认证):用户身份识别,通常被称为用户“登录”。 Authorization(授权):访问控制,比如某个用户是否具有某个操作的使用权限。 Session Management(会话管理):特定于用户的会话管理,甚至在非web或EJB应用程序。 Cryptography(加密):在对数据源使用加密算法加密的同时,保证

2021-05-17 15:26:40 584 2

原创 Spring Cloud:Gateway整合Springfox Swagger 3.0

前言2020年7月份Springfox 发布了3.0.0,增加了对Webflux、OpenApi 3的支持,适应Gateway。在微服务系统中,每个业务模块使用swagger管理接口文档,同时,可以使用业务网关聚合管理各微服务的接口文档,本文重点说明Spring Cloud Gateway集成Springfox swagger 3.0,以供参考。框架版本 Spring Boot 2.4.4 Spring Cloud 2020.0.2 Spring Cloud Alibaba

2021-05-11 14:01:15 5566 4

原创 Spring Boot:@RefreshScope原理

@RefreshScope的作用经过@RefreshScope注解修饰的bean,将被RefreshScope进行代理,用来实现配置、实例热加载,即当配置变更时可以在不重启应用的前提下刷新bean中相关的属性值。@RefreshScope注解@RefreshScope的实现如下,非常简单,最主要是@Scope("refresh")和ScopedProxyMode.TARGET_CLASS,表示@RefreshScope 是scopeName="refresh"的 @Scope,且代理模式为TAR

2021-05-10 10:39:10 9061 1

原创 Spring Cloud:Nacos配置中心

Nacos配置中心什么是配置中心在微服务架构中,当系统从一个单体应用,被拆分成分布式系统上一个个服务节点后,配置文件也必须跟着分割,这样导致配置分散、冗余,难以管理。如下图:总得来说,配置中心就是一种统一管理各种应用配置的基础服务组件。配置中心将配置从各应用中剥离出来,对配置进行统一管理,应用自身不需要自己去管理配置,让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。Nacos配置.

2021-05-07 10:14:41 790 2

原创 Spring Cloud:Nacos注册中心

Nacos注册中心什么是注册中心注册中心是微服务架构中的纽带,记录了服务和服务地址的映射关系。在分布式架构中,为什么需要注册中心。因为在没有注册中心时候,服务间调用需要知道被调方的地址,当服务更换部署地址,就不得不修改地址配置。而有了注册中心之后,当服务启动时,服务会把地址注册到服务注册中心,当服务调用方调用某个服务的时候,可以通过服务名字去服务注册中心获取可用的服务,服务注册中心会从服务列表获取所有可用的服务,然后根据负载均衡规则选择一个服务将服务的真实地址(ip:port)返回给调用方,

2021-05-07 10:07:02 120 2

原创 Spring Cloud:Nacos入门

什么是NacosNacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。Nacos 致力于发现、配置和管理微服务,Nacos 提供了一组简单易用的特性集,快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 的关键特性包括: 服务发现和服务健康监测:Nacos 支持基于 DNS 和基于 RPC 的服务发现,服务消费者可以使用DNS或HTTP API查找和发现服务 。同时Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送

2021-05-07 10:03:00 287

原创 Spring Boot:Spring Event的初步讲解

Spring提供了Event的功能,只要添加了spring-context依赖就可以引入,简单好用。要使用Event只要准备三个部分: 事件类:定义事件,继承ApplicationEvent的类成为一个事件类。 发布者:发布事件,通过ApplicationEventPublisher发布事件。 监听者:监听并处理事件,实现ApplicationListener接口或者使用@EventListener注解 举个例子定义发布者事件源通常是某个业务类,当它处理完自身的业务

2021-05-06 11:48:49 5172 1

原创 Spring Boot:@EnableAutoConfiguration和@Configuration的区别

SpringBoot提倡通过annotation来进行bean的配置,现在spring-boot里面常用的两种创建bean的方式有@EnableAutoConfiguration和@Configuration两种方式。@Configuration方式Spring Application在启动的时候,@ComponentScan注解会扫描包(路径可以指定,默认的情况下就是这个目录所在的包开始扫描),当扫描到@Configuration注解以后,就会初始化这个类下面所有加了@Bean的方法,并初始化这个

2021-05-06 11:34:20 2308

原创 Spring Boot:Spring异步注解@Async

简介应用场景 同步:同步就是整个处理过程顺序执行,当各个过程都执行完毕,并返回结果。异步:异步调用则是只是发送了调用的指令,调用者无需等待被调用的方法完全执行完毕;而是继续执行下面的流程。例如, 在某个调用中,需要顺序调用 A, B, C三个过程方法;如他们都是同步调用,则需要将他们都顺序执行完毕之后,方算作过程执行完毕; 如B为一个异步的调用方法,则在执行完A之后,调用B,并不等待B完成,而是执行开始调用C,待C执行完毕之后,就意味着这个过程执行完毕了。在Java中,一般在处理类似的...

2021-05-06 11:31:17 1234

原创 Spring Boot:整合Swagger3.0

Swagger介绍Swagger 是一套基于 OpenAPI 规范(OpenAPI Specification,OAS)构建的开源工具,可以帮助我们设计、构建、记录以及使用 REST API。OAS本身是一个API规范,它用于描述一整套API接口,包括一个接口是哪种请求方式、哪些参数、哪些header等,都会被包括在这个文件中。OpenAPI规范是在2015年由OpenAPI Initiative捐赠给Linux基金会的。该规范创建了RESTful接口,可通过有效映射与之关联的所有资源和操作来轻松开

2021-05-06 10:22:06 1291

原创 阿里云云效-Maven公共仓库

阿里云Maven中央仓库为阿里云云效提供的公共代理仓库,帮助研发人员提高研发生产效率,使用阿里云Maven中央仓库作为下载源,速度更快更稳定。阿里云云效是企业级一站式 DevOps 平台,覆盖产品从需求到运营的研发全生命周期,其中云效也提供了免费、可靠的Maven私有仓库Packages,欢迎您体验使用。 仓库名称 阿里云仓库地址 阿里云仓库地址(老版) 源地址 central ...

2021-05-06 10:09:36 1031

原创 Spring Cloud:网关 - Spring Cloud Gateway

版本:3.0.2Spring Cloud Gateway基于Spring生态提供了一套API Gateway,包括:Spring 5,Spring Boot 2和Project Reactor。Spring Cloud Gateway旨在提供一个简单、有效的API路由和一系列基础功能,如:安全,监控/指标和限流。1、引入Spring Cloud Gateway如果需要在项目中使用Spring Cloud Gateway,只需要在项目中引入spring-cloud-starter-gateway,

2021-04-30 15:19:53 645 1

原创 Spring Cloud:负载均衡 - Spring Cloud Loadbalancer原理

Spring Cloud 2020版本以后,默认移除了对Netflix的依赖,其中就包括Ribbon,官方默认推荐使用Spring Cloud Loadbalancer正式替换Ribbon,并成为了Spring Cloud负载均衡器的唯一实现。今天我们深入分析一下Spring Cloud Loadbalancer的具体实现:使用1、公共依赖Spring Cloud,例如版本2020.0.2<dependency> <groupId>org.sprin...

2021-04-23 17:03:26 24753 1

原创 Spring Cloud:Feign - 轻量级Restful HTTP客户端

什么是FeignFeign是一款Netflix开源的轻量级的Restful Http Client,实现了负载均衡和Rest调用的开源框架,封装了Ribbon(Spring Cloud 2020版本后替代为LoadBalancer)和RestTemplate,实现了面向接口编程,进一步降低了项目耦合度。官方定义:Feign makes writing java http clients easier.Feign is a Java to HTTP client binder inspire

2021-04-23 10:35:38 663

原创 Spring Boot:整合Logback日志

日志功能是系统的基础功能,日志功能方便我们输出想要的内容到控制台,或者输出到磁盘,尤其是异常日志输出,日志可以按天归档,按天或大小切分,Spring Boot本身内置日志功能。Spring Boot内部使用Commons Logging日志输出,以保证兼容各种日志框架实现,如Java Util Logging、Log4J2 和Logback。如果使用 spring-boot-starter,Logback将作为默认日志框架引入,当然你可以根据需要替换其他框架。开始使用引入spring-boot-

2021-04-22 15:24:41 229

原创 Spring Cloud:限流熔断 - 整合阿里Sentinel

Sentinel介绍随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel是阿里巴巴开源的分布式系统的流量防卫组件,Sentinel 把流量作为切入点,从流量控制,熔断降级,系统负载保护等多个维度保护服务的稳定性。Sentinel具有以下特征: 丰富的应用场景: Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、实时熔断下游不可用应用等。 完备的实时监控: Sentinel 同.

2021-04-22 15:17:50 189

原创 微服务架构技术栈

经过多年的发展,微服务已经成为了企业主流的架构首选,今天我们重新盘点一下微服务架构的技术栈,探讨微服务学习的全路径。什么是微服务维基百科定义:微服务(Microservices)是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块为基础,利用模块化的方式组合出复杂的大型应用程序,各功能区块使用与语言无关的API集相互通信。2014年,Martin Fowler与James Lewis共同提出了微服务的概念,定义了微服务是由以单一应用程序构成的小服务,自己拥有自己的行程与轻量化处理,.

2021-04-22 13:52:47 1427 1

空空如也

空空如也

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

TA关注的人

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