
微服务
文章平均质量分 51
微服务
半路出家的码农小王
偶尔高产,偶尔懒,全凭灵感
展开
-
基于SpringCloud实现灰度发布
目录1.什么是灰度发布?2.灰度发布有什么作用?3.灰度发布的实现方式:网关到服务,服务到服务3.1网关到服务代码实现3.1.1整体流程3.1.2前置环境(需要自行搭建四个至少服务)3.1.3核心代码3.2网关到服务代码实现3.2.1整体流程3.2.2前置环境(需要自行搭建5个至少服务)3.2.3核心代码1.什么是灰度发布?灰度发布又称金丝雀发布,是在系统升级的时候能够平滑过渡的一种发布方式。在其上可以进行A/B测试,即让一部分用户继续用产品特性A,一部分原创 2022-05-22 20:23:21 · 2682 阅读 · 1 评论 -
分布式事务解决方案二:TX-LCN实现分布式锁 Java代码实现
TX-LCN是一款事务协调性框架,框架本身并不生产事务,它只是本地事务的协调工。详细介绍见官网:codingapi.com/docs/txlcn-setting-distributed/LCN(lock confirm notify)模式:适用于自带事务中间件,如:mysql原理:LCN模式是通过代理Connection的方式实现对本地事务的操作,然后在由TxManager统一协调控制事务。当本地事务提交回滚或者关闭连接时将会执行假操作,该代理的连接将由LCN连接池管理。特点...原创 2022-04-16 16:55:33 · 320 阅读 · 0 评论 -
分布式事务解决方案一:消息队列+时间表 Java代码实现
需求: 实现service-order和service-pay的分布式事务1.service-order1.1pom.xml <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</op..原创 2022-04-04 10:46:11 · 1500 阅读 · 1 评论 -
SpringCloud 网关限流方式二:通过Guava实现限流
Google的Guava工具包中就提供了一个限流工具类——RateLimiter,本文也是通过使用该工具类来实现限流功能。RateLimiter是基于“令牌通算法”来实现限流的。令牌桶: 1.令牌生成器以固定速率向令牌桶放令牌,如果桶满了就丢弃 2.调用者去令牌桶拿令牌,拿不到就拒接访问。限流的本质有两点:1.生成令牌 2.抢令牌step1: pom.xml<dependency> <groupId>com.google.guava</groupId.原创 2022-04-03 08:00:00 · 677 阅读 · 1 评论 -
SpringCloud网关限流方式一:Sentinel限流
前言:限流的关键有两点:1.生成令牌 2.抢令牌step1:pom.xml配置<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-core</artifactId> <version>1.8.3</version></dependency> <de...原创 2022-03-30 23:22:35 · 1223 阅读 · 1 评论 -
Caused by: com.alibaba.csp.sentinel.slots.block.flow.FlowException: null
在使用sentinel做限流的时候,报了这个错:原代码如下:@Servicepublic class SentinelService { @SentinelResource(value = "SentinelService.success", blockHandler = "fail") public String success() { System.out.println("success 请求正常"); return "success";原创 2022-03-30 22:18:48 · 2573 阅读 · 0 评论 -
Zuul filter实现动态路由
需求:老项目改造,前端访问url不变的情况下,访问后台新的服务。这就需要将两边的url进行映射。重点介绍方式二。方式一:之前用过自定义路由,在yml文件配置route的方式去做转发,但是必须精确匹配,这就需要大量的重复配置。(略) routes:# 转发给zuul自己 provider1: path: /my1/** url: forward:/myController# 路由到服务 后面两个*号,表示 所有路径都转发,一个* 表示 只转发一级。 ..原创 2022-03-28 19:30:33 · 1905 阅读 · 2 评论 -
idea启动Eureka时候项目时报错:Caused by: java.lang.ClassNotFoundException: javax.servlet.Filter
问题:idea启动Eureka时候项目时报错:Caused by: java.lang.ClassNotFoundException: javax.servlet.Filter解决:修改pom.xml文件,去除<scope>provided</scope>,增加<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-.原创 2021-11-07 20:00:24 · 651 阅读 · 0 评论 -
Eureka集群搭建(三台)
项目背景:springboot2.6.2 springcloud 2021.0.0java代码:CloudEurekaApplicationapplication.ymlspring: application: name: eurekaeureka: client: #是否将自己注册到Eureka Server,默认为true,由于当前就是server,故而设置成false,表明该服务不会向eureka注册自己的信息 register-with..原创 2022-01-10 23:17:36 · 915 阅读 · 2 评论 -
springCloud 2020.x 版本变化,移除eureka以外的Netflix组件
最近在spring Cloud中发现没有集成ribbon、hystrix目前使用的版本:lib包中,没有ribbon、hystrix查询了原因发现是spring Cloud版本的问题:从 Spring Cloud 2020.0.0-M1 开始,Spring Cloud 废除了这种英国伦敦地铁站的命名方式,而使用了全新的 "日历化" 版本命名方式。具体他命名规则:https://blog.youkuaiyun.com/f746262041/article/details/12...原创 2021-11-14 20:27:03 · 1021 阅读 · 1 评论 -
Spring Cloud版本命名规则
SpringCloud官网:https://spring.io/projects/spring-cloud/#learn前言在使用SpringCloud及SpringBoot搭建项目框架之前,都需要去了解二者之间版本的兼容对应关系,关于SpringBoot和SpringCloud官方版本号的命名规则很是好奇,想要一探究竟,那么显而易见,SpringBoot的版本号是通过数字来命名的,SpringCloud则是通过希腊英文字母的方式,在发布的版本时是以伦敦地铁站作为版本命名,并按地铁站名称的首字母A.转载 2021-11-14 20:01:17 · 1411 阅读 · 0 评论