随笔分类 - spring全家桶 / Spring Cloud
摘要:一、系统可用性常见策略及实现 (一)服务不可用问题和基本对策 服务访问失败原因有很多,例如分布式环境的固有原因、服务自身失败、服务依赖失败等。 其中分布式环境的固有原因是指在分布式环境中存在的的网络连接等问题,服务自身失败是自己代码编写的问题,这里着重解决服务依赖失败的问题。 如下图所示
阅读全文
摘要:## 一、分布式事务的实现策略和模式 ### (一)分布式事务理论模型 1、分布式事务理论模型 (1)强XA和弱XA 强XA就是要求任何一次读都能读到某个数据的最近一次写的数据。系统中的所有进程,看到的操作顺序,都和全局时钟下的顺序一致。简言之,在任意时刻,所有节点中的数据是一样的。
阅读全文
摘要:## 一、使用Nacos实现集中式配置管理 ### (一)配置中心模型 在微服务架构中,存在着多环境、多服务、多实例(集群化)的情况,那么就需要将一些配置信息集中的放在一个地方做统一管理,这就是配置中心的原型。 对于配置中心来说,要保证其隔离性、一致性、安全性和易管理性,隔离性是指如果有多个
阅读全文
摘要:## 一、微服务架构体系 ### (一)微服务架构基本概念 1、微服务三大要素 微服务不是一个纯技术概念,微服务架构三大要素:业务建模、技术体系、研发过程 (1)业务建模:业务架构 + 功能边界 对于一个复杂的业务而言,要想把它构建成微服务系统,就需要将系统进行拆分,拆分的前提就是要
阅读全文
摘要:一、使用Mybatis-Plus对数据访问进行扩展 1、MyBatis-Plus开发模式 (1)为什么用Mybatis-Plus Mybatis的问题: 通过原生SQL语句操作业务数据,自动化程度不高;通过繁杂的XML配置来映射字段和属性,影响开发效率;对字段名称的识别和校验不友好,易出错且
阅读全文
摘要:一、Sentinel Dashboard 安装运行 1、下载地址:https://github.com/alibaba/Sentinel/releases/download/1.8.2/sentinel-dashboard-1.8.2.jar 启动 java -Dserver.port=8888 -
阅读全文
摘要:一、网关简介 提到网关就不得不提Zuul,其实Spring Cloud Gateway 是 Zuul 网关的替代者。只所以弃用 Zuul 并不是因为 Zuul 在功能有什么大的问题。而是因为最开始的 Zuul 是开源的,所以 Spring Cloud 就集成了 Zuul 做网关。但后来 Zuul 又
阅读全文
摘要:一、Ribbon与OpenFeign关系 说到 OpenFeign就不得不提 Ribbon,OpenFeign默认将Ribbon作为负载均衡器,直接内置了 Ribbon。在导入OpenFeign 依赖后无需专门导入Ribbon 依赖。 Ribbon 是 Netflix 公司的一个开源的负载均衡项目,
阅读全文
摘要:一、Nacos Config与Spring Cloud Config原理对比 说到Nacos Config配置中心的原理,就不得不提一下Spring Cloud Config配置中心的原理,二者是如此的相似,但却也有着很多不同的特点。 1、Spring Cloud Config原理 (1)提交配置触
阅读全文
摘要:一、创建原始直连项目 这个没什么可说的,直接创建两个项目(服务提供者和服务消费者),用来模拟原始的使用http的调用。 对于项目内部的实现不再赘述,都是简单的增删改查,这里主要演示一下服务提供者提供的服务以及服务消费者对服务的调用。 1、服务提供者提供的服务 @RequestMapping("/pr
阅读全文
摘要:一、准备阶段 先搭建两个项目,provider-01-8081和consumer-01-8080,其中provider-01-8081用于提供服务,并操作数据库,consumer-01-8080用于消费服务,使用 http + ip + 端口的方式进行调用,代码比较简单,并且和Spring Clou
阅读全文
摘要:出现的问题 在模拟Hystrix仪表盘时,仪表盘一直处于loading状态,没有监控数据 探明原因及解决步骤 我的SpringCloud版本是Hoxton.SR6 1、确保hystrix.stream可以正常访问 首先判断是否可以正常访问http://localhost:9000/actuator/
阅读全文
摘要:一、自动化配置 在Robbin定义的每一个接口都有多个实现类,但是在引入Spring Cloud Ribbon后,会默认加载相应的实现类,那么默认的实现类及实现效果如下表格所示: 特殊说明:以下默认实现类时只有Ribbon的时候的默认实现类 自动化配置接口 描述 默认实现 说明 IClientCon
阅读全文
摘要:在SpringCloud--Ribbon--源码解析--IloadBalancer&ServerListUpdater&ServerListFilter实现说到ILoadBalance的实现时提到,获取到可用的服务列表之后,需要使用IRule从实例清单中挑选一个实例进行访问,IRule接口源码及实现
阅读全文
摘要:从SpringCloud--Ribbon--源码解析--Ribbon入口实现可以看到Ribbon的总体流程,从总体流程可见,获取server是个关键点 protected Server getServer(ILoadBalancer loadBalancer, Object hint) { if (
阅读全文
摘要:Ribbon总体的源码结构,如下图所示: 上图是Ribbon源码的总览图,每一个颜色,代表源码中的一部分内容,总体来看,Ribbon源码的实现,总共分为五个部分,从上而下依次为,Ribbon入口实现、IloadBalancer实现、ServerListUpdater实现、ServerListFilt
阅读全文
摘要:SpringCloud Ribbon是一个基于Http和Tcp的客户端负载工具。 负载均衡可以是服务端负载也可以是客户端负载,服务端负载又可以是物理负载或是软件负载,服务端物理负载:F5,服务端软件负载:Nginx,他们都是在各自下面维护一个可用的服务端清单,通过心跳检测来剔除故障的服务节点以保证清
阅读全文
摘要:对于Eureka客户端的配置,主要分为两个部分: 服务注册相关配置:包括注册中心地址、服务获取间隔、可用区域等内容 服务实例相关配置:实例名称、IP地址、端口号、健康检查路径等 而对于Eureka服务端的配置,基本上不用怎么处理,类似于一个线程的产品(这些参数均以eureka.server开头)。
阅读全文
摘要:一、Eureka的基础架构及服务治理机制 Eureka服务治理的基础架构包含三个核心:服务注册中心、服务提供者、服务消费者。其中服务注册中心,即Eureka提供的服务端,提供服务注册和发现的功能;服务提供者,即将自己的服务注册到注册中心;服务的消费者,从注册中心获取服务列表,从而使消费者知道到何处调
阅读全文
摘要:Spring Cloud Eureka是Spring Cloud Netflix微服务套件中的一部分,它基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的服务治理功能。 Eureka分为服务端和客户端。 其中Eureka服务端,我们也称为服务注册中心。如果Eureka以集群部署
阅读全文