![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分布式
文章平均质量分 82
華小灼
愿世界没有bug
展开
-
Seata分布式事务处理整合--V1.4.1
Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。相关介绍可以参考官方文档(传送门),关于分布式事务的相关介绍可以参考我上一篇文章(传送门),接下来就使用Alibaba的Seata AT模式(自动事务模式)来处理分布式事务1. 创建 UNDO_LOG 表 SEATA AT 模式需要 UNDO_LOG 表,用来记录回滚日志,其他业务的数据库请自行建立CR原创 2021-03-19 22:08:15 · 457 阅读 · 0 评论 -
分布式环境下的事务处理
首先来看看下面一张图,服务1远程调用服务2和服务3,如果调用服务2执行成功,调用服务3执行失败,服务3的方法通过事务进行了回滚,但是服务2是没有办法进行回滚的,因为不在同一个数据库,不是同一个事务。所以我们现在需要其中任何一个服务出现了异常,其他的服务也会跟着进行回滚,这就需要考虑分布式事务问题原创 2021-03-13 21:21:01 · 307 阅读 · 0 评论 -
Feign远程调用丢失请求头问题
在分布式开发中,会用到Feign进行远程调用其他服务的接口获取数据,首先看看这个调用原理,如下图: ...原创 2021-03-07 21:41:37 · 383 阅读 · 0 评论 -
SpringSession解决分布式下session共享问题
上一篇文章聊了在分布式服务下关于session的相关问题(传送门),而要解决这些问题,Spring给我们提供了一个很强大的工具—SpringSession,通过将session存在数据库中,让每个服务在调用时去数据库获取来解决session共享的问题,Spring在官方文档提供了几个数据库的整合例如redis,mysql,MongoDB,当然我们常用的一般选择redis,毕竟速度是最快的,所以接下来就使用redis来解决session共享的问题,相关文档可以参考官方文档(传送门) 先来简单的体验Sp原创 2021-02-27 16:09:21 · 205 阅读 · 0 评论 -
分布式下Session共享问题
在单体应用进行跨页面共享数据,一般常用的方法是使用HttpSession,在没有关闭页面之前,整个session的数据都是实时共享存在的,其原理大致可以参考下图 在分布式中,每个服务都有自己的域名,所以每个服务都有自己的cookie作用域,而cookie只在它自己的作用域中存在,也就是说session不能跨作用域共享;即使在同一个服务中,如果这个服务部署在多个服务器上,在一个服务器存的session,但是在其他服务器是没有这个session的,当负载均衡转发到其他服务器当然是找不到session的原创 2021-02-26 22:20:49 · 357 阅读 · 0 评论 -
整合 Spring Cache
接下来使用Spring提供的缓存技术来实现Redis缓存的使用,在使用之前,需要了解缓存的两种模式:读模式和写模式, 读模式就是如何去读取一个数据,需要遵循现从缓存中读取,如果缓存中没有在去数据库中查询,查到数据就放到缓存中方便下一次使用; 写模式就是往缓存中存数据,但是写模式需要保持缓存和数据库数据的一致性,可以使用双写模式或失效模式 双写模式就是当我们修改了数据库中的某个数据时,将修改后的数据更新到缓存中,将旧的数据覆盖掉 失效模式同样的当修改了一个数据,我们就直接将当前数据所在的缓原创 2021-02-01 21:39:25 · 204 阅读 · 0 评论 -
分布式锁----Redisson
上一章写了使用Redis来简单的实现的分布式锁,但是实际上官方是不推荐这种方式,官方推荐我们使用一种叫the Redlock algorithm的算法来实现,能保证更好的使用效果,并且这个框架适配了很多种语言,更加的强大,虽然会难一点,而我使用Java开发,当然是使用Redisson Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。其中包括(BitSet, Set原创 2021-01-29 21:43:55 · 207 阅读 · 0 评论 -
Redis处理分布式锁
上一章说了在单体应用中加锁解决缓存击穿问题,但是在分布式中,每个服务会有很多个,如果使用本地锁,它只锁自己的服务,而不能实现在所有的服务中只查询一次数据库,所以在这种情况下,我们可以考虑使用分布式锁 基本原理 所有的服务都去一个公共的地方占锁,当一个服务拿到锁以后,他就可以执行相关的逻辑,而其他的服务就处于等待状态,这个公共的地方可以使MySQL,也可以是Redis,当然,我们的服务开发使用Redis做缓存,肯定是在Redis中加锁更加的方便,而Redis本身也提供对应的占锁的命令,详细原创 2021-01-27 22:43:58 · 171 阅读 · 0 评论 -
SpringCloud Alibaba-OSS 对象存储服务
在我们项目开发中,会有许多的文件的上传下载,图片的读取等功能,而阿里巴巴在微服务框架中提供了一整套的解决方案,所以今天聊聊在微服务中使用阿里的OSS对象存储功能进行图片的上传读取。 阿里云对象存储服务(Object Storage Service,简称OSS),是阿里云对外提供的海量、安全、低成本、高可靠的云存储服务。您可以通过提供的简单的REST接口,在任何时间、任何地点、任何互联网设备上进行上传和下载数据。基于OSS,您可以搭建出各种多媒体分享网站、网盘、个人和企业数据备份等基于大规模数据的服务原创 2020-12-21 21:37:38 · 1252 阅读 · 1 评论 -
SpringCloud Gateway 网关
简介 网关作为流量的入口,常用功能包括路由转发、权限校验、限流控制等;而SpringCloud Gateway 作为SpringCloud 官方推出的第二代网关框架,取代了Zuul网关 特征建立在Spring Framework 5,Project Reactor和Spring Boot 2.0之上能够匹配任何请求属性上的路由路由有独特的断言和过滤器集成断路器集成Spring Cloud DiscoveryClient integration易于编写断言和过滤器请求限速路.原创 2020-12-11 21:56:08 · 278 阅读 · 0 评论 -
Springcloud Alibaba Nacos 注册中心与配置中心
Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 之前写了关于SpringCloud的服务注册与发现组件Eureka组件,但是Eureka现在停更了,所以阿里爸爸给我们提供了一个更好用,功能更齐全,配置更加简便的组件—Nacos Nacos是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,简单的说,它既是服务注册发现中心,也可以进行配置管理,将SpringCloud的Eureka和Config两个合成一个,使用起来更简的简单;官方文原创 2020-12-11 15:45:01 · 533 阅读 · 1 评论 -
SpringCloud config 分布式配置
源码地址:https://gitee.com/peachtec/springcloud分布式系统系统面临的配置文件的问题 微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务,由于每个服务都需要配置必要的配置信息才能运行,所以一套集中的,动态的配置管理设施必不可少, SpringCloud提供了ConfigServer来解决这个问题,我们每一个微服务自己带有一个application.yaml,那上百个配置文件修改起来,那工作量是相当的大原创 2020-12-03 22:51:06 · 158 阅读 · 0 评论 -
Zuul路由网关
源码地址:https://gitee.com/peachtec/springcloud 之前我们在访问微服务的时候是通过RestTemplate去请求的接口获取数据,接下来我们就换个方式,通过网关去访问,通过网关,可以将访问请求进行统一的管理什么是Zuul Zuul包含了对请求的路由和过滤两个主要的功能: 其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,而过滤器功能则是负责对请求的处理过程进行干预,是实现请求校验,服务聚合等功能的基础;Zuul和Eurek原创 2020-12-02 21:51:06 · 190 阅读 · 0 评论 -
Hystrix服务熔断和服务降级
分布式面临的问题 复杂分布式体系结构中的应用程序有数十个依赖,每个依赖关系在某些时候将不可避免的失败服务雪崩 多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C有调用其他的微服务,这就是所谓的"扇出",如果扇出的链路上的某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统的奔溃,即"雪崩效应" 对于高流量的应用来说,单一的后端依赖可能会导致所有的服务器上的所有资源在几秒钟内饱和,比失败更糟糕的是,这些应用程序还可.原创 2020-12-01 22:11:33 · 233 阅读 · 0 评论 -
Feign客户端负载均衡
什么是Feign Feign是声明式的web service 客户端,它让微服务之间的调用变得更加简单了,类似于controller调用service;SpringCloud集成了Ribbon和Eureka,可以在使用Feign时提供负载均衡的http客户端Feign能干啥 Feign旨在编写java http客户端变得更加容易 前面在使用Ribbon+RestTemplate时,利用RestTemplate对http请求的封装处理,形成了一套模板化的调用方法;但是在实际开发中,由于对.原创 2020-11-28 21:44:36 · 264 阅读 · 0 评论 -
Ribbon客户端负载均衡
什么是Ribbon Spring Cloud Ribbon 是基于NetFlix Ribbon 实现的一套客户端负载均衡的工具 简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起;Ribbon的客户端组件提供一系列完整的配置,例如:连接超时、重试等等;简单地说,就是在配置文件中列出LoadBalance(简称LB:负载均衡)后面的所有的机器,Ribbon会自动帮助你基于某种规则,例如简单轮训、随机等去连接这些机器,.原创 2020-11-27 23:05:41 · 302 阅读 · 0 评论 -
Eureka服务注册与发现
什么是Eureka Eureka是NetFlix的一个子模块,也是最核心的模块之一;NetFlix在设计Eureka时遵循的是AP原则;Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移,服务注册与发现对于微服务来说非常重要,有了服务注册与发现,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件,功能类似于Dubbo的注册中Zookeeper 原理Eureka的基本架构SpringCloud封装了NetFlix公司开发的Eur.原创 2020-11-24 22:36:42 · 268 阅读 · 0 评论 -
SpringCloud初体验
上一章说了关于SpringCloud的一些理论,今天开始上代码进行演示。SpringCloud与SpringBoot的个版本之间存在兼容性问题,所以在创建项目的时候一定一定要注意版本的选择。 1.创建一个普通的maven项目,用这个项目去管理其他的功能模块2.项目创建完成配置pom.xml文件,并导入需要的jar包在父工程内导入项目需要的jar包进行统一管理,子工程只需要引用就行,不用去管理版本,所有的jar包版本都在父工程中进行统一管理<!-- 打包方式 pom--><原创 2020-11-21 23:24:30 · 180 阅读 · 0 评论 -
SpingCloud入门概述
什么是SpringCloud SpringCloud 是基于SpringBoot提供的一套微服务解决方案,包括服务注册与发现、配置中心、全链路监控、服务网关、负载均衡、熔断器等组件,除了基于Netflix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件 SpringCloud利用SpringBoot的开发便利,巧妙地简化了分布式系统基础设施开发,SpringCloud为开发人员提供了快速构建分布式系统的工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞赛、分布..原创 2020-11-19 22:21:13 · 326 阅读 · 1 评论 -
Dubbo微服务简单实战
上一篇博客更新了Dubbo环境的安装,今天就开始来写一个简单的项目进行实战 ...原创 2020-11-16 22:22:40 · 409 阅读 · 0 评论 -
Dubbo环境以及Zookeeper安装
上一篇博客讲了一些关于分布式的入门理理论(传送门)今天就来搭建分布式系统Dubbo环境搭建Dubbo官方文档推荐我们使用Zookeeper注册中心,所以首先安装Zookeeper忘记介绍Zookeeper是啥了。ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。说直白一点就是扮演Registry原创 2020-11-16 19:51:51 · 160 阅读 · 0 评论