SpringCloud Alibaba微服务实战
文章平均质量分 77
Spring Cloud Alibaba 是阿里巴巴提供的微服务开发一站式解决方案,是阿里巴巴开源中间件与 Spring Cloud 体系的融合。
liu1002880404
这个作者很懒,什么都没留下…
展开
-
SpringCloud系列之Nacos+Dubbo应用
## maven依赖 <!--nacos discovery--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <exclusions原创 2022-03-21 21:50:10 · 1073 阅读 · 0 评论 -
springcloud面试题
什么是微服务微服务架构是一种架构模式,或者说是一种架构风格,它提倡将单一的应用程序划分成一组小的服务,每个服务运行在其独立的自己的进程内,服务之间互相协调,互相配置,为用户提供最终价值,服务之间采用轻量级的通信机制(HTTP)互相沟通,每个服务都围绕着具体的业务进行构建,并且能狗被独立的部署到生产环境中,另外,应尽量避免统一的,集中式的服务管理机制,对具体的一个服务而言,应该根据业务上下文,选择合适的语言,工具(Maven)对其进行构建,可以有一个非常轻量级的集中式管理来协调这些服务,可以使用不同的原创 2022-03-15 07:10:08 · 635 阅读 · 0 评论 -
springcloud综述
微服务架构的常见概念服务治理服务注册:服务实例将自身服务信息注册到注册中心服务发现:服务实例通过注册中心,获取到注册到其中的服务实例的信息,通过这些信息去请求它们提供的服务。服务剔除:服务注册中心将出问题的服务自动剔除到可用列表之外,使其不会被调用到。服务调用基于HTTP的RESTfulRPC(Remote Promote Call)比较项RESTfulRPC通讯协议HTTP一般使用TCP性能略低较高灵活度高低应用微服务架构SOA架构服务网关将所有API调用统一接入到API网关层,由网原创 2022-03-09 10:27:20 · 234 阅读 · 0 评论 -
解决XSS攻击常用方法
XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容解决方式一:强制修改html敏感标签内容/** * xss特殊字符拦截与过滤 * */public class原创 2021-07-24 22:29:48 · 3045 阅读 · 0 评论 -
Sentinel限流熔断—解决限流/XXXX/{id}查询接口不准确的问题
Sentinel限流熔断—解决限流/XXXX/{id}查询接口不准确的问题问题分析Sentinel中HTTP服务的限流默认由Sentinel-Web-Servlet包中的CommonFilter来实现,从代码中可以看到,这个Filter会把每个不同的URL都作为不同的资源来处理。在下面这段代码中,提供了一个携带{id}参数的REST风格API,对于每一个不同的{id},URL也都不一样,所以在默认情况下Sentinel会把所有的URL当做资源来进行流控。import org.springframe原创 2021-07-13 17:55:24 · 460 阅读 · 0 评论 -
Nacos动态配置数据源
思路SpringBoot/SpringCloud项目部署运行后,如果使用硬编码方式定义数据源,那么如果需要更换数据库,就只能通过更改源码并重启的方式来达成目的而SpringCloud生态中有配置中心这一组件,我们可以将数据源连接属性编写在配置中心中,需要修改连接属性就可以从配置中心中修改并发布,这样就可以热修改数据源位置无需重启服务代码pom <properties> <project.build.sourceEncoding>UTF-8</proj原创 2021-07-12 10:36:09 · 2663 阅读 · 0 评论 -
springboot整合mybatis-plus打印完整SQL语句
mybatis-plus控制台打印完整带参数SQL语句问题背景通常我们开发的时候,需要联合控制台和Navicat/PLSQL等工具进行语句的拼接检查,如果只是输出了一堆???,那么将极大降低我们的效率。因此我们需要输出完整的SQL语句以便调试。解决方案1.Mybatis拦截器实现统计sql执行时间及打印完整sql语句代码import java.sql.Connection;import java.text.DateFormat;import java.util.Date;import ja原创 2021-07-06 16:10:17 · 9726 阅读 · 1 评论 -
服务最大的并发量是多少?
综述Spring Boot 能支持的最大并发量主要看其对内置服务器的设置。由于现在都使用的是springboot服务,配置文件中也没有配置相关参数,基本都是使用默认的线程配置。springboot内置了tomcat Jetty和Undertow服务器Spring Boot启动程序通常使用Tomcat作为默认的嵌入式服务器。如果需要更改 - 您可以排除Tomcat依赖项并改为包含Jetty或Undertow:配置Jettyorg.springframework.bootspring-boot-原创 2021-07-04 16:32:20 · 3968 阅读 · 0 评论 -
系统架构演变
B. 分布式基础设施环境构建1.分布式任务调度平台XXL-Job2.分布式日志采集系统ELK 3.分布式事务解决方案LCN4.分布式锁解决方案Zookeeper、Redis5.分布式配置中心携程阿波罗 6.高并发分布式全局ID生成雪花算法7.分布式Session框架Spring-Session8.分布式服务追踪与调用链ZipKin C.项目运营与部署环境1.分布式设施环境,统一采用docker安装2.使用jenkins+docker+k8s实...原创 2020-07-28 18:36:49 · 453 阅读 · 0 评论 -
springCloud整合Elasticsearch最全应用(持续更新中)
首先,es产品对版本号统一管理发布,各个互相整合依赖的服务版本号必须一致es产品的下载地址如下:https://www.elastic.co/cn/downloads/past-releases原创 2021-06-03 08:27:02 · 2551 阅读 · 0 评论 -
SpringCloud Alibaba微服务实战三十四- Spring Cloud Alibaba 服务监控
新建一个监控服务cloud-monitor引入依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4....原创 2021-06-01 17:38:40 · 981 阅读 · 1 评论 -
微服务架构掌握知识
CAP 定理,BASE 理论的了解(1)CAP 定理在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点:一致性(Consistence):所有节点访问同一份最新的数据副本可用性(Availability):每次请求都能获取到非错的响应——但是不保证获取的数据为最新数据分区容错性(Partition tolerance): 分布式系统在遇到某节点或网络分区故障的时候...原创 2021-05-29 10:53:35 · 686 阅读 · 0 评论 -
SpringCloud Alibaba微服务实战三十三- Spring Cloud Alibaba 全家桶
Spring Cloud for Alibaba,它是由一些阿里巴巴的开源组件和云产品组成的。这个项目的目的是为了让大家所熟知的 Spring 框架,其优秀的设计模式和抽象理念,以给使用阿里巴巴产品的 Java 开发者带来使用 Spring Boot 和 Spring Cloud 的更多便利。...原创 2021-05-29 06:41:24 · 3830 阅读 · 0 评论 -
SpringCloud Alibaba 2021微服务实战三十二 集成RocketMQ实现分布式事务
基于RocketMQ分布式事务 - 完整示例Java程序员danniJAVA程序猿一枚关注他30 人赞同了该文章前言之前我们说到,分布式事务是一个复杂的技术问题。没有通用的解决方案,也缺乏简单高效的手段。不过,如果我们的系统不追求强一致性,那么最常用的还是最终一致性方案。今天,我们就基于RocketMQ来实现消息最终一致性方案的分布式事务。本文代码不只是简单的demo,考虑到一些异常情况、幂等性消费和死信队列等情况,尽量向可靠业务场景靠拢。另外,在最后还有《R...原创 2021-05-28 21:34:11 · 1072 阅读 · 0 评论 -
SpringCloud Alibaba 2021微服务实战三十一 spring容器bean循环依赖
什么是循环依赖?顾名思义,循环依赖就是A依赖B,B又依赖A,两者之间的依赖关系形成了一个圆环,通常是由于不正确的编码所导致。Spring只能解决属性循环依赖问题,不能解决构造函数循环依赖问题,因为这个问题无解。接下来我们首先写一个Demo来演示Spring是如何处理属性循环依赖问题的。Talk is cheap. Show me the code第一步:定义一个类ComponentA,其有一个私有属性componentB。package com.tech.ioc;import org.s原创 2021-05-28 18:37:44 · 502 阅读 · 0 评论 -
SpringCloud Alibaba 2021微服务实战三十 springBoot 核心知识
一,特点约定优于配置,集成功能强大,集成WEB容器等,在应用中也体会到了功能的强大。Spring Boot 以约定大于配置的核心思想,默认帮我们进行了很多设置,多数 Spring Boot 应用只需要很少的 Spring 配置。同时它集成了大量常用的第三方库配置(例如 Redis、MongoDB、Jpa、RabbitMQ、Quartz 等等),Spring Boot 应用中这些第三方库几乎可以零配置的开箱即用。————————————————版权声明:本文为CSDN博主「小鱼0914」的原创文章,遵原创 2021-05-28 17:49:41 · 456 阅读 · 0 评论 -
SpringCloud Alibaba 2021微服务实战二十九 Seata 整合Nacos实战
场景说明订单服务order-service需要对外提供创建订单的接口,创建订单的业务逻辑如下:先调用本地的orderService保存订单操作,然后通过feign调用远程的accout-service进行账户余额扣减,最后再通过feign调用远程的product-service进行库存扣减操作。关键的逻辑代码如下:OrderController对外提供创建订单的接口@PostMapping("/order/create")public ResultData<Ord..原创 2021-05-27 17:53:22 · 626 阅读 · 0 评论 -
SpringCloud Alibaba 2021微服务实战二十八 分布式事务框架 Seata
阿里开源的分布式事务框架 Seata1. Seata 概述Seata 是 Simple Extensible Autonomous Transaction Architecture 的简写,由 feascar 改名而来。Seata 是阿里开源的分布式事务框架,属于二阶段提交模式。https://gitee.com/mirrors/Seata.git 很活跃的一个项目。、官网地址:https://seata.io/zh-cn/https://seata.io/zh-cn/.原创 2021-05-27 16:14:22 · 429 阅读 · 0 评论 -
SpringCloud Alibaba 2021微服务实战二十七 微服务常用的starter
spring-boot-starter前言spring-boot 在配置上相比spring要简单许多, 其核心在于spring-boot-starter, 在使用spring-boot来搭建一个项目时, 只需要引入官方提供的starter, 就可以直接使用, 免去了各种配置, 原因在于spring-boot的自动发现,比如当classpath下面有对应的jar包 时,对应的bean就会被加载.这些starter构成了我们应用程序的最重要的部分,熟悉对应的starter,掌握其应用场景的那个部分所要引原创 2021-05-26 12:13:26 · 686 阅读 · 0 评论 -
SpringCloud Alibaba 2021微服务实战二十六 openfeign最佳实践
1,依赖pom<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.o原创 2021-05-25 17:48:24 · 1017 阅读 · 22 评论 -
SpringCloud Alibaba 2021微服务实战二十五 分布式事务
SpringCloud Alibaba 2021微服务实战二十五 分布式事务一、分布式事务1、事务的概念 事务是一组操作的执行单元,相对于数据库操作来讲,事务管理的是一组SQL指令,比如增加,修改,删除等,事务的一致性,要求,这个事务内的操作必须全部执行成功,如果在此过程种出现了差错,比如有一条SQL语句没有执行成功,那么这一组操作都将全部回滚 最经典的例子便是:A向B汇款500元,B账户多了500元,这整个过程,要么全部正常执行,要么全部回滚,不然就会出现A扣款,B收不到钱,或者A没扣原创 2021-05-25 13:51:04 · 504 阅读 · 0 评论 -
SpringCloud Alibaba 2021微服务实战二十四 gateway重试机制的使用
前言重试,我相信大家并不陌生。在我们调用Http接口的时候,总会因为某种原因调用失败,这个时候我们可以通过重试的方式,来重新请求接口。生活中这样的事例很多,比如打电话,对方正在通话中啊,信号不好啊等等原因,你总会打不通,当你第一次没打通之后,你会打第二次,第三次…第四次就通了。重试也要注意应用场景,读数据的接口比较适合重试的场景,写数据的接口就需要注意接口的幂等性了。还有就是重试次数如果太多的话会导致请求量加倍,给后端造成更大的压力,设置合理的重试机制才是最关键的。今天我们来简单的了解下Spr原创 2021-05-24 17:38:49 · 985 阅读 · 2 评论 -
SpringCloud Alibaba 2021微服务实战二十三 项目优化之openfeign 性能优化
1、替换 tomcat首先,把 tomcat 换成 undertow,这个性能在 Jmeter 的压测下,undertow 比 tomcat 高一倍第一步,pom 修改 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifac原创 2021-05-24 16:48:31 · 1003 阅读 · 0 评论 -
SpringCloud Alibaba 2021微服务实战二十二 项目优化之异步处理日志syslog @Async @EventListener注解的应用
原理讲解AOP 切面获取当前请求的注解值,并 异步 发送时间,减少日志操作的性能损耗 监听器在接收到日志事件后进行调用feign入口处理@EventListener注解的应用在开发工作中,会遇到一种场景,做完某一件事情以后,需要广播一些消息或者通知,告诉其他的模块进行一些事件处理,一般来说,可以一个一个发送请求去通知,但是有一种更好的方式,那就是事件监听,事件监听也是设计模式中 发布-订阅模式、观察者模式的一种实现。观察者模式:简单的来讲就是你在做事情的时候身边有人在盯着你,当你做的某.原创 2021-05-24 16:17:30 · 1835 阅读 · 1 评论 -
SpringCloud Alibaba 2021微服务实战二十一 Gateway -- Cors解决跨域问题
Spring Cloud Gateway Cors跨域问题的解决CORS前后端分离就会碰到跨域问题,原本我们在后端采用 CORS 解决,现在利用网关,可以放在网关解决。版本:spring-cloud:Hoxton.SR9spring-cloud-gateway:2.3.2.RELEASE一共两个文件CorsConfiguration.java/** * 配置跨域 */@Configurationpublic class CorsConfiguration {原创 2021-05-23 21:49:41 · 1428 阅读 · 0 评论 -
SpringCloud Alibaba 2021微服务实战二十 业务日志处理,starter实战
SpringCloud Alibaba微服务实战之业务日志组件要实现上述的功能我们需要借助SringBoot Starter来实现,SpringBoot 的一大优势就是Starter,通过Starter我们可以封装公共的业务逻辑以及参数的初始化,如果你在进行微服务开发,Starter的编写是一定要掌握的。概述前面我们通过gateway记录了请求响应日志信息,但对某个业务场景记录更确切的日志,我们要编写通用的一个组件来处理。日志如何处理,根据业务要求合理处理日志,这里只提供一个处理的思路,细.原创 2021-05-23 21:16:56 · 1016 阅读 · 0 评论 -
SpringCloud Alibaba 2021微服务实战十九 源码理解之@EnableDiscoveryClient 是如何实现服务注册的
@EnableDiscoveryClient 是如何实现服务注册的?我们首先需要了解 Spring-Cloud-Commons 这个模块,Spring-Cloud-Commons 是 Spring-Cloud 官方提供的一套抽象层,类似于 JDBC 一样,提供了一套规范,具体的实现有实现厂商去根据标准实现, Spring-Cloud-Commons 共提供了6个模块标准规范。actuatorcircuitbreakerdiscoveryhypermedialoadbalancerservic原创 2021-05-23 10:32:07 · 778 阅读 · 0 评论 -
SpringCloud Alibaba 2021微服务实战十八 SpringCloud整合Swagger3
导读:在SpringCloud体系架构中,我们需要的每个服务都需要对外输出接口文档,本篇内容主要是给我们的微服务配上Swagger的接口文档,并在网关层完成接口聚合。Swagger3简介在当下很多项目都会采用前后端分离的模式,前端和后端的工作由不同的开发人员完成。在这种开发模式下,我们需要维护一份及时更新且完整的Rest API接口文档。传统意义上的文档都是后端人员在开发相关接口后手动更新到接口文档上,但是这种方式很难保证文档的及时性,而且由于一些原因后端开发人员可能会忘记更新,这样就会导致随着开发原创 2021-05-22 20:47:12 · 3066 阅读 · 5 评论 -
SpringCloud Alibaba 2021微服务实战十七 禁止跳过网关直接访问后端服务
前面十讲左右是在讲网关,路由。拦截日志,监控,限流,熔断,鉴权等等,但如果我不走网关直接调用后台也是行的通的。使用SpringCloud架构后我们希望所有的请求都需要经过网关才能访问,在不作任何处理的情况下我们是可以绕过网关直接访问后端服务的。我们希望所有的请求都需要经过网关才能访问。那么问题来了,如何进行处理呢?我们今天的议题就是 如何防止请求绕过网关直接访问后端服务?解决方案防止绕过网关直接请求后端服务的解决方案主要有三种:使用Kubernetes部署在使用Kubernetes原创 2021-05-22 16:57:10 · 4956 阅读 · 7 评论 -
SpringCloud Alibaba 2021微服务实战十六 整合Oauth2
SpringCloudOauth2Oauth2简介OAuth 2.0是用于授权的行业标准协议。OAuth 2.0致力于简化客户端开发人员,同时为Web应用程序,桌面应用程序,移动电话和客厅设备提供特定的授权流程。该规范及其扩展正在IETF OAuth工作组内开发。OAuth 2.0 的标准是 RFC 6749 文件。该文件先解释了 OAuth 是什么。OAuth 的核心就是向第三方应用颁发令牌。然后,RFC 6749 接着写道:它定义了获得令牌的四种授权方式(authorization grant原创 2021-05-22 11:37:54 · 3619 阅读 · 1 评论 -
SpringCloud Alibaba 2021微服务实战十五 gateway网关过滤器的应用,请求响应加解密操作,请求加入自定义参数
对于程序员做业务开发来说。也许开发的代码很少,但功能实现所要的限制却不少尤其对于与外部公司的接口很多,但各种要求不同包括数据格式,加解密,增加请求header等等,这些如果在后端实现的话,代码改动会很多,同时也增加了后端代码的不统一性,维护起来很麻烦,现就一些外部公司接口要求在网关处进行配置的应用:一,对请求参数的修改类型,比如加解密等等,在一些针对数据比较敏感的项目中会对客户端与服务端之间交互的数据进行加密处理。在gateway网关服务中处理此项业务需要如何实现呢?gateway中自定义的fil原创 2021-05-22 07:05:57 · 3587 阅读 · 2 评论 -
SpringCloud Alibaba 2021微服务实战十四 Springcloud alibaba gateway 限流的两种实现方式 redis自带实现及整合sentinel实现网关限流
微服务架构图:由上图可知:限流一是在负载均衡转发出限流,一般是nginx,二是在网关转发时限流三是在单个服务处限流,前一部分sentinel已经讲解过微服务限流这一次详解网关限流。...原创 2021-05-20 17:50:27 · 2232 阅读 · 0 评论 -
SpringCloud Alibaba 2021微服务实战十三 gateway 全局过滤器打印日志及如何忽略全局过滤器
API 网关的职能API 网关的分类与功能下面讲解自定义过滤器 之记录日志功能应用!全局过滤器拦截请求打印日志:代码:package com.liu.learn.filter;import cn.hutool.core.util.ObjectUtil;import com.alibaba.nacos.common.utils.StringUtils;import com.liu.learn.utils.WebUtils;import com.liu.learn.vo.原创 2021-05-20 13:31:48 · 1912 阅读 · 4 评论 -
SpringCloud Alibaba 2021微服务实战十二 Springcloud alibaba整合gateway 之 过滤器讲解
过滤器(Filter)GatewayFilter允许以某种方式修改传入的HTTP请求或传出的HTTP响应。路由过滤器的作用域是特定的路由。 Spring Cloud Gateway包括许多内置的GatewayFilter工厂。GlobalFilter接口具有与GatewayFilter相同的签名。这些是特殊过滤器,有条件地应用于所有路由。https://docs.spring.io/spring-cloud-gateway/docs/3.0.2/reference/html/#gatewayfil原创 2021-05-19 17:18:01 · 513 阅读 · 0 评论 -
SpringCloud Alibaba 2021微服务实战十一 Springcloud alibaba整合gateway应用之路由
SpringCloud Alibaba 2021微服务实战十一 Springcloud alibaba整合gateway1.前言之前学习了nacos,sentinel,并对sentinel进行了持久化改造。现在轮到了gateway了2.gateWay简介Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul 网关。网关作为流量的,在微服务系统中有着非常作用。 注:由于不是Sevlet容器,所以他不能打成war包, 只支持Sprin..原创 2021-05-19 13:56:41 · 924 阅读 · 0 评论 -
SpringCloud Alibaba 2021微服务实战十 sentinel实战之Sentinel生产环境部署实现持久化
Alibaba Sentinel规则持久化-推模式-【基于Nacos】一、推模式架构图二、原理简述 控制台推送规则: 将规则推送到Nacos或其他远程配置中心 Sentinel客户端链接Nacos,获取规则配置;并监听Nacos配置变化,如发生变化,就更新本地缓存(从而让本地缓存总是和Nacos一致) 控制台监听Nacos配置变化,如发生变化就更新本地缓存(从而让控制台本地缓存总是和Nacos一致) 三、微服务改造 加依赖 &.原创 2021-05-19 09:27:25 · 812 阅读 · 1 评论 -
SpringCloud 2020 Alibaba微服务实战九 sentinel实战之RestTemplate整合Sentinel及Feign整合Sentinel
一,RestTemplate整合Sentinelyml配置resttemplate: sentinel: #false 关闭@SentinelRestTemplate注解,在做开发调试的时候可以关闭此注解,专注于功能的实现 enabled: true@Bean@LoadBalanced@SentinelRestTemplatepublic RestTemplate RestTemplate(){ return new RestTemplate(new.原创 2021-05-18 17:24:02 · 444 阅读 · 1 评论 -
SpringCloud 2020 Alibaba微服务实战七 sentinel实战之处理熔断
概念说明消费者order-service需要先调用product-service获取具体的product,然后再处理其他的业务逻辑。但是这个product-service接口不是很稳定,经常抛出异常;或者是响应缓慢,导致order-service的响应变慢;如果置之不理,order-service可能会被product-service拖垮。这时候为了保护order-service,我们需要对product-service接口进行熔断。总之:熔断是通过限制自己对外部系统的调用, 起到节约响应时间、维护链原创 2021-05-18 15:29:53 · 365 阅读 · 1 评论 -
SpringCloud 2020 Alibaba微服务实战八 sentinel实战之优雅的处理限流异常
一,blockHandler使用blockHandler指定发生BlockException时进入的方法,方法需满足以下条件必须是 public 修饰 返回类型、参数与原方法一致,并在最后加BlockException 类型的参数 默认需和原方法在同一个类中代码package com.liu.controller;import com.alibaba.csp.sentinel.annotation.SentinelResource;import com.alibaba.csp.se原创 2021-05-18 12:31:59 · 499 阅读 · 2 评论 -
SpringCloud 2020 Alibaba微服务实战六 sentinel实战之服务限流及限流规则持久化
前面介绍了服务的注册与发现,服务配置中心,服务的调用及负载均衡,这一回介绍服务的限流及熔断!Alibaba 技术栈为Sentinel,Sentinel 是什么随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的轻量级流量控制产品,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助您保护服务的稳定性。在SpringCloud体系中,sentinel主要是为了替换原Hystrix的功能,与Hystrix相比,sentinel...原创 2021-05-18 11:21:54 · 1054 阅读 · 2 评论