
SpringBoot + SpringCloud
文章平均质量分 83
记录spring boot的学习笔记,方便后面学习spring boot的人少走弯路,迎头赶上;也是对自己学习spring boot的一个记录
Freedom3568
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Spring Boot 升级系列】微服务指标监测
可观测性是微服务架构的关键特征,应用程序指标是程序可观察性的一个维度,当应用程序在生产环境中运行时,我们可能想知道各种操作指标,如内存、CPU、线程池使用率等,以及业务指标,例如对特定操作发出了多少请求。如果我们需要更多指标怎么办?千分尺 (https://micrometer.io/),负责生成和公开指标。MeterRegistry 是容纳多个米的千分尺的核心概念。@Component在这里,我们创建了一个名为 products 的新指标,每次添加新产品时,我们都会递增值。原创 2024-04-28 17:58:03 · 761 阅读 · 0 评论 -
【Spring Boot 升级系列】微服务接口开发
到目前为止,我们已经了解了如何生成一个新的 spring boot 应用程序,然后如何将其容器化。但是,我们的应用程序没有任何功能。今天我们将学习如何使用 Spring boot 创建 REST API。我们将采用模式优先的方法生成 REST API 接口,本文将采用 OpenAPI 规范以及如何使用该规范生成 REST API 接口。原创 2024-04-28 17:55:40 · 1228 阅读 · 0 评论 -
【Spring Boot 升级系列】第二篇:微服务容器化实践
在我之前的文章中 我们学习了如何创建一个简单的 Spring Boot 应用程序,我们还学习了如何将其打包为 jar 文件并在本地运行。但是,目前在生产环境中,docker 被广泛采用。在这篇文章中,我们将看到如何容器化我们的 Spring Boot 应用程序。原创 2024-04-26 18:02:19 · 1121 阅读 · 3 评论 -
【Spring Boot 升级系列】第一篇:Spring Boot 入手指南
自 2012 年以来,我一直在使用 Spring 框架生态系统。随着时间的流逝,Spring增加了许多新模块,并且该框架的采用率也有所增加。截至今天,可以说是业内最受欢迎的框架。工程项目在Spring引擎盖下做了很多工作,感觉有时就像魔术一样,而且生产系统与入门指南有很大不同,初学者不仅要学习开箱即用的东西,还要了解它们是如何工作的。我将分享一系列博客文章,旨在从非常基础的知识开始,然后转向更高级的主题,我希望这个系列能帮助初学者在这个美丽的框架中踮起脚尖。原创 2024-04-26 17:58:03 · 871 阅读 · 0 评论 -
SpringCloudAlibaba: 网关限流三剑客(Sentinel,Gateway,Nacos)
顾名思义,网关限流是通过网关层对我们的服务进行限流,达到保护后端服务的作用。在微服务架构的系统中,网关层可以屏蔽外部的请求直接对服务进行调用,网关层可以对内部服务进行隔离,保护的作用。Sentinel 支持对 Spring Cloud Gateway、Zuul 等主流的 API Gateway 进行限流。由于Zuul已经处于停更的状态,所以我们使用Sentinel与Spring Cloud Gateway设计案例,为大家讲解如何使用sentinel实现网关限流。如下图所示,Sentinel通过引入 Sent原创 2022-07-12 19:02:43 · 958 阅读 · 0 评论 -
微服务 与 Spring Cloud 介绍
0. 前言我们先从 Nginx 说起,了解为什么需要微服务。最初的服务化解决方案是给相同服务提供一个统一的域名,然后服务调用者向这个域发送 HTTP 请求,由 Nginx 负责请求的分发和跳转。这种架构存在很多问题:Nginx 作为中间层,在配置文件中耦合了服务调用的逻辑,这削弱了微服务的完整性,也使得 Nginx 在一定程度上变成了一个重量级的 ESB(Enterprise Servic...原创 2020-01-20 18:56:12 · 297 阅读 · 0 评论 -
Spring Cloud 技术栈 一张图
spring cloud: 大话spring cloudhttps://smile.blog.youkuaiyun.com/article/details/71077213Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式pring Cloud也不是没有缺点,小型独立的项目不适合使用,另外对分布式事物的支持暂时也没有。小弟有:原创 2021-09-15 22:09:30 · 373 阅读 · 0 评论 -
分布式日志系统:Plumelog部署及系统接入
即,logback.xml加载早于application.properties,所以如果你在logback.xml使用了变量时,而恰好这个变量是写在application.properties时,那么就会获取不到,只要改成logback-spring.xml就可以解决。这种情况大概率是server中 plumelog.queue.redis.redisHost 没有配置正确,redis只是充当队列的作用,如果里面能看到数据说明没有server没有消费,正常情况应该是redis是不会积压的。原创 2023-06-28 12:14:50 · 2252 阅读 · 0 评论 -
SpringCloud:spring-cloud-loadbalancer自定义负载均衡策略实现
网上的视频、博客基本都是使用spring-cloud-starter-netflix-ribbon这个依赖实现的,但springcloud在2020.0.0之后,移除掉了netflix-ribbon 使用eureka-client中的loadbalancer,使用自定义负载均衡不使用IRule接口,所以就遇到了很多问题,但这里也会复盘一下传统的实现!之后再讲新方法的实现,当然,也可以直接跳到二、使用LoadBalancer实现直接阅读新方法的使用。原创 2023-06-27 18:12:08 · 410 阅读 · 0 评论 -
15 个优秀开源的 Spring Boot 学习项目,一网打尽!
微人事star 数 11.8k 项目地址:[github.com/lenve/vhr]微人事是一个前后端分离的人力资源管理系统,项目采用 SpringBoot + Vue 开发。项目打通了前后端,并且提供了非常详尽的文档,从 Spring Boot 接口设计到前端 Vue 的开发思路,作者全部都记录在项目的 wiki 中,是不可多得的 Java 全栈学习资料。项目效果图:...转载 2020-02-04 15:02:46 · 638 阅读 · 1 评论 -
springcloud:gateway网关聚合swagger实现多个服务接口切换
springcloud是由多个不同的springboot服务组成的,微服务使用swagger有两种方法,如下:对每个需要生成接口的项目集成swagger,具体方法点击查看,然后启动所有的项目,需要查看不同服务的接口时去访问不同的地址:http://{ip}:{port}/swagger-ui.html,缺陷很明显:为记录不同项目的地址而烦恼,一旦服务ip或端口更换后又要重新记录访问swagger-ui.html的时候会发现右上角的这个下拉选项当启动一个springboot项目的时候会发现这个下拉选项毫无用原创 2023-02-08 16:14:04 · 1411 阅读 · 0 评论 -
SpringCloud: Feign集成Hystrix(Callback方式)
02 FeignConfig定义03 Callback定义04 测试启动 eureka-serve,eureka-client (8762,8763 两个端口),eureka-feign-hystrix-client , 浏览器访问 http://localhost:8761/在浏览器上 输入 :http://localhost:8767/FeignHystrixController/hi/java,得到结果如下:关掉eureka-client (8762,8763 两个端口 )服务,结果如原创 2022-07-14 14:15:16 · 1020 阅读 · 0 评论 -
SpringCloudAlibaba: Spring Cloud Alibaba Sidecar 多语言微服务异构的实践
自 Spring Cloud Alibaba 2.1.1 版本后增加了 spring-cloud-alibaba-sidecar 模块作为作为一个代理的服务来间接性的让其他语言可以使用spring cloud alibaba等相关组件。通过与网关的来进行路由的映射,从而可以做到服务的获取,然后可以使用Ribbon间接性调用。如上图, Spring Cloud 应用 请求 sidercar 然后转发给其他语言的模块,优势是对于异构服务代码 零侵入,不需要直接根据 nacos 或其他注册中心 api 注册等基原创 2022-07-12 17:03:49 · 645 阅读 · 0 评论 -
Spring Cloud: Spring Cloud Stream RabbitMQ实践
官方定义Spring Cloud Stream是一个构建消息驱动微服务的框架。应用程序通过inputs或者outputs来与Spring Cloud Stream中binder对象交互。通过我们配置来binding(绑定),而Spring Cloud Stream的binder对象负责与消息中间件交互。所以,我们只需要搞清楚如何与Spring Cloud Stream交互就可以方便使用消息驱动的方式。SpringCloud stream通过使用Spring Integration来连接消息代理中间件以实现消原创 2022-07-12 18:42:26 · 470 阅读 · 0 评论 -
微服务核心架构
在公司学习了接近一个月。一个月内,从0开始开始接触分布式微服务架构,给了我不小的收获。今天,我来从头到尾梳理一下,有关微服务架构的核心内容(全是干货)。下文,你将看到业界主流微服务框架的核心原理,包括服务发现,网关,配置中心,监控等组件,功能和架构原理的简单介绍。感谢阅读!Hello,Microservices什么是微服务微服务Microservices之父,马丁.福勒,对微服...转载 2020-02-04 14:13:07 · 1360 阅读 · 0 评论 -
架构:应用架构的演进以及微服务架构的落地实践
应用服务架构一直处于不断演进的过程中,上图通过对比5种比较主流的架构模式,展示应用架构的演进历程和变化。单体架构(AllinOne)。在业务发展初期,为了快速落地应用,满足客户需求,一般会使用AllinOne的单体架构。单体架构的特点是所有模块都耦合在一个进程里,系统完全封闭且很复杂,牵一发动全局。竖井式架构(VerticalApplication)。随着业务的增长,单体架构越来越臃肿,我们对系统做了垂直化的拆分,应用架构进入第二阶段即竖井式架构。拆分成粒度小的服务。SOI-敏态业务。...原创 2022-08-01 13:02:35 · 252 阅读 · 0 评论 -
Spring Cloud 与 Dubbo的比较
0. 介绍微服务的核心要素在于服务的发现、注册、路由、熔断、降级、分布式配置,基于上述几种必要条件对 Dubbo 和 Spring Cloud 做出对比。当前微服务架构,Dubbo和SpringCloud比较火,另外还有Thrift、gRPC等等,下面把这些做一个比较,即可看出SpringCloud的强大之处。由于图片比较长,我分了两张图。1. Spring Cloud 简介作...原创 2020-01-20 18:49:54 · 2245 阅读 · 1 评论 -
SpringCloud: 基于SPRINGBOOT2.X、SPRINGCLOUD企业级微服务多租户系统架构
基于SpringBoot2.x、SpringCloud和SpringCloudAlibaba并采用前后端分离的企业级微服务多租户系统架构。并引入组件化的思想实现高内聚低耦合并且高度可配置化,适合学习和企业中使用。真正实现了基于RBAC、jwt和oauth2的无状态统一权限认证的解决方案,面向互联网设计同时适合B端和C端用户,支持CI/CD多环境部署,并提供应用管理方便第三方系统接入;同时还集合各种微服务治理功能和监控功能。原创 2023-02-09 14:15:02 · 348 阅读 · 0 评论 -
SpringCloud: FeignClient原理解析
Feign 是一个 Java 到 HTTP 的客户端绑定器,Feign 通过将注解处理为模板化请求来工作。参数在输出之前直接应用于这些模板。尽管 Feign 仅限于支持基于文本的 APIs,但它极大地简化了系统方面,例如重放请求。此外,Feign 使得对转换进行单元测试变得简单。...原创 2022-08-03 14:59:46 · 3945 阅读 · 0 评论 -
服务端高并发分布式架构演进之路
1. 概述本文以淘宝作为例子,介绍从一百个到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则。特别说明:本文以淘宝为例仅仅是为了便于说明演进过程可能遇到的问题,并非是淘宝真正的技术演进路径2. 基本概念在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概...转载 2020-02-04 15:41:10 · 451 阅读 · 0 评论 -
分布式事务
分布式事物的问题一个业务流程中要跨多个服务调用(写操作),就会存在分布式事物问题针对一些特定的场景、核心的流程 数据的准确性和可靠性尤其的重要如:订单、支付、入账 etc.分布式事物的业务代码场景/** 支付订单处理 **/@Transactional(rollbackFor = Exception.class)public void completeOrder(){orderDao.update(); // 订单服务本地更新订单状态accountService.update(); //原创 2021-04-26 21:44:12 · 266 阅读 · 0 评论 -
Spring Cloud Alibaba: 通过Sentinel对Gateway网关进行限流实践
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。流量控制,熔断降级,系统自适应保护流量控制在网络传输中是一个常用的概念,它用于调整网络包的发送数据。然而,从系统稳定性角度考虑,在处理请求的速度上,也有非常多的讲究。任意时间到来的请求往往是随机不可控的,而系统的处理能力是有限的。我们需要根据系统的处理能力对流量进行控制。Sentinel原创 2022-07-14 18:36:12 · 258 阅读 · 0 评论 -
分布式日志系统:Plumelog简介
一个简单易用的java日志系统,解放你的日志查询困难问题,方便快速追踪问题,安装配置简单,性能优秀 演示视频地址:https://v.qq.com/x/page/g3308uxlcnw.html。原创 2023-06-28 12:13:28 · 372 阅读 · 0 评论 -
架构设计:Spring Cloud Netflix 概览及架构设计
Spring Cloud 是基于Spring Boot 的一整套实现微服务的框架。他提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件。最重要的是,跟spring boot 框架一起使用的话,会让你开发微服务架构的云服务非常好的方便。 Spring Cloud 包含了非常多的子框架,其中,Spring Cloud Netflix是其中一套框架,由Netflix开发后来又并入Spring Cloud大家庭,它主要提供的模块包括:服务发原创 2022-07-07 16:57:50 · 203 阅读 · 0 评论 -
Spring Cloud Alibaba 技术栈
做Java,绕不开Spring。用Java做微服务开发,也绕不开Spring Cloud。随着Dubbo的重启,并交给Apache开源社区维护后,Dubbo生态越来越完善。虽然拿Spring Cloud与Dubbo作比较不合适,但不少朋友在技术选型时会纠结选择Dubbo还是Spring Cloud,Spring Cloud Alibaba的出现,将Dubbo生态完美的与Spring Cloud生态融合在一起。你不用再纠结选择Dubbo还是Spring Cloud,两者可以兼容的很好。下面罗列下可能会使用到原创 2021-05-20 16:06:07 · 446 阅读 · 0 评论 -
微服务:高性能网关 ShenYu简介
2022 年 7 月 28 日,全球最大的开源软件基金会 Apache 软件基金会发布博客,宣布 Apache ShenYu 正式毕业,成为 Apache 顶级项目(TLP)。原创 2022-08-29 11:49:32 · 2127 阅读 · 0 评论 -
SpringCloud:spring-cloud-loadbalancer原理分析及实现自定义负载均衡策略
/返回随机轮询负载均衡方式 return new RandomLoadBalancer(loadBalancerClientFactory . getLazyProvider(name , ServiceInstanceListSupplier . class) , name);} }但是如果我们要自定义轮询算法该如何做呢?根据上面可以知道LoadBalancerClientFactory是创建客户机、负载均衡器和客户机配置实例的工厂。原创 2023-06-27 18:13:49 · 2475 阅读 · 0 评论 -
架构:分布式任务调度系统(SIA-Task)简介
REST一种软件架构风格。这里要求执行器暴露Http调用接口来达到跨平台的目的;AOP切面编程技术。在Spring项目扩展包Hunter中使用,保证Task被串行调用(单例单线程);Quartz功能强大,应用灵活,对单个任务的控制基本做到了极致。这里用来作为调度中心时钟组件;MySQL用于元数据存储与(暂时)日志存取;Elastic基于Lucene的搜索服务器,提供了一个分布式多用户能力的全文搜索引擎。用于日志的存储与查询;httpshttps。...原创 2022-08-01 18:26:50 · 555 阅读 · 0 评论 -
SpringCloud: Feign集成Hystrix(FALLBACKFACTORY 方式)
02 UserFeignClientWithFactory 定义03 HystrixClientFactory 定义04 启动类配置05 测试启动 eureka-serve,eureka-client (8762,8763 两个端口),eureka-feign-hystrix-client , 浏览器访问 http://localhost:8761/在浏览器上 输入 :http://localhost:8767/FeignHystrixController/hi/java,得到结果如下:原创 2022-07-14 14:22:51 · 618 阅读 · 0 评论 -
Spring Cloud Alibaba: 服务容错组件Sentinel规则存储之Nacos存储实践
Sentinel 不仅仅可以可以作用于服务之间,还可以完美的和服务网关 GateWay 或者 Zuul 一起使用来对网关实现流控。从 1.6.0 版本开始,Sentinel 提供了 Spring Cloud Gateway 的适配模块,可以提供两种资源维度的限流:接口限流这件事非常轻易的应用到我们的Spring Cloud应用中。但是这依然不能完美满足我们的日常生产需求。其中,非常重要的一点就是限流规则持久化的问题。默认情况下Dashboard中设置的限流规则在应用重启之后就会丢失。那么,接下来我们就Sen原创 2022-07-14 15:04:15 · 280 阅读 · 0 评论 -
架构:微服务网关(SIA-Gateway)简介
微服务网关是微服务架构中的一个关键的角色,用来保护、增强和控制对于微服务的访问,微服务网关是一个处于应用程序或服务之前的系统,用来管理授权、访问控制和流量限制等,这样微服务就会被微服务网关保护起来,对所有的调用者透明。因此,隐藏在微服务网关后面的业务系统就可以更加专注于业务本身。...原创 2022-08-01 17:27:31 · 451 阅读 · 0 评论 -
SpringBoot:集成EasyExcel实现EasyExcel
当使用 EasyExcel 时,实体类需要按照以下规则进行定义。实体类需要添加 @ExcelIgnoreUnannotated 注解,以确保未被 @ExcelProperty 注解标记的字段被忽略。使用 @ExcelProperty 注解标记需要在 Excel 中读写的字段,可以指定字段在 Excel 中的列索引或列名。可以使用其他注解(如 @ExcelDateTimeFormat、@ExcelNumberFormat 等)来进一步定义字段的格式化规则。原创 2023-08-04 16:07:59 · 9342 阅读 · 0 评论 -
系统架构:分布式幂等适用场景及解决方案
相同的请求重复执行业务逻辑,如果处理不当,会给系统带来副作用。下图是一个服务间调用异常的例子,用户提交订单之后,请求到A服务,A服务落单之后,开始调用B服务,但是在A调用B的过程中,存在很多不确定性,例如B服务执行超时了,RPC直接返回A请求超时了,然后A返回给用户一些错误提示,但实际情况是B有可能执行是成功的,只是执行时间过长而已。不少关于幂等的文章都称自己的方案是通用解决方案,但笔者却认为,不同的业务场景下,相同请求和副作用都是有差异性的,不同的副作用需要不同的方案来解决,不存在完全通用的解决方案。原创 2023-06-30 17:41:59 · 405 阅读 · 0 评论 -
SpringBoot:kkFileView万能文件在线预览(已开源)
在之前的文章中,我们使用MinIO实现了文件存储,用于存储各种格式的文件。有时候我们不仅需要文件存储,还需要文件的在线预览。这里给大家推荐一个基于SpringBoot的文件预览神器kkFileView,基本支持主流文件的在线预览,使用也很简单,希望对大家有所帮助!kkFileView可以用来搭建文件在线预览服务,在Github上已有5.7k+Star。原创 2023-06-30 17:25:41 · 3266 阅读 · 4 评论 -
DevOps:压测工具dperf (百度开源)
dperf 是一款基于 DPDK 的 100Gbps 网络性能和负载测试软件,能够每秒建立千万级的 HTTP 连接、亿级别的并发请求和数百 Gbps 的吞吐量。原创 2023-06-30 17:23:14 · 1073 阅读 · 0 评论 -
SpingBoot:事务@Transactional注解不生效场景简介及事务回滚
开发中避免不了会对同一个类里面的方法调用,比如有一个类Test,它的一个方法A,A再调用本类的方法B(不论方法B是用public还是private修饰),但方法A没有声明注解事务,而B方法有。则外部调用方法A之后,方法B的事务是不会起作用的。加入在try catch中没有throw e 抛出异常,只是简单的打印异常,则异常被捕获未抛出异常去终止程序,在trycatch中的操作数据库语句插入失败,在trycatch上面和下面的数据库相关插入语句成功,也就是程序成功跑完,数据库不会发生回滚。原创 2023-06-30 17:18:51 · 588 阅读 · 0 评论 -
架构:HTTP与RPC的异同及各自的应用场景简介
HTTP接口和RPC接口都是生产上常用的接口,顾名思义,HTTP接口使用基于HTTP协议的URL传参调用,而RPC接口则基于远程过程调用。RPC(即,远程过程调用)和HTTP(,超文本传输协议),两者前者是一种方法,后者则是一种协议。两者都常用于实现服务,在这个层面最本质的区别是RPC服务主要工作在TCP协议之上(也可以在HTTP协议),而HTTP服务工作在HTTP协议之上。由于HTTP协议基于TCP协议,所以RPC服务天然比HTTP更轻量,效率更胜一筹。两者都是基于网络实现的,从这一点上,都是基于架构。原创 2023-06-30 17:10:13 · 633 阅读 · 0 评论 -
架构:前后端分离的必要性及接口规范
随着互联网的高速发展,前端页面的展示、交互体验越来越灵活、炫丽,响应体验也要求越来越高,后端服务的高并发、高可用、高性能、高扩展等特性的要求也愈加苛刻,从而导致前后端研发各自专注于自己擅长的领域深耕细作。然而带来的另一个问题:前后端的对接界面双方却关注甚少,没有任何接口约定规范情况下各自撸起袖子就是干,导致我们在产品项目开发过程中,前后端的接口联调对接。工作量占比在30%-50%左右,甚至会更高。往往前后端接口联调对接及系统间的联调对接都是整个产品项目研发的软肋。原创 2023-06-30 17:07:37 · 303 阅读 · 0 评论 -
SpringBoot:重试机制@Retryable简介及实践
在实际工作中,重处理是一个非常常见的场景,比如:这些错误可能是因为网络波动造成的,等待过后重处理就能成功。通常来说,会用,循环之类的语法来进行重处理,但是这样的做法缺乏统一性,并且不是很方便,要多写很多代码。然而却可以通过注解,在不入侵原有业务逻辑代码的方式下,优雅的实现重处理功能。spring系列的是另一个实用程序模块,可以帮助我们以标准方式处理任何特定操作的重试。在中,所有配置都是基于简单注释的。2、启用@Retryable3、在方法上添加@Retryable来简单解释一下注解中几个参数的含义原创 2023-06-30 17:05:02 · 1428 阅读 · 0 评论 -
工作效率:12个超好用的在线工具(提高生产力)
它提供了一个简单的界面,让用户可以选择不同的图标类型、尺寸和样式,例如圆形、方形、圆角等等。它提供了一个简单的界面,让用户可以输入自己的网页标题、描述、关键字和图像等信息,并生成对应的元标记代码。它提供了一个简单的界面,让用户可以输入自己的代码,并选择不同的主题、字体和配色方案。它可以处理各种类型的图片,包括人物、动物、产品等等。它提供了一个简单的界面,让用户可以输入自己的代码,并选择不同的主题、字体和配色方案。它提供了一个简单的界面,让用户可以选择不同的图标、字体和颜色,以及添加自己的文本和标语。原创 2023-06-30 17:01:03 · 434 阅读 · 0 评论