springcloud
文章平均质量分 90
xiaozhu0301
这个作者很懒,什么都没留下…
展开
-
分布式事务中Tcc模式常见问题解决
TCC的异常场景在分布式系统中,随时随地都需要面对网络超时,网络重发和服务器宕机等问题。所以分布式事务框架作为搭载在分布式系统之上的一个框架型应用也绕不开这些问题。具体而言,有以下常见问题:幂等处理 空回滚 资源悬挂这些异常的应对需要TCC框架的支持和解决方案。幂等处理产生原因因为网络抖动等原因,分布式事务框架可能会重复调用同一个分布式事务中的一个分支事务的二阶段接口。所以分支事务的二阶段接口Confirm/Cancel需要能够保证幂等性。如果二阶段接口不能保证幂等性,则会产生严重转载 2020-12-17 19:56:27 · 4787 阅读 · 1 评论 -
微服务设计原则之AKF原则
在设计微服务的时候,我们一般会遵循以下4个原则:1)AKF拆分原则2)前后端分离原则3)无状态服务4)restful的通信风格AKF把系统扩展分为以下三个维度:X轴:直接水平复制应用进程来扩展系统,将系统复制多份,即加机器得方式,大大提高系统的总体容量、解决单点问题等(A+A+A+A) Y轴:将功能拆分出来扩展系统。(B+C=A) Z轴:基于用户信息扩展系统。 将数据做分片假定我们开发一个博客平台,用户可以申请自己的博客帐号,并在其上发布文章。最初的系统考虑了MV...原创 2020-12-17 15:42:43 · 5110 阅读 · 1 评论 -
springcloud 分布式事务之TX-TCC
接上一篇文章 springcloud 分布式事务 之 TX-LCN TM 端不变模式特点:该模式对代码的嵌入性高,要求每个业务需要写三种步骤的操作。 该模式对有无本地事务控制都可以支持使用面广。 数据一致性控制几乎完全由开发者控制,对业务开发难度要求高。TC 端(order)业务代码业务类注解:@TccTransactionimport com.codingapi.txlcn.tc.annotation.LcnTransaction;import com.cod..原创 2020-12-07 19:06:35 · 455 阅读 · 0 评论 -
springcloud 分布式事务 之 TX-LCN
分为两个部分 协调器TM,多个TC,TM用来协调多个TCTX-LCN 主要有两个模块,Tx-Client(TC) Tx-Manager(TM). TC作为微服务下的依赖,TM是独立的服务TM端:引入相关依赖<!--tm--> <!-- tm manager --> <dependency> <groupId>com.codingapi.txlcn</groupId>原创 2020-12-07 16:36:51 · 424 阅读 · 0 评论 -
springcloud 限流 之 微服务之间的调用
1.引入Sentinel jar包:<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-annotation-aspectj</artifactId> <version>1.4.1</version></dependency>流量控制(Flow Control),原理是监控应用流量的Q原创 2020-12-04 19:14:40 · 330 阅读 · 0 评论 -
springcloud 限流 之 zuul 网关 和 微服务
1. 应用Google的RateLimiterimport com.google.common.util.concurrent.RateLimiter;import com.netflix.zuul.ZuulFilter;import com.netflix.zuul.context.RequestContext;import com.netflix.zuul.exception.ZuulException;import org.springframework.cloud.netflix.原创 2020-12-04 17:42:04 · 160 阅读 · 0 评论 -
springboot项目中应用消息队列ActiveMQ
1.pom文件引入依赖 <!--activemq--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency> <!--ac原创 2020-12-04 10:44:49 · 287 阅读 · 0 评论 -
在 Zuul 中使用过滤器
一.今天说下Zuul 如何实现一个自定义的过滤器。实现过滤器很简单,只需要继承 ZuulFilter 类,并实现 ZuulFilter 中的抽象方法。项目用eureka-zuul-client,参考文章需要实现的抽象方法有:filterType(拦截器的类型):pre,routing,post,error filterOrder(执行顺序):规定了过滤器的执行顺序,Order的值越小,越先执行。 shouldFilter:表示该过滤器是否过滤逻辑,为true则执行run(),为false,转载 2020-12-01 11:08:04 · 919 阅读 · 0 评论 -
传统项目改造成springcloud项目中遇到的问题
1.token不向后传首先token 不向后传,springcloud项目加入了网关层 。因为网关可以鉴权的,所以没有必要向后传递(遵循迪米特法则”(“最少知道”原则))zuul: sensitive-headers: #为空表示:所有请求头都透传到后面微服务Set<String> sensitiveHeaders = new LinkedHashSet(Arrays.asList("Cookie", "Set-Cookie", "Authorization")).原创 2020-11-30 15:23:43 · 380 阅读 · 0 评论 -
springcloud 项目 404错误 解决办法
1.对应的微服务没有启动2.微服务没有注册到注册中心3.网关中自定义的服务名称 ,比如zuul.routes.XXX 即xxx的名称,项目中未找到(一般是旧系统迁移为新系统,为了适应前端请求做的配置)String remoteAddr = request.getRequestURI();remoteAddr 中会包含XXX...原创 2020-11-30 15:00:34 · 5551 阅读 · 0 评论 -
zuul 中route类型的过滤器
这些配置都是在zuul 微服务中去配置RibbonRoutingFilter order 10将url路由到服务zuul: routes: quality: /请求路径/**其中 quality 为服务的名称=========SimpleHostRoutingFilter order 100将url路由到url地址yml 配置:zuul: routes: #自己转发到自己 名字任意起 xxx: path: /前端请求的地址/** url:...原创 2020-11-30 14:45:01 · 512 阅读 · 1 评论 -
springcloud 灰度发布
线上部署项目的时候,各个微服务不只部署一份,有时候,为了测试,可以进行灰度发布,先测试新的服务是否可用1.微服务之间调用微服务A 调用微服务B,灰度规则定义在数据库中或者元数据中微服务A 中 定义灰度规则import com.netflix.client.config.IClientConfig;import com.netflix.loadbalancer.AbstractLoadBalancerRule;import com.netflix.loadbalancer.ILoadB.原创 2020-11-25 15:07:46 · 482 阅读 · 2 评论 -
Request execution error. endpoint=DefaultEndpoint{ serviceUrl=‘http://localhost:8761/eureka/} 解决办法
SpringCloud中注册Eureka报错报错主要信息:Request execution error. endpoint=DefaultEndpoint{ serviceUrl='http://localhost:8761/eureka/}com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connectCaused by: java.net.Co转载 2020-11-10 18:33:39 · 7122 阅读 · 3 评论 -
eureka 参数调优
文章目录Client 端基本参数定是参数Http 参数Server 端基本参数Response Cache 参数Peer 相关参数Http 参数参数调优常见问题解决之道 主要说明一下比较重要、常用的 Server 和 Client 的参数。Client 端 大致分为:基本参数、定时任务参数、Http参数。基本参数定是参数Http 参数 Eureka Client 底层使用 HttpClient 与 Eurek.转载 2020-11-10 17:30:56 · 482 阅读 · 0 评论 -
Spring Eureka自我保护机制
背景:项目进入编码阶段,首先要实现一个注册中心给其他服务用,过程中开启了两个注册中心实例:peer1和peer2,它们互相注册为对方的服务。疑惑:查看Dashboard的时候,除了查看实例的那一部分比较明白,偶尔会出现这样的红色警告:EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INST转载 2020-11-09 16:21:11 · 677 阅读 · 2 评论 -
eureka 集群部署 出现问题unavailable-replicas
Eureka Server除了单点运行之外,还可以通过运行多个实例,并进行互相注册的方式来实现高可用的部署。所以我们只需要将Eureke Server配置其他可用的 serviceUrl 就能实现高可用部署。实现Eureka Server的高可用部署。部署图如下图所示:将 application.yml 文件复制三分:application-9001.yml,application-9002.yml,application-9003.yml,分别添加配置项如下:application-9001.原创 2020-11-04 19:09:49 · 1036 阅读 · 0 评论 -
Spring Cloud GateWay 路由转发规则介绍
Spring在因Netflix开源流产事件后,在不断的更换Netflix相关的组件,比如:Eureka、Zuul、Feign、Ribbon等,Zuul的替代产品就是SpringCloud Gateway,这是Spring团队研发的网关组件,可以实现限流、安全认证、支持长连接等新特性。Spring Cloud GatewaySpring Cloud Gateway是SpringCloud的全新子项目,该项目基于Spring5.x、SpringBoot2.x技术版本进行编写,意在提供简单方便、可扩展的统转载 2020-05-11 14:38:28 · 1267 阅读 · 1 评论 -
springcloud 之配置中心(Config)使用详解
前言本篇主要介绍的是SpringCloud中的分布式配置中心(SpringCloud Config)的相关使用教程。SpringCloud ConfigConfig 介绍Spring Cloud Config项目是一个解决分布式系统的配置管理方案。它包含了Client和Server两个部分,server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client通过接口...转载 2020-04-24 18:13:22 · 1319 阅读 · 0 评论 -
SpringCloud之@SpringBootApplication
SpringCloud基于SpringBoot,所以在启动时也需要以下代码进行启动。 SpringApplication.run(xxxApplication.class,arg);点进去注解内可以看到有七个注解 他们分别有各自的作用:分为四个元注解和三个配置引导注解。四大元注解 Target(ElementType.TYPE) 它的作用就是:...转载 2020-04-24 17:36:45 · 355 阅读 · 0 评论 -
springCloud 服务注册与发现
springcloud服务注册与发现 使用Eureka实现服务治理 作用:实现服务治理(服务注册与发现) 简介: Spring Cloud Eureka是Spring Cloud Netflix项目下的服务治理模块。而Spring Cloud Netflix项目是Spring Cloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为...原创 2020-04-20 12:10:36 · 138 阅读 · 0 评论 -
SpringCloud入门之常用的配置文件 application.yml和 bootstrap.yml区别
application.yml和bootStrap.yml在同一目录下,则bootStrap.yml的加载顺序要高于application.yml,即bootStrap.yml 会优先被加载。 原理:bootstrap.yml 用于应用程序上下文的引导阶段。bootstrap.yml 由父Spring ApplicationContext加载。...原创 2020-04-20 16:26:36 · 1538 阅读 · 0 评论 -
理解微服务注册到Eureka Server上的过程(以appname为例)
阅读本文你将了解微服务注册到Eureka Server上的粗粒度过程 为什么appname是大写。 appName的配置:spring.application.name与eureka.instance.appname,及它们的优先级。Prepare首先解释一下什么是appname图中的CONFIG-SERVER,GATEWAY,IOT 就是appname。下面我们来分析一下它...原创 2020-04-20 11:46:49 · 371 阅读 · 0 评论 -
spring cloud 配置中心
1、pom文件添加依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId></dependency>2、配置文件applicati...转载 2020-04-24 16:35:50 · 656 阅读 · 0 评论