Spring Cloud
文章平均质量分 92
麦神-mirson
十余年项目从业经验,先后服务于多家国内外上市公司,担任高工,架构师与研发经理等重要角色。主导多个大型项目的架构设计、研发与管理工作。在金融、电商领域具备丰富的实战经验, 擅长微服务分布式架构, 高并发缓存架构,异步队列架构, 亿级分库分表等架构设计与运用, 拥有广泛的技术面与丰富的实践经验, 热衷复杂场景的设计解决方案。
展开
-
【Spring Boot 集成应用】 OAUTH2集成配置案例(JWT+Redis+增强TOKEN方式)
这里用到了OAUTH2的客户端模式和密码模式, 适合微服务场景大用户量的接入,采用Redis缓存, 能够保障较高的性能, JWT附带信息不能过多, 会增加传输资源开销, 加密方式也不能过于复杂, 影响CPU性能, 如果有较多额外信息需要传递, 可以采用TOKEN增强模式, 数据存储在缓存, 不会带来过多的IO开销。在实际项目当中, 要做仔细权衡,能加入缓存地方尽量加入, 保障安全的同时, 也要有较好的性能...原创 2022-09-25 10:44:53 · 2744 阅读 · 0 评论 -
【Spring Boot 集成应用】 OAUTH2统一认证单点登录中的各种模式说明
传统登陆方式是在每个服务进行登陆认证, 每个服务保存自己的用户数据, 并独立实现登陆认证逻辑。随着服务的不断扩展, 用户数据很难集中统一,开发成本不断增加, 用户交互也极为不便 。单点登陆是通过统一认证授权服务, 完成所有服务节点的登陆授权工作,需一台认证服务器,统一用户数据库, 完成用户认证授权, 控制资源访问, 支持其他服务或第三方应用接入, 扩展性强, 开发和运维成本降低。原创 2022-09-24 17:47:05 · 2150 阅读 · 0 评论 -
【Spring Boot 集成应用】Spring Security集成整合配置使用
Spring Boot 与Spring Security 集成, 包含一般集成用法, 还包括自定义用户登陆页面使用, 自定义内存模式验证, 以及自定义登陆成功与失败逻辑处理。原创 2022-09-18 09:36:01 · 691 阅读 · 0 评论 -
【Spring Boot 集成应用】Spring Boot Admin的集成配置使用
主要全面讲解Spring Boot Admin的集成配置使用, 各种用法, 包括直连模式与注册中心模式的使用, 与Spring-Security的集成权限控制,Spring Boot Admin监控台的全面使用等原创 2022-09-11 23:54:28 · 3942 阅读 · 1 评论 -
【Spring Boot 集成应用】Actuator监控功能使用
Spring Boot Actuator监控功能, 包含常用的内置监控节点, health、beans、metrics、conditions、heapdump等,通过实践案例, 全面掌握自定义Actuator的用法, 在实际项目中根据需要, 扩展自定义监控节点或改进内置监控节点原创 2022-09-05 10:00:00 · 1628 阅读 · 0 评论 -
【Spring Boot 集成应用】Spring Boot与MongoDB的集成配置使用
Spring Boot Data MongoDB 集成运用, 主要包含模板模式,JPA Repository 模式和响应模式,以及事务的使用。 在一般情况下, 采用模板模式即可满足需要, 如果需要用到事务, 查询复杂, 操作量大的话可以采用JPA模式。 交互频繁的场景性下, 建议自定义封装连接池使用, 提升性能与稳定性...原创 2022-08-27 17:02:14 · 1775 阅读 · 0 评论 -
【Spring Boot 集成应用】Redis的集成用法
Java 封装的常用Redis框架有Jedis、Redisson和Lettuce等,这些框架帮我们解决了Redis的连接管理、API操作问题, Spring Boot 在 Lettuce基础上做了进一步封装, 提供了spring-boot-starter-data-redis组件, 帮助我们更为简化方便的使用Redis功能。 Spring-boot-data-redis 提供了几个Redis操作模板, 例如: RedisTemplate、StringRedisTemplate、ReactiveRedisT原创 2022-08-14 09:38:28 · 622 阅读 · 0 评论 -
【Spring Boot 集成应用】Kafka的集成用法
Kafka主要特点是基于Pull的模式来处理消息消费,追求高吞吐量,如果有大量的消息处理(10W+),对一致性要求不高, 那么可以采用KAFKA, 比如日志采集、 数据同步与归档、实时流数据处理等场景。 Spring 官方为我们提供了Spring-kafka组件, 这里讲解如何与Spring Boot集成使用,并通过代码将全面讲解Kafka普通订阅模式、死信队列配置使用、多路订阅模式以及事务控制的使用。...原创 2022-08-07 13:30:19 · 21873 阅读 · 1 评论 -
【Spring Boot 集成应用】RocketMQ的集成用法(下)
Spring Message 是一种消息传输规范, RocketMQ可以支持, 在Spring Cloud Stream 中采用的就是Spring Message作为消息传输规范, 这是一个用于构建基于消息的微服务应用框架。ACL是Access Control List简称, 意为访问控制列表, 是RocketMQ4.4新加入的功能。加入ACL能够通过权限管理控制消息队列, 针对不同角色用户分配不同的队列操作权限, 便于权限管控, 提升消息队列数据的安全性。...原创 2022-07-31 11:49:15 · 20285 阅读 · 0 评论 -
【Spring Boot 集成应用】RocketMQ的集成用法(上)
在金融互联网领域广泛应用,在阿里双11活动经历过多次考验, 经过严苛的生产验证,有比较高的可靠性,在数据处理上有比较高的稳定性, 能从最大程度上保证消息不易丢失,如果业务上有一定的规模, 且对数据的一致性,稳定性要求严苛, 那么可以采用RocketMQ, 比如金融互联网领域, 支付场景、交易场景等。如果有借助消息队列实现分布式事务, RocketMQ可以作为首选。...原创 2022-07-31 11:42:35 · 21203 阅读 · 0 评论 -
【Spring Boot 集成应用】RabbitMQ的集成用法
RabbitMQ是主流开源消息队列中间件, 遵循AMQP(Advanced Message Queuing Protocol高级消息队列协议), AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。AMQP协议更多用在企业系统内,对数据一致性、稳定性和可靠性要求很高的场景,对性能和吞吐量的要求较低。RabbitMQ主要有三种模式: Direct、Topic 和 Fanout。配置和使用上存在一些差别, 下面对这三种模式的集成使用做具体讲解...原创 2022-07-28 20:16:14 · 21208 阅读 · 0 评论 -
【Spring Boot 集成应用】ElasticSearch的集成配置使用
Spring-boot支持ElasticSearch的集成, 并提供了spring-boot-starter-data-elasticsearch自动化配置组件。 这里会介绍如何通过该组件, 集成至项目中使用, 并实现基本的增删改查功能,同时演示集成的一些高级用法, 比如流式查询、自定义查询和异步查询。...原创 2022-07-19 11:03:01 · 21956 阅读 · 1 评论 -
【Spring Boot 源码研究 】- 请求处理流程机制分析
之前我们对Spring Boot做了研究讲解,我们知道怎么去集成配置, 知道它如何启动, 如何实现自动化配置,那么它如何接收并处理外部请求, 具体原理是怎样, 又要流转哪些关键环节? filter,interceptor, view是在哪调用, 处理顺序是怎样?Spring Boot 和Spring MVC以及内置容器又是怎样的作用关系? 这里我们作具体剖析研究。......原创 2022-07-10 11:15:39 · 20431 阅读 · 0 评论 -
【Spring Boot 源码研究 】- 自动化装配条件化配置AutoConfigurationImportFilter剖析
之前讲解了SpringBootCondition自动化条件配置,我们分析了内部是如何具体实现,在整个实现当中, 还有一个很重要的接口, AutoConfigurationImportFilter是它的前置调用, 它是一个过滤器接口,我们再做深入研究, 看下是如何控制处理这么多条件注解, 又是怎样过滤处理的,从性能效率又做了哪些处理?...原创 2022-07-03 21:20:09 · 20278 阅读 · 0 评论 -
【Spring Boot 源码研究 】- 自动化装配条件化配置Conditional剖析
在一个服务工程, 通常会存在多个配置环境, 比如常见的DEV(开发环境)、SIT(系统内部集成测试环境)、UAT(用户验收测试环境)、PRD(生产环境)等。在Spring3系列版本中通过@Profile实现,传入对应的环境标识, 系统自动加载不同环境的配置。spring4版本正式推出Condition功能, 在spring5版本, @Profile做了改进,底层是通过Condition实现各种自动化装配...原创 2022-06-26 12:25:24 · 20538 阅读 · 0 评论 -
【Spring Boot 源码研究 】- 自动化装配机制核心注解剖析
Spring Boot针对mvc做了大量封装,简化开发者的使用,内部是如何管理资源配置,Bean配置,环境变量配置以及启动配置等? 实质是SpringBoot做了大量的注解封装,比如@SpringBootApplication, 同时采用Spring 4框架的新特性@Conditional基于条件的Bean创建管理机制来实现;实际的工作场景中是复杂多样的, 有些项目需要不同的组件, 比如REDIS、MONGODB作缓存; RABBITMQ、KAFKA作消息队列; ......原创 2022-06-07 19:14:24 · 22034 阅读 · 0 评论 -
【Spring Boot 源码研究 】- 启动流程分析
Spring Boot源码研究-启动流程分析一、Spring Boot 工程结构下载Spring Boot工程源码, 下载地址模块代码结构: 比较重要的是Spring-boot、Spring-boot-autoconfigure以及Spring-boot-starters等组件。工程模块介绍spring-bootspring boot框架核心插件,对其他模块提供主要支持。内部包含所熟知的SpringApplication类, 提供应用程序入口, 内嵌支持Tomcat、J原创 2022-05-29 16:52:46 · 22170 阅读 · 0 评论 -
基于Spring Boot自动化装配机制实现多数据库适配
1. 背景说明一个应用服务可能会用到多种数据库,可以采用多版本方式去管理运作,实际当中,同一套数据库版本可能又会适配不同的客户需求, 这时候再增加版本去维护会比较复杂, 不利于维护,有没办法根据配置去采用不同的数据库, 只要针对客户一个维度去维护版本即可。2. 实现机制要能够适配不同数据库, 数据层需定义统一的接口,由具体的数据库组件做实现,对上游调用Service来讲是透明的。设计流程:工程结构:技术上通过Spring Boot 自动化装配机制去实现不同数据库的适配, 由条件化配置去决定原创 2021-12-20 10:35:26 · 29741 阅读 · 1 评论 -
最新版sentinel监控数据源持久化与influxdb2的集成实现
1. 说明Sentinel的实时监控数据, 默认是放在内存里面, 采用ConcurrentHashMap结构,只保留5分钟时间内的数据,不能满足实际生产中的监控需要, 这里我们进行二次开发改造。改造使用的版本:Sentinel为1.8.X版本InfluxDB为2.X系列版本2. Sentinel源码改造下载Sentinel的源码, 修改sentinel-dashboard模块创建包com.alibaba.csp.sentinel.dashboard.influxdb, 将修改的源码放原创 2021-11-18 23:16:42 · 29218 阅读 · 1 评论 -
实现Log4j和Logback的统一日志封装与动态日志级别调整
一、背景项目中使用日志的地方非常广泛, 如果要做统一的处理,比如调整格式, 增加信息打印, 要修改很多地方,难以维护,所以需要能够将日志做一个统一的封装, 便于扩展使用;同时想做到动态调整日志级别,在生产环境修改日志级别, 将开销降到最低, 在出现故障时, 又可以重新调整日志级别而不需要重新启动服务, 便于问题的排查定位。二、统一日志的封装如果实现统一日志, 需要自己封装一层实现,但在实际日志打印中,往往会打印出所封装的类信息, 而并非实际调用的类信息, 该如何解决这个问题? 网上有很资料, 一般都是原创 2021-10-23 23:28:52 · 32546 阅读 · 0 评论 -
SpringBoot下如何实现Redis + Caffeine二级分布式高性能缓存
一、 设计目的支持Spring Boot 服务下,Redis + Caffeine的高性能分布式缓存的实现。减少应用服务的集成接入成本,快速实现缓存, 通过AOP方式拦截处理, 不侵入原业务逻辑。支持多种功能特性,如异步、超时(全局/单条控制)、压缩等,满足各种业务场景需要。二、 服务结构应用服务通过集成GEMINI-CACHE缓存组件, 实现对应用服务接口的缓存功能,内部通过AOP机制做拦截处理, 不侵入业务逻辑, 支持一级、二级缓存的保存、更新与删除,以及实现分布式缓存的同步功能。一原创 2021-10-04 11:03:50 · 36323 阅读 · 0 评论 -
分析排查Hystrix熔断降级未能真正生效的问题
1. 现象压测无法进入hystrix熔断处理, 检查feign.hystrix.enabled是开启的,hystrix设定的最大并发连接为100,降级最大并发连接为50hystrix.command.default.execution.isolation.semaphore.maxConcurrentRequests=100hystrix.command.default.fallback.isolation.semaphore.maxConcurrentRequests=50理论上连接超过15原创 2021-09-21 09:32:52 · 34751 阅读 · 0 评论 -
如何在Spring Boot微服务中集成gRPC通讯
一、首先声明gRPC接口这里引入的是最新的gRpc-core 1.37版本, 采用的grcp-spring-boot-starter封装的版本进行实现,github地址:https://github.com/yidongnan/grpc-spring-boot-starter要实现gRpc通讯, 先定义接口以及入参出参信息syntax = "proto3";option java_multiple_files = true;option java_package = "com.grpc.s原创 2021-09-08 19:35:44 · 32879 阅读 · 0 评论 -
Sentinel如何实现支持全局接口限流功能
1. 为什么需要全局限流在实际应用中, 一个服务可能有上百个接口,如果每个接口都去配置限流策略, 会非常繁琐, 那么有没有全局配置功能,如果接口没有做独立的限流配置,那么就采用全局的配置策略。查阅官方资料,也有提出相似的问题, 并且也给出了代码实现,但官方目前还没正式发布推出,那么就需要我们改造源码去做对应的实现。参考: https://github.com/alibaba/Sentinel/issues/66这里是基于Sentinel相对成熟的Release版本1.7.2进行改造。2. 如何改造原创 2021-09-01 20:13:07 · 34346 阅读 · 1 评论 -
Feign如何针对单个服务屏蔽Hystrix熔断功能
1. 说明在实际项目中,需要针对单个服务屏蔽Hystrix,但又不想影响对其他服务调用的熔断降级功能。我们知道hystrix有default默认全局配置, 也有根据HystrixCommandKey针对接口做具体配置,但是某个服务可能会有很多接口, 并不能解决针对单个服务屏蔽Hystrix功能,有没有简便快速的实现方法? 查阅官方资料,是可以支持的。2. 实现官方的文档写得比较粗略,没有实际的实例,而且在实际运用中, 没有配置正确会有额外的问题。整体思路是创建一个独立的Feign实例,提供给需要屏原创 2021-08-29 22:31:30 · 62776 阅读 · 0 评论 -
Spring Boot 与 Sharding JDBC 的分库分表集成配置
一. Sharding JDBC介绍Sharding-Sphere的前身Sharding-JDBC是由当当的应用框架dd-frame中的dd-rdb模块演进而来, 是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar这3款相互独立的产品组成。Sharding-JDBC 可适用于任何基于Java的ORM...原创 2020-02-19 23:13:47 · 524 阅读 · 0 评论 -
微服务高效通讯方案之SpringBoot + gRpc + Protobuf + Netty
微服务高效通讯方案之gRpc初识什么是gRpc功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入初识什么是gRpcg...原创 2019-12-17 15:20:17 · 2641 阅读 · 1 评论