微服务
文章平均质量分 84
微服务
小毕超
善于钻研思考,乐于追求新知识,热爱微服务架构,国内软考高级系统架构设计师职称,国际TOGAF鉴定级企业架构设计师、PMP项目管理师,华为云·云享专家,CSDN博客专家。曾获“联想杯”移动互联比赛 江苏省一和国二成绩,第四届全国应用型人才比赛“兄弟连杯”国一成绩。
展开
-
Fast-Retry 高性能百万级任务重试框架介绍及使用
Fast-Retry 是一个高性能任务重试框架,可以支持百万级别任务的并发重试处理。与 Spring-Retry 不同,Fast-Retry 支持异步任务的重试、超时等待、回调 等功能。原创 2024-07-21 15:51:10 · 395 阅读 · 0 评论 -
Sentinel Dashboard 规则联动持久化方案
Sentinel 是阿里开源的一个流量控制组件,它提供了一种流量控制、熔断降级、系统负载保护等功能的解决方案。并且我们通过 Sentinel Dashboard 可以非常便捷的添加或修改规则策略,但是如果细心的小伙伴应该可以发现,默认情况下通过 Sentinel Dashboard 添加或修改的规则并没有进行持久化,服务重启后先前的规则也就消失了,这对于生产环境肯定是不允许的,那如何进行持久化操作呢?原创 2024-05-26 14:57:27 · 737 阅读 · 0 评论 -
K8s 搭建 FileBeat+ELK 分布式日志收集系统 以及 KQL 语法介绍
Filebeat 是一个轻量级的日志传输工具,它负责收集日志数据并将其传输到Elasticsearch进行索引和存储。ELK是Elasticsearch、Logstash和Kibana三个开源项目的首字母缩写,它们共同构成了一个强大的日志管理和分析平台。原创 2024-05-18 08:00:00 · 1376 阅读 · 0 评论 -
Istio 使用 Apache SkyWalking 进行服务链路追踪、链路监控告警
SkyWalking是一个开源的观测平台,用于从服务和云原生等基础设施中收集、分析、聚合以及可视化数据,SkyWalking 提供了一种简便的方式来清晰地观测分布式系统,甚至可以观测横跨不同云的系统,SkyWalking 更像是一种现代的应用程序性能监控(Application Performance Monitoring,即APM)工具,专为云原生,基于容器以及分布式系统而设计。原创 2024-05-11 17:06:08 · 1216 阅读 · 0 评论 -
Istio 流量管理(请求路由、流量转移、请求重试、流量镜像、故障注入、熔断等)介绍及使用
Istio是一个开源的服务网格,它为分布式微服务架构提供了网络层的抽象。它使得服务之间的通信变得更为可靠、安全,并且提供了细粒度的流量管理、监控和策略实施功能。Istio通过在服务之间插入一个透明的代理(Envoy)来拦截所有网络通信,从而实现这些功能。这样,开发者就可以专注于业务逻辑,而不必处理服务发现、负载均衡、故障恢复、安全性等网络问题。原创 2024-05-05 16:10:41 · 1386 阅读 · 0 评论 -
Spring Cloud Kubernetes 本地开发环境调试
Spring Cloud Kubernetes 本地开发环境调试原创 2024-05-01 21:51:59 · 1622 阅读 · 0 评论 -
Spring Cloud Kubernetes 实践 服务注册发现、服务动态配置
随着云计算和微服务架构的不断发展,k8s 和Spring Cloud成为了当今技术领域的两大热门话题。k8s作为一个开源的容器编排平台,已经在自动化部署、扩展和管理方面取得了巨大的成功,而Spring Cloud则以其丰富的生态和语言亲和性,为Java开发者提供了便利的微服务框架支持。在现如今的技术趋势下,两者融合已经成为了必要的方向。原创 2024-05-01 21:50:14 · 1367 阅读 · 0 评论 -
Nacos 集群 On K8s 实践服务注册发现、服务动态配置
Nacos 集群 On K8s 实践服务注册发现、服务动态配置原创 2024-04-27 19:21:21 · 1441 阅读 · 0 评论 -
KubeSphere - 搭建 nacos 集群
一、KubeSphere - 搭建 nacos 集群上篇文章我们实验了通过 KubeSphere 在 k8s 集群中搭建 elasticsearch 集群 及 可视化工具 kibana,本篇文章我们一起实验下 通过 KubeSphere 在 k8s 集群中搭建 nacos 集群,下面是上篇文章的地址:https://blog.csdn.net/qq_43692950/article/details/122834930在实验开始前,请确保已经安装完成了k8s 及 kubesphere 环境:原创 2022-02-09 12:33:17 · 5812 阅读 · 12 评论 -
美团分布式 ID 框架 Leaf 介绍和使用
然而,随着应用程序的规模不断扩大,以及对性能和可扩展性的需求不断增加,传统的软件架构和设计模式也在不断地面临挑战。算法的方式,可以解决上述提到的问题,并且稳定性和灵活性都非常高,但强依赖于机器时钟,如果机器上时钟回拨,会导致发号重复或者服务会处于不可用状态。的方式,实现起来非常简单,并且ID是单向自增顺序的,但缺点也很明显,过度依赖于 DB 数据库,在并发量高的情况下数据库成为了性能瓶颈。个字符,优点是性能非常高,本地生成,没有网络消耗,但缺点也显而易见,首先不易于存储,的实现方式有多种多样,常见的包括。原创 2024-03-02 21:01:03 · 2444 阅读 · 0 评论 -
AOP+Redisson 延时队列,实现缓存延时双删策略
关于缓存和数据库中的数据保持一致有很多种方案,但不管是单独在修改数据库之前,还是之后去删除缓存都会有一定的风险导致数据不一致。而延迟双删是一种相对简单并且收益比较高的实现最终一致性的方式,即在删除缓存之后,间隔一个短暂的时间后再删除缓存一次。这样可以避免并发更新时,假如缓存在第一次被删除后,被其他线程读到旧的数据更新到了缓存,第二次删除还可以补救,从而时间最终一致性。原创 2024-01-28 12:18:26 · 1055 阅读 · 0 评论 -
Python Tornado 实现SSE服务端主动推送方案
SSE是Server-Sent Events的简称,是一种服务器端到客户端(浏览器)的单项消息推送。对应的浏览器端实现Event Source接口被制定为HTML5的一部分。相比于WebSocket,SSE 简单很多,服务器端和客户端工作量都要小很多、简单很多,同时实现的功能也要有局限,而Tornado又是Python中的一款优秀的高性能web框架,本文带领大家一起实践下Tornado SSE的实现。原创 2024-01-21 14:40:45 · 1354 阅读 · 1 评论 -
分布式锁实现方案 - Lock4j 使用
Lock4j 是一个分布式锁组件,其提供了多种不同的支持以满足不同性能和环境的需求,立志打造一个简单但富有内涵的分布式锁组件,并且支持redission,redisTemplate,zookeeper 可混用,支持扩展。原创 2023-12-11 18:03:26 · 880 阅读 · 0 评论 -
SpringMVC 基于方法参数解析器自定义注入参数方案
在SpringMVCWeb项目开发中,我们可能需要经常获取一些公共的信息,比如用户信息、请求的Token等等,这种情况下我们可以封装一个工具类进行统一获取,也可以通过本篇文章讲解的方法参数解析器进行自动注入。例如:这里以User信息和Token为例 ,我们可以以下面这种方式注入到Controller层,其中业务开发人员无需关注数据从何而来,直接开箱使用即可:注解中也可以加上一些参数进行更灵活的注入信息。原创 2023-06-04 17:45:31 · 468 阅读 · 0 评论 -
源码角度分析多线程并发情况下数据异常回滚方案
在需要多个没有前后顺序的数据操作情况下,一般我们可以选择使用并发的形式去操作,以提高处理的速度,但并发情况下,我们使用 @Transactional 还能解决事务回滚问题吗。原创 2023-05-28 20:26:25 · 1467 阅读 · 3 评论 -
基于 MySQL 排它锁实现分布式可重入锁解决方案
本文基于MySQL实现的一种分布式可重入锁的效果。原创 2023-02-11 21:23:26 · 1919 阅读 · 0 评论 -
基于 Nacos Config 事件监听 动态调整线程池参数
在实际项目中一般都会使用线程池解决一些异步并发问题,不过线程池核心参数很大程度上一次性进行设置,但系统运行起来总有可能出现各种各样的问题,如果修改线程池的参数则一般需要重启项目,对于生产环境而言有时无法进行重启,这种情况下就需要我们做成可动态调节的线程池。会自动刷新的,那这里为啥还要手动解析呢,答案就是配置更新后,会首先触发这里的监听,如果在监听中直接调用调整方法,使用。这里需要注意下,我在触发监听后,手动获取的参数,上面细心地会发现,其实。配置,所以关于线程的配置可以放在。,可以将修改后的配置,映射为。原创 2023-02-05 17:42:04 · 1727 阅读 · 1 评论 -
基于 dynamic-datasource 实现 DB 多数据源及事物控制、读写分离、负载均衡解决方案
下面分别从 多数据源及事物控制、读写分离实现、负载均衡实现三个方面进行实践。可以注解在方法上或类上,同时存在就近原则 方法上注解 优先于 类上注解。注解即可,但是仅针对于单个数据源的情况,多数据源下我们可以使用。已经实现多数据源查询效果,下面继续事物的控制,应该都了解在。上面通过 mybatis 的拦截器实现了读写分离,同时。都需要添加注解,那我们可以是不是可以通过。针对于多数据源的切换推出了。从上面的步骤中,已经了解到了。可以看到明显的负载轮训效果了。的快速集成多数据源的启动器。原创 2022-08-21 17:34:44 · 2913 阅读 · 1 评论 -
基于 JSch 实现服务的自定义监控解决方案
JSch是SSH2的一个纯Java实现。它允许你连接到一个sshd服务器,使用端口转发,X11转发,文件传输等等。你可以将它的功能集成到你自己的 程序中。既然可以通过SSH连接到服务器,那就可以执行一些 命令 ,例如我们要监控一个服务是否正在运行,或者服务有无僵死,可以通过查看服务进程是否存在,访问接口是否正常来判断,如果不正常,我们可以通过JSch连接到该服务器中,执行重启的脚本。现在对于新的项目相信大家都已经放在k8s中部署了,在k8s。......原创 2022-08-07 15:55:19 · 1082 阅读 · 0 评论 -
基于 SSE 实现服务端消息主动推送解决方案
简单很多,服务器端和客户端工作量都要小很多、简单很多,同时实现的功能也要有局限。的简称,是一种服务器端到客户端(浏览器)的单项消息推送。的兼容性,多增加了一个接口和队列,因此在发布的时候,就需要同时向。的话我们就直接提供一个接口,每次都从队列中消费消息,这里以。客户端通过接口轮训的方式每次都从队列中消费消息,以实现。为例实现一个单机的队列,如果是分布式的可能就要考虑。相比于服务端,客户端就显得非常简单了,但也要考虑。类已经封装好了相关操作,可以方便的实现功能。启动服务端,首先演示SSE的效果,使用。....原创 2022-07-31 17:30:35 · 3849 阅读 · 8 评论 -
通过重写 OpenFeign 客户端实现自定义日志存储
使用过feign客户端的小伙伴应该都知道,默认的情况下使用feign客户端是不会打印请求日志的,如果需要开启feign的日志也是非常的简单,只需要声明一个https但是上面的日志还是打印在了控制台或日志文件中,假如我们需要将关键的信息写入es中或者关系型数据库中,可能就没办法满足我们了,那我们需要实现这一功能该怎么办呢?我们应该了解feign无非就是个客户端网络请求工具,只是封装成为了我们熟知SpringMVC的风格,如果不使用feign客户端,使用java自带的(feignOKHttpfeign的。...原创 2022-07-17 18:34:37 · 1197 阅读 · 0 评论 -
基于 GateWay 和 Nacos 实现微服务架构灰度发布方案
灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行,即让一部分用户继续用产品特性,一部分用户开始用产品特性,如果用户对没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。灰度发布开始到结束期间的这一段时间,称为灰度期。灰度发布能及早获得用户的意见反馈,完善产品功能,提升产品质量,让用户参与产品测试,加强与用户互动,降低产品升级所影响的用户范围。下面基于 和 实现微服务架构灰原创 2022-06-10 19:03:28 · 8266 阅读 · 9 评论 -
SpringCloud Alibaba Seata TCC 模式讲解与使用
一、Seata TCC 模式好长时间没有更新文章了,最近由于换工作,工作交接实在没有腾出时间来写文章,正好今天有时间我们把前面没有讲到的Seata TCC 模式给演示下如何使用,在看本篇文章前最好已经了解了seata的AT模式,因为个人感觉TCC的出现一大部分弥足了AT模式的不足,但同时也把事物的提交和回滚的控制权都交给了开发者处理,相比于AT模式,我们要写提交及回滚的逻辑,这样显而易见,对代码的侵入性就比较强了。那既然如此为什么还要用TCC模式呢?下面我就要说下AT模式的一大不足之处了,看过我前面演示原创 2022-03-06 21:36:03 · 4636 阅读 · 3 评论 -
SpringCloud Alibaba Docker 搭建 Nacos集群
一、Nacos上篇文章中,我们介绍了使用直接部署的方式在CenterOS 中安装:上篇文章地址:https://blog.csdn.net/qq_43692950/article/details/122028790今天我们介绍下使用docker 的方式搭建nacos集群,主要采用docker-compose的方式进行搭建。下面就开始吧!二、docker-compose 搭建Nacos集群在搭建之前确保环境中已经安装好了docker 和 docker-compose。搭建架构:主机原创 2021-12-19 22:53:48 · 4477 阅读 · 0 评论 -
OAuth2.0 - 自定义模式授权 - 短信验证码登录
一、OAuth2.0 - 自定义模式授权上篇文章我们分析了目前的情况,演示了微服务的大环境下在保证安全的情况下通过SpringGateWay实现统一的鉴权处理,但是前面的演示中,我们都是基于用户名密码的方式,但是现在已经普及短信验证码登录、微信登录、QQ登录等这些第三方的登录方式,这些方式显然不在Oauth2.0提供的四种授权模式下,因此我们如果要实现第三方的登录需要自定义一个授权模式,下面我们就以短信验证码登录为例进行实现。下面是上篇文章的地址:https://blog.csdn.net/qq_4原创 2022-01-18 21:51:07 · 8367 阅读 · 0 评论 -
OAuth2.0 - 使用 SpringGateWay 网关实现统一鉴权
一、OAuth2.0上篇文章我们学习了将用户信息存储至数据库中,前面的学习大家肯定已经对Oauth2.0已经有了自己认识,从前面我们可以了解到了,在用户认证时可以得到自己的用户信息及权限信息,然后权限的校验还是在资源服务实现的,从前面讲解SpringSecurity单体环境的时候我们要做统一的动态鉴权操作,需要实现FilterInvocationSecurityMetadataSource 接口,在其中进行地址的动态角色权限的返回。现在服务的大环境下,每个业务服务都可以称为一个资源服务,那众多的资源服务,原创 2022-01-18 21:28:00 · 14936 阅读 · 5 评论 -
OAuth2.0 - 使用数据库存储客户端信息 及 授权码
一、OAuth2.0上篇文章我们介绍了使用JWT替换Token使得认证服务的压力减小,但是向客户端信息,和授权码都是存储在了内存中,一旦认证服务宕机,那客户端的认证信息也随之消失,而且客户端信息是在程序中写死的,维护起来及不方便,每次修改都需要重启服务,如果向上述信息都存于数据库中便可以解决上面的问题,其中数据我们可以自定义存到noSql或其他数据库中,SpringOauth2也为我们提供了数据库的解决方案。下面是上篇文章的地址:https://blog.csdn.net/qq_43692950/a原创 2022-01-18 19:26:44 · 6825 阅读 · 2 评论 -
OAuth2.0 - 使用JWT替换Token 及 JWT内容增强
一、OAuth2.0上篇文章我们讲解了OAuth2.0的几种认证模式,前面的讲解Token采用OAuth2.0自带的方式生成的Token,但是这种方式也存在这弊端,通过前面的测试我们发现,当资源服务和授权服务不在一起时资源服务使用RemoteTokenServices 远程请求授权服务验证token,如果访问量较大将会影响系统的性能 。因此我们可以采用JWT生成令牌,用户认证通过会得到一个JWT令牌,JWT令牌中已经包括了用户相关的信息,客户端只需要携带JWT访问资源服务,资源服务根据事先约定的算法自行原创 2022-01-16 17:41:42 · 8141 阅读 · 1 评论 -
OAuth2.0 - 简化模式、密码模式、客户端模式讲解
一、OAuth2.0在上篇文章中我们已经对OAuth2.0 做了讲解,以及授权码模式的认证过程,并且搭建了简单的认证服务和资源服务,由于上篇文章中我们只对授权码模式这一种认证登录模式做了讲解,本篇文章对简化模式、密码模式、客户端模式这三种模式进行下演示和讲解,下面是上篇文章的地址:https://blog.csdn.net/qq_43692950/article/details/122521392上篇文章的配制中,我们已经将所有的模式都放开给了c1这个客户id,所以在下面模式的演示中我们直接使用上原创 2022-01-16 16:29:28 · 9444 阅读 · 0 评论 -
OAuth2.0 - 介绍与使用 及 授权码模式讲解
一、OAuth2.0前面我们已经学习了SpringSecurity在SpringMVC环境下和WebFlux环境下用户认证授权以及整合JWT作为Token无状态认证授权,但是在前面的演示中都会发现全都是基于单体项目而言的,现在分布式微服务的环境下难不成还要每个服务都做一套自己的认证授权吗?今天我们要讲解的OAuth2.0便可以解决分布式环境下的统一认证授权,我们要学习的是Spring推出的Spring-Oauth2.0框架,可以完美的和SpringBoot 以及 SpringCloud进行整合,而不需要原创 2022-01-16 13:24:08 · 6196 阅读 · 6 评论 -
SpringSecurity - WebFlux环境下整合JWT使用 Token 认证授权
一、SpringSecurity - WebFlux上篇文章我们讲解了SpringSecurity 在WebFlux环境下的动态角色权限的控制,本篇文章我们一起讲解下SpringSecurity 在WebFlux环境下整合JWT使用 Token 认证授权。上篇文章地址:https://blog.csdn.net/qq_43692950/article/details/122511037二、整合JWT使用 Token 认证授权在关于SpringSecurity 在WebFlux环境下的使用,在前面原创 2022-01-15 18:41:36 · 7147 阅读 · 21 评论 -
SpringSecurity - WebFlux环境下动态角色权限
一、SpringSecurity - WebFlux在上篇文章中我们讲解了SpringSecurity 在WebFlux环境下的用户动态授权,本篇文章继续上篇文章讲解 WebFlux环境下动态角色权限。上篇文章地址:https://blog.csdn.net/qq_43692950/article/details/122508425二、权限控制还记得前面我们在讲SpringSecurity 在SpringMVC环境下在做权限控制时,是采用HttpSecurity 对象,并通过antMatcher原创 2022-01-15 17:18:35 · 6128 阅读 · 1 评论 -
SpringSecurity - WebFlux环境下实现用户动态认证
一、SpringSecurity - WebFlux上篇文章我们讲解了SpringSecurity 整合JWT使用 Token 的方式认证授权,但是从前面的学习中应该可以发现,我们是在SpringMVC环境下实现的,所写的过滤器都是基于Servlet的。我们也知道Spring很早就退出了WebFlux异步非阻塞的web框架,是基于Netty实现的一款高性能的web框架,性能要比SpringMVC高的多,还有现在我们常用的SpringGateWay网关也是基于WebFlux框架实现的,而在WebFlux环境原创 2022-01-15 13:19:31 · 6369 阅读 · 6 评论 -
SpringSecurity - 整合JWT使用 Token 认证授权
一、SpringSecurity前面讲解了SpringSecurity的动态认证和动态权限角色,我们都知道在现在大多都是微服务前后端分离的模式开发,前面讲的还是基于Session的,本篇我们整合JWT实现使用Token认证授权。上篇文章地址:https://blog.csdn.net/qq_43692950/article/details/122394611在开始前需要了解JWT,如果不了解,可以先看下下面这篇我的博客:https://blog.csdn.net/qq_43692950/art原创 2022-01-09 20:32:58 · 6740 阅读 · 16 评论 -
SpringSecurity - 用户动态授权 及 动态角色权限
一、SpringSecurity 动态授权上篇文章我们介绍了SpringSecurity的动态认证,上篇文章就说了SpringSecurity 的两大主要功能就是认证和授权,既然认证以及学习了,那本篇文章一起学习了SpringSecurity 的动态授权。上篇文章地址:https://blog.csdn.net/qq_43692950/article/details/122393435二、SpringSecurity 授权我们接着上篇文章的项目继续修改,上篇文章中有说到我们WebSecurity原创 2022-01-09 17:22:34 · 10740 阅读 · 6 评论 -
SpringSecurity - 用户动态认证
一、SpringSecuritySpring Security 是 Spring 家族中的成员,基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案。两个主要的策略是“认证”和“授权”(或者访问控制),一般来说,Web 应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分,这两点也是 Spring Security 重要核心功能。用户认证指的是:验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户认证一般要求用户原创 2022-01-09 15:46:26 · 5958 阅读 · 2 评论 -
SpringCloud Alibaba Sentinel 服务限流、熔断、降级 - 基于dashboard方式配制
一、Sentinel在上两篇博客中我们基于程序配制的方式演示了Sentinel 的功能,相信大家应该对 Sentinel 已经有了更深的认识,本篇接着上篇继续,使用便捷化的dashboard控制台进行实现,可以实现无需重启服务的情况下动态修改策略规则。下面是上篇文章的地址:Sentinel 熔断降级:https://blog.csdn.net/qq_43692950/article/details/122161209Sentinel 流量控制:https://blog.csdn.net/qq_4原创 2021-12-26 23:35:22 · 3778 阅读 · 0 评论 -
SpringCloud Alibaba Sentinel 熔断降级 - 程序配制方式实现
一、Sentinel上篇文章我们讲解了Sentinel 流控规则的配制,本篇文章我们继续讲下Sentinel 的熔断降级,依然采用程序配制方式实现。上篇文章地址:https://blog.csdn.net/qq_43692950/article/details/122159806由于调用关系的复杂性,如果调用链路中的某个资源出现了不稳定,最终会导致请求发生堆积。这个问题和 Hystrix 里面描述的问题是一样的。Sentinel 和 Hystrix 的原则是一致的: 当调用链路中某个资源出现不原创 2021-12-26 22:04:38 · 3688 阅读 · 0 评论 -
SpringCloud Alibaba Sentinel 流量控制 - 程序配制方式实现
一、Sentinel前面在讲解Hystrix 服务保护框架的时候就,提到了AibabaCloud的Sentinel 框架,我们都知道Hystrix 已经不再维护了,那我们该怎么办呢,现在Sentinel 就是我们必须入手的服务保护框架。如果想了解Hystrix可以参考下面我的博客:Hystrix 服务降级:https://blog.csdn.net/qq_43692950/article/details/121996806Hystrix 服务熔断、限流:https://blog.csdn.net原创 2021-12-26 20:24:35 · 3883 阅读 · 0 评论 -
SpringCloud Alibaba 使用Seata解决分布式事物
一、SeataSeata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。seata提供了AT、TCC、及SAGA(长事务)、XA等模式。是将各分布式分支事务统一为全局事务,通过全局事务的成功与否判断是否需要回滚提交各分支事务。seata架构中有三大组件: - TC(Transaction Coordinator)事务协调器,维护全局事务的运行状态,负责协调并驱动全局原创 2021-12-26 16:35:54 · 4610 阅读 · 0 评论