202109-18 springcloud之Feign超时问题的解决 问题背景最近公司项目有个功能需进行三层Feign调用,且还要调外部接口,延迟挺大,造成Feign一直提示ReadtimedoutexecutingPOST。feign.RetryableException:ReadtimedoutexecutingPOSThttp://******atfeign.FeignException.errorExecuting(FeignException.java:67)atfeign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:104)atfeign.SynchronousMethodHandler.i... 继续阅读 >
202109-17 解决SpringCloud Feign传对象参数调用失败的问题 SpringCloudFeign传对象参数调用失败不支持GET请求方式使用ApacheHttpClient替换Feign原生httpclient@RequestBody接收json参数bootstrap-local.ymlfeign:httpclient:enabled:truepom.xml<!--使用ApacheHttpClient替换Feign原生httpclient--><dependency><groupId>com.netflix.feign</groupId><artifactId>feign-httpclient</artifactId><version>8.18.0</version></dependency><dependency>... 继续阅读 >
202109-17 如何解决springcloud feign 首次调用100%失败的问题 叙述在高并发情况下发布应用时,经常会发现监控中有很多超时报错或者断路器打开,下图中可以看到监控情况,测试时也会偶现第一次feign调用出错,第二次就会恢复正常。分析大家都知道,这里feign底层是集成的ribbon,这里ribbon也会有http连接池,这里的连接池是长连接,定时初始化一批并销毁旧连接,这里还包括一些上下文需要初始化,但是在容器初始化好时,ribbon底层的client是未初始化的,当第一次调用时,有一个初始化过程会导... 继续阅读 >
202109-14 SpringCloud Alibaba项目实战之nacos-server服务搭建过程 目录1、Nacos简介1.1、什么是Nacos1.2、Nacos基本原理2、Nacos-Server服务部署2.1、standalone模式2.2、cluster模式源码地址:https://gitee.com/fighter3/eshop-project.git持续更新中……大家好,我是三分恶。这一节我们来学习SpringCloudAlibaba体系中一个非常重要的组件——Nacos。1、Nacos简介Nacos官方网站:https://nacos.io/zh-cn/1.1、什么是NacosNacos是阿里巴巴开源的一个动态服务发现、配置管理和服务管理平台。Nac... 继续阅读 >
202109-10 SpringCloud Alibaba使用Seata处理分布式事务的技巧 Seata简介在传统的单体项目中,我们使用@Transactional注解就能实现基本的ACID事务了。但是前提是:1)数据库支持事务(如:MySQL的innoDB引擎)2)所有业务都在同一个数据库中执行随着微服务架构的引入,需要对数据库进行分库分表,每个服务拥有自己的数据库,这样传统的事务就不起作用了,那么我们如何保证多个服务中数据的一致性呢?这样就出现了分布式事务,而Seata就是为微服务架构而生的一种高性能、易于使用的分布式事务... 继续阅读 >
202108-31 SpringCloud Alibaba 基本开发框架搭建过程 目录1、创建多Module工程1.1、创建父工程1.2、创建子module选中父项目,右键,新建module2、使用Gti进行版本控制2.1、初始化本地仓库打开项目路径,右键gitbash2.2、初始化远程仓库在上一节,我们已经完成了项目的整体技术架构设计和具体的数据库设计,接下来,我们搭建整体的开发框架。开发工具选用Idea。开发工具只是为了提高效率,如果不习惯Idea的话,STS使用起来也是OK的。1、创建多Module工程1.1、创建父工程创建一个父项... 继续阅读 >
202108-22 SpringCloud如何使用Eureka实现服务之间的传递数据 相信大家最关心的肯定不是什么一大堆的破理论,然后还似懂非懂的,最关心得莫过于服务之间的参数传递,数据获取。Ok,今天就告诉大家三种微服务之间传输数据的方式,分别是:1、最基本的利用Ip端口进行请求访问接口实现数据的传输2、使用Eureka取代Ip(硬编码)的方式实现数据的传输3、使用Feign更加快捷"分服务"的方式实现微服务之间的数据传输(对Feign一点不了解的暂时不用理解,就是SpringCloud的组成的一部分后期会进行详细讲... 继续阅读 >
202107-08 基于SpringCloud手写一个简易版Sentinel 目录Sentinel是什么?定义注解定义切面处理器测试降级Sentinel是什么?随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。不可否认的是,Sentinel功能丰富,并且在提供好用的dashboard提供配置,但是Sentinel在集成到项目中时需要引入多个依赖,并且需要阅读相关文档,以及dashboard中的相关配置才可以接入到项目中,这个过程... 继续阅读 >
202107-08 SpringCloud微服务之Config知识总结 目录一、什么是SpringCloudConfig?二、搭建GIT环境三、服务端示例四、客户端示例五、安全认证示例六、集群搭建示例一、什么是SpringCloudConfig?SpringCloudConfig可以为微服务架构中的应用提供集中化的外部配置支持,它分为服务端和客户端两个部分。SpringCloudConfig服务端被称为分布式配置中心,它是个独立的应用,可以从配置仓库获取配置信息并提供给客户端使用。SpringCloudConfig客户端可以通过... 继续阅读 >
202107-08 SpringCloud微服务基础简介 目录一、什么是SpringCloud?二、SpringCloud的架构模式三、SpringBoot与SpringCloud的关系四、SpringCloud与Dubbo的对比五、SpringCloud有哪些作用?六、SpringCloud的版本号七、SpringCloud包含的子项目一、什么是SpringCloud?SpringCloud对常见的分布式系统模式提供了简单易用的编程模型,帮助开发者构建弹性、可靠、协调的应用程序。SpringCloud是在SpringBoot的基础上构建的,使开发者可以轻松入门并快速... 继续阅读 >
202107-04 详解SpringCloud微服务之Rest 目录一、什么是RestTemplate?二、四种请求方式2.1GET请求2.2POST请求2.3PUT请求2.4DELETE请求一、什么是RestTemplate?RestTemplate是一个HTTP客户端,在SpringCloud的服务调用方使用它我们可以方便的调用HTTP接口,支持GET、POST、PUT、DELETE等方法。二、四种请求方式首先注入Bean对象@ConfigurationpublicclassMyConfig{@BeanpublicRestTemplaterestTemplate(){returnnewRestTemplate();}}2.1GET请... 继续阅读 >
202107-04 SpringCloud如何搭建一个多模块项目 在springcloud系列章节中,本来已经写了几个章节了,但是自己看起来有些东西写得比较杂,所以重构了一下springcloud的章节内容,新写了本章节,先教大家在工作中如何搭建一个多模块的springcloud项目。本章及后面章节,我们使用的开发环境是springtoolsuite(sts)+maven(当然你也可以使用IDEA+Gradle,目前使用的公司也很多)。一、新建一个父mavenproject模块File->new->other->maven->mavenproject记得勾选红框,我... 继续阅读 >
202107-01 基于Feign实现异步调用 目录一、背景二、使用feign理由三、解决方案四、demo代码实现4.1接口编写4.2接口发布4.3调用4.4结果(很明显,是异步调用) 五、问题一、背景希望将http的调用由同步等待改为异步,仍使用feign的便捷。二、使用feign理由本质上其实feign就是将httpclient常用的操作进行简单封装,且屏蔽底层的httpclient,无感知具体的client实现,轻松完成具体client的替换三、解决方案feign在10.8版本后提供了Async接口,如下:四、demo... 继续阅读 >
202106-23 SpringCloud实现Eureka服务注册与发现 目录一、Eureka概述1、Eureka特点2、Eureka两大组件3、Eureka三大角色二、EurekaServer服务注册中心1、pom.xml2、application.yml3、启动类三、ServiceProvider服务提供方1、pom.xml2、application.yml3、启动类4、启动后查看服务注册中心5、换端口号再启动一个6、在看服务中心四、ServiceConsumer服务消费方1、pom.xml2、application.yml3、启动类4、查看注册中心 GitHub地址:https://github.com/yudiandemingzi/spring... 继续阅读 >
202106-23 SpringCloud Gateway加载断言predicates与过滤器filters的源码分析 我们今天的主角是Gateway网关,一听名字就知道它基本的任务就是去分发路由。根据不同的指定名称去请求各个服务,下面是Gateway官方的解释:https://spring.io/projects/spring-cloud-gateway,其他的博主就不多说了,大家多去官网看看,只有官方的才是最正确的,回归主题,我们的过滤器与断言如何加载进来的,并且是如何进行对请求进行过滤的。大家如果对SpringBoot自动加载的熟悉的话,一定知道要看一个代码的源码,要找... 继续阅读 >
202106-19 浅谈SpringCloud之Ribbon详解 一、什么是负载均衡负载均衡:建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。现在网站的架构已经从C/S模式转变为B/S模式,C/S模式是有一个专门的客户端,而B/S模式是将浏览器作为客户端。当用户在浏览器上输入一个网址按下回车键后,就会产生一个请求,在远方的服务器会处理这个请求,根据这个请求来生成用户想要的页面,然后... 继续阅读 >