微服务
文章平均质量分 63
web微服务简介与使用
灼烧的疯狂
千丈红尘美如诗...
展开
-
Spring Cloud Gateway 修改请求体、响应体
Spring cloud gateway 修改请求体、响应体、ModifyRequestBodyGatewayFilterFactory修改请求体、ModifyResponseBodyGatewayFilterFactory修改响应体原创 2024-02-01 14:34:57 · 2671 阅读 · 0 评论 -
Dubbo处理下游返回的自定义异常
Dubbo处理业务异常、Dubbo处理自定义异常原创 2023-02-15 15:46:36 · 660 阅读 · 0 评论 -
feign的加解密封装
feign Encoder Decoder实现加解密、feign加解密、feignClient加密、feign response 解密原创 2022-04-20 12:55:22 · 3519 阅读 · 0 评论 -
feign调用第三方接口服务
feign调用远程服务、feign调用第三方接口服务原创 2022-04-14 13:05:49 · 2095 阅读 · 0 评论 -
feign动态调用远程服务
动态生成FeignClient、feign动态调用、动态生成feign原创 2022-04-14 12:53:33 · 1365 阅读 · 0 评论 -
自定义nacos负载均衡
nacos负载均衡、自定义nacos负载均衡、ribbon多节点配置原创 2021-12-21 10:33:00 · 2885 阅读 · 1 评论 -
nacos日志疯狂输出解决
前言生产上nacos的access_log疯狂输出,占用大量磁盘空间解决方法方法1:在业务系统的application.yml配置文件中 或 logback.xml中,可通过日志级别设置来进行控制:# 日志级别,可以指定到具体类logging: level: com.alibaba.nacos: warn方法2(生产推荐):也可以通过启动时的JVM参数来进行控制,默认是info级别-Dcom.alibaba.nacos.naming.log.level=error -Dcom.alibab转载 2021-08-31 15:32:04 · 11148 阅读 · 0 评论 -
seata配置
前言:做个笔记吧,回头忘了又要去找一次当前使用的seata版本是 1.4.01. 下载解压这个没什么可说的,从 README-zh.md 中可以看到各种所需信息![在这里插入图片描述](https://img-blog.csdnimg.cn/20210513110732802.png2.执行服务端和客户端的SQL从 README-zh.md 中可以拿到SQL脚本,我这边做笔记时是直接从数据库中取的服务端CREATE TABLE `undo_log` ( `branch_id` bigi原创 2021-05-13 11:27:02 · 5446 阅读 · 2 评论 -
restTemplate 响应体泛型指定
前言这里感觉feign的体验不太好,被坑过几次。当然更大概率是我自己没仔细研究。看网上也很多人吐槽说feign不好用,坑多…为避免后续爬坑,直接把这个绕开吧,就用 restTemplate了,后续顶多再配置一下负载均衡策略 @Bean @LoadBalanced public RestTemplate getRestTemplate() { return new RestTemplate(); }这里处理返回值为泛型的问题 - 记录一下怕后续遗忘了,再找起来麻烦 /** *原创 2021-04-19 18:24:56 · 1439 阅读 · 0 评论 -
分布式事务 Seata 首秀以及三种模式详解
一、分布式事务产生的背景 1.1 分布式架构演进之 - 数据库的水平拆分 蚂蚁金服的业务数据库起初是单库单表,但随着业务数据规模的快速发展,数据量越来越大,单库单表逐渐成为瓶颈。所以我们对数据库进行了水平拆分,将原单库单表拆分成数据库分片。 如下图所示,分库分表之后,原来在一个数据库上就能完成的写操作,可能就会跨多个数据库,这就产生了跨数据库事务问题。 1.2 分布式架构演进之 - 业务服务化拆分 在业务发展初期,“一块大饼”的单业务系统架构,能满足基本的业务需求。但是随着业务的快速发展,系统的访问量和业转载 2021-03-17 16:10:30 · 2564 阅读 · 0 评论 -
Feign远程调用丢失请求头问题
1. Feign远程调用丢失请求头问题解决:添加拦截器:import feign.RequestInterceptor;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.context.request.RequestContextHolder;import o转载 2021-03-17 15:12:47 · 324 阅读 · 0 评论 -
SpringCloudGateway允许跨域访问
为本地方便测试使用import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.http.HttpHeaders;import org.springframework.http.HttpMethod;import org.springframework.http.HttpStatus;转载 2021-03-07 15:21:14 · 1690 阅读 · 0 评论 -
redis分布式锁的应用
前言:项目需求,搞了搞实现了锁的重入参考了别人的博文实现了AOP注解形式的锁、统一配置参考博文地址:https://www.cnblogs.com/lijiasnong/p/9952494.html这边看了下比较主流几个分布式锁的应用,最终选择的redis原因是:1、懒(服务器已有redis做缓存,不想再去安装zuukeeper)2、评估认为redis的分布式锁已能满足当下应用正文 - 摘录核心代码:RedisReentrantLockimport org.springf原创 2020-12-14 11:11:58 · 604 阅读 · 1 评论 -
SpringCloudGateway请求/响应拦截,加/解密
前言:目前就是对请求的request body ,url param 在网关进行拦截、做解密操作,对 response body 做加密操作这边初期就打算先用非对称加密对请求响应进行处理,后续如果项目开展顺利,再改成HTTPS通信(节约钱、先看项目起得来不了)。翻阅了一些博文,抄袭了一下,自己稍作修改。下面直接上代码了,自己做个记录吧请求体(request body)拦截import com.ruoyi.gateway.util.RSACoderUtil;import org.apache.co原创 2020-12-22 13:48:35 · 16329 阅读 · 30 评论 -
nacos发布为Windows服务自启动
前言小公司,没有买自己的局域网服务器,测试服务器(centos)在阿里云使用nacos网络交互通信慢,于是在本机电脑上也配了nacos服务,注册为Windows服务自启动,方便自己独立开发与调试正文1. 搜到的Windows服务注册:https://docs.gitea.io/zh-cn/windows-service/参考了一下,改改自己用:sc create nacos start= auto binPath= "\"E:\just4fun\nacos-server-1.3.0\naco原创 2020-10-12 13:37:57 · 7683 阅读 · 13 评论 -
微服务项目开发规范
1.项目命名:xx-xx/xx-xx-xx项目名-模块名/项目名-模块名-二级模块名大小写:全部小写,单词间使用-连接2项目划分mes-base 共有基础模块,抽出共用实体,共用工具类等mes-discovery-eureka 服务注册中心mes-api-gateway 网关mes-config 配置中心...转载 2020-08-21 10:47:22 · 1543 阅读 · 1 评论 -
Springcloud Config分布式配置中心(1、概况介绍)
1. 简介在微服务中,每个功能模块其实都可以拆分成一个单独的服务实例,如果项目够大,必然会有很多服务单元,每个服务单元都有一份配置文件需要维护,这显得不太好维护,而且不方便协作开发。为了使服务实例的配置文件统一管理化,Spring Cloud Config提供了一套解决方案,建立一个配置服务中心,每个服务单元从config server中获取具体的配置文件,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。为了保证系统的稳定,配置服务端config server可以进行集群部署,即原创 2020-08-03 15:49:35 · 111 阅读 · 0 评论 -
Zuul(2、使用)
大纲默认实现服务名路由路由排除自定义路由映射过滤器1. Zuul的默认实现这里新建一个项目吧,比起Eureka客户端,需要额外引入Zuul配置application.yml,服务中心和服务提供者接前文中的项目server: port: 9999#配置应用的名字spring: application: name: zuul-servereureka: client: #register-with-eureka: true #是否将当前应用注册到注原创 2020-08-02 19:19:15 · 579 阅读 · 0 评论 -
Zuul(1、简介)
1.网关简介在微服务框架中,每个对外服务都是独立部署的,对外的api或者服务地址都不是不尽相同的。对于内部而言,通过注册中心服务拉取即可获取。那么外部调用呢?微服务可能是不同的技术栈实现的,http或websocket等等,也会进一步加大客户端的调用难度。所以,出现了API网关,根据请求的URL不同,路由到不同的服务上去,同时统一了入口,还能进行统一的身份鉴权、日志记录、分流等操作。2.网关的作用提供一个单独且统一的API入口用于访问内部一个或多个API。简单来说就是一个统一入口,比如现在的支付原创 2020-08-02 10:47:39 · 188 阅读 · 0 评论 -
服务容错保护(6、线程池与信号量隔离)
简介容器线程(tomcat、jetty)与 远程服务调用线程隔离,即异步执行服务间远程调用如果依赖多个微服务,多个依赖间相互隔离线上建议线程池不要设置过大,否则大量堵塞线程有可能会拖慢服务器。线程隔离的优点:可以完全模拟异步调用,方便异步编程。线程隔离的缺点:线程开销线程隔离的适用场景不受信服务(第三方接口服务)有限依赖(依赖的服务不能太多)...原创 2020-07-31 11:05:58 · 566 阅读 · 0 评论 -
服务容错保护(5、服务熔断)
简介当请求后端服务失败数量超过一定比例(默认50%), 断路器会切换到开路状态(Open). 这时所有请求会直接失败而不会发送到后端服务. 断路器保持在开路状态一段时间后(默认5秒), 自动切换到半开路状态(HALF-OPEN),和服务降级很相似,但是服务降级没有熔断策略的设置。断路器确定是否打开需要统计一些请求和错误数据,而统计的时间范围就是快照时间窗,默认为最近的10秒。实现接consumer01项目,在项目入口添加注解 @EnableCircuitBreaker 启用断路器在servic原创 2020-07-30 10:49:54 · 541 阅读 · 0 评论 -
服务容错保护(4、Hystrix请求合并)
请求合并简介什么情况下使用请求合并在微服务架构中,我们将一个项目拆分成很多个独立的模块,这些独立的模块通过远程调用来互相配合工作,但是,在高并发情况下,通信次数的增加会导致总的通信时间增加,同时,线程池的资源也是有限的,高并发环境会导致有大量的线程处于等待状态,进而导致响应延迟,为了解决这些问题,我们需要来了解 Hystrix 的请求合并。请求合并的缺点设置请求合并之后,本来一个请求可能 5ms 就搞定了,但是现在必须再等 10ms 看看还有没有其他的请求一起的,这样一个请求的耗时就从 5ms 增原创 2020-07-29 17:16:13 · 137 阅读 · 0 评论 -
服务容错保护(3、请求缓存)
2.请求缓存2.1 简介Hystrix 为了降低访问服务的频率,支持将一个请求与返回结果做缓存处理。如果再次请求的 URL 没有变化,那么 Hystrix 不会请求服务,而是直接从缓存中将结果返回。这样可以大大降低访问服务的压力。比如一个请求过来请求我productId=1的数据,你后面的请求也过来请求同样的数据,这时我不会继续走原来的那条请求链路了,而是把第一次请求缓存过了,把第一次的请求结果返回给后面的请求。2.2 实现用过springmvc的应该都接触并使用过Redis、SpringCach原创 2020-07-29 15:55:16 · 121 阅读 · 0 评论 -
服务容错保护(2、Hystrix服务降级)
1.服务降级1.1 简介服务降级,当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。比如电商平台,在针对618、双11等高峰情形下采用部分服务不出现或者延时出现的情形。Hystrix服务降级:Fallback相当于是降级操作. 对于查询操作, 我们可以实现一个fallback方法, 当请求后端服务出现异常的时候, 可以使用fallback方法返回托底数据. fallback方法的返回值一般是设置的默认值或者来自缓存.告知后面的请求原创 2020-07-29 15:51:28 · 182 阅读 · 0 评论 -
服务容错保护(1、服务雪崩的概念及解决方案简介)
1.什么是服务雪崩在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用。为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,Servlet容器的线程资源会被消耗完毕,导致服务瘫痪。服务与服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性的严重后果,这就是服务故原创 2020-07-29 11:24:32 · 1037 阅读 · 1 评论 -
Feign(简介和使用)
1. Feign介绍通过RestTemplate调用其它服务的API时,所需要的参数须在请求的URL中进行拼接,如果参数少的话或许我们还可以忍受,一旦有多个参数的话,这时拼接请求字符串就会效率低下Feign是一个声明式的Web Service客户端,它的目的就是让Web Service调用更加简单。Feign提供了HTTP请求的模板,通过编写简单的接口和插入注解,就可以定义好HTTP请求的参数、格式、地址等信息。而Feign则会完全代理HTTP请求,我们只需要像调用方法一样调用它就可以完成服务请求及相原创 2020-07-28 12:40:20 · 18978 阅读 · 1 评论 -
Ribbon(2、使用)
1.先来个最简单的创建项目时勾选Spring Web 和 Eureka Discovery Client就好了代码内容如下:application.ymlserver: port: 8001eureka: client: # 默认拉取服务列表,这里不做配置了 register-with-eureka: false service-url: # 服务中心地址 defaultZone: http://localhost:7000/eurek原创 2020-07-27 18:10:08 · 117 阅读 · 0 评论 -
Eureka(4、服务注册)
这里创建一个服务提供者,为了简便,操作步骤就不做截图了,直接上代码pom.xml<?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.原创 2020-07-27 16:50:05 · 111 阅读 · 0 评论 -
Ribbon(1、简介)
1.Ribbon介绍Ribbon 是一个基于 Http 和 TCP 的客服端负载均衡工具,它是基于 Netflix Ribbon 实现的。它不像 spring cloud 服务注册中心、配置中心、API 网关那样独立部署,但是它几乎存在于每个 spring cloud 微服务中。包括 feign 提供的声明式服务调用也是基于该 Ribbon 实现的。ribbon 默认提供很多种负载均衡算法,例如 轮询、随机 等等。甚至包含自定义的负载均衡算法。2.Ribbon作用他解决并提供了微服务的访问和负载均原创 2020-07-27 16:23:14 · 501 阅读 · 0 评论 -
Eureka(3、Server多点搭建)
接上一篇文章,新建eurekaserver02项目,把application.yml改一改server: port: 8000spring: application: # 项目名称/微服务节点名称。 # 配置为eurekaserver01同名,代表是一个微服务节点 name: eurekaServereureka: instance: #注册服务器名称 hostname: eurekaServer client: #是否自动拉去注册中.原创 2020-07-26 09:53:27 · 158 阅读 · 0 评论 -
Eureka(2、Server单节点搭建)
单节点配置新建项目勾选Spring Web、Eureka Serverapplication.yml配置server: port: 7000spring: application: # 项目名称/微服务节点名称。 # 若有第二个微服务节点启动,也配置为eurekaServer,springcloud会认为它也是eurekaServer这个微服务的一个节点 name: eurekaServereureka: instance: #注册服务器名称原创 2020-07-25 12:25:43 · 168 阅读 · 0 评论 -
Eureka(1、简介)
Eureka服务注册中心Eureka 是 Netflix 开发的服务发现组件,本身是一个基于 REST 的服务。Spring Cloud 将它集成在其子项目 spring-cloud-netflix 中,以实现 Spring Cloud 的服务注册于发现,同时还提供了负载均衡、故障转移等能力。什么是服务注册中心服务注册中心是服务实现服务化管理的核心组件,类似于目录服务的作用,主要用来存储服务信息,譬如提供者 url 串、路由信息等。服务注册中心是 SOA 架构中最基础的设施之一。服务注册中心的作用原创 2020-07-25 11:14:59 · 119 阅读 · 0 评论