Spring Cloud

Spring Cloud Gateway 服务网关快速上手

情到浓时终转凉″ 提交于 2020-04-26 09:15:21
Spring Cloud Gateway 服务网关 API 主流网关有NGINX、ZUUL、Spring Cloud Gateway、Linkerd等;Spring Cloud Gateway构建于 Spring 5+,基于 Spring Boot 2.x 响应式的、非阻塞式的 API。同时,它支持 websockets,和 Spring 框架紧密集成,用来代替服务网关Zuul,开发体验相对来说十分不错。 Spring Cloud Gateway 是 Spring Cloud 微服务平台的一个子项目,属于 Spring 开源社区,依赖名叫:spring-cloud-starter-gateway。 Zuul 是 Netflix 公司的开源项目,Spring Cloud 在 Netflix 项目中也已经集成了 Zuul,依赖名叫:spring-cloud-starter-netflix-zuul。 API 网关 API 网关出现的原因是微服务架构的出现,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题: 客户端会多次请求不同的微服务,增加了客户端的复杂性。 存在跨域请求,在一定场景下处理相对复杂。 认证复杂,每个服务都需要独立认证。 难以重构,随着项目的迭代,可能需要重新划分微服务。例如

spring cloud 微服务应用间通讯

旧街凉风 提交于 2020-04-26 06:23:12
SpringCloud 应用间通信基于HTTP的Restful调用方式有两种,RestTemplate与Feign。 1.RestTemplate应用间通讯 通过 @LoadBalanced,可在restTemplate 直接使用应用名字。 @Component public class RestTemplateConfig { @Bean @LoadBalanced public RestTemplate restTemplate(){ return new RestTemplate(); } } @Autowired private RestTemplate restTemplate; @Override public String hello() { // 使用RestTemplate通讯调用auth-server服务 String url="http://auth-server/hello" ; // 返回值类型和我们的业务返回值一致 return restTemplate.getForObject(url, String. class ); } 2.Feign应用间通讯 引入依赖 注意要加版本号,否则引入依赖可能失败 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring

带着新人学springboot的应用13(springboot+热部署)

心不动则不痛 提交于 2020-04-25 19:20:14
  spring cloud我想做成一个系列,所以spring cloud+eureka后面会慢慢说到的,有兴趣的小伙伴可以关注后续!   这一节就简单说说springboot的热部署了(我一直想不通为什么叫做热部署,看到这名字就吓退了我继续学习的欲望!),但是实际上可以把这个看成是一个小技巧。   就是导入一个依赖,要用的时候,就是快捷键操作:Ctrl+F9   有什么用呢?就是避免你每次对springboot修改一点东西,就要重新启动springboot应用,贼麻烦!而且对于电脑性能不怎么样的小伙伴来说(咳咳,其实我也属于这些小伙伴中的一员..(●´∀`●)),重启个应用就要等几十秒甚至接近一分钟,真是日了狗哦! 1.导入依赖   依赖如下;其中optional表示这是一个可选依赖,只对本项目有效,而假如有个父项目引用本项目,那么这个依赖就相当于木有!(所以,我们测试的话,这个optional写不写无所谓)    注意:导入这个依赖之后一定要记得重启应用,之后就再也不需要重启了 2.原来的应用   随便来个springboot应用,写个controller,浏览器输出1234   字节码文件以及浏览器输出如下:   这是你要在源码文件里修改一点东西,必须要重启应用,不是很方便。 3.使用热部署之后   随便修改一点什么东西,按Ctrl+F9就ok了;(注意

seata demo之springcloud-eureka-feign-mybatis-seata

南笙酒味 提交于 2020-04-25 17:01:57
说明 这篇文章主要将seata 提供的demo中 seata-samples\springcloud-eureka-feign-mybatis-seata项目运行起来 seata 一个高性能的分布式事务解决方案,易于和微服务架构整合 github https://github.com/seata/seata 中文wiki https://github.com/seata/seata/wiki/Home_Chinese seata-server运行 下载 https://github.com/seata/seata/releases/download/v0.9.0/seata-server-0.9.0.zip https://github.com/seata/seata/releases/download/v0.9.0/seata-server-0.9.0.tar.gz seata-server搭建可以参考别人的这篇博客 https://www.cnblogs.com/wintersoft/p/10548177.html seata-server建表SQL seata-server-0.9.0\seata\conf\db_store.sql seata-server-0.9.0\seata\conf\db_undo_log.sql 修改数据库名 账号密码 seata-server-0

Spring Cloud-hystrix Feign(九)

依然范特西╮ 提交于 2020-04-25 16:28:36
前面使用ribbon拦截RestTemplate 实现服务的负载均衡 使用Hystrix进行熔断降级请求缓存 用原生的方式 将会有大量的模板代码,feigin就是rabbon和Histrix的整合 同 使用feign只需要通过接口对服务方的绑定 实现多处调用 使用例子 1.引入Pom依赖 < dependency > < groupId > org.springframework.cloud </ groupId > < artifactId > spring-cloud-starter-openfeign </ artifactId > </ dependency > < dependency > < groupId > org.springframework.cloud </ groupId > < artifactId > spring-cloud-starter-netflix-eureka-server </ artifactId > </ dependency > <!-- 开启端点 用于dashboard监控 --> < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-actuator </ artifactId > </

Nacos(三):Nacos与OpenFeign的对接使用

无人久伴 提交于 2020-04-25 13:32:32
前言 上篇文章中,简单介绍了 如何在SpringCloud项目中接入Nacos作为注册中心 ,其中服务消费者是通过RestTemplate+Ribbon的方式来进行服务调用的。 实际上在日常项目中服务间调用大都用的是 OpenFeign , OpenFeign自身整合了Ribbon和Hystrix,为服务调用提供了更优雅的方式 那么接入了Nacos之后,服务调用还能用这一套吗? 通过我在公司项目上的试水,这个大胆的设想是完全没问题的 本文在上一篇文章中的项目工程基础上 ,进行测试和演示,文章地址: 在SpringCloud项目中接入Nacos作为注册中心 <!-- more --> 创建项目 打开之前创建的工程Nacos,目前已经有两个子工程: nacos-provide:服务提供者 nacos-consumer:服务消费者(RestTemplate+Ribbon服务调用) 同样的操作,在Nacos项目下继续创建一个Springboot项目名为nacos-feign,创建时添加OpenFeign的依赖,如图: nacos-fegin的pom.xml文件如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www

SpringCloud Fegin超时重试源码

心不动则不痛 提交于 2020-04-25 13:32:03
springCloud中最重要的就是微服务之间的调用,因为网络延迟或者调用超时会直接导致程序异常,因此超时的配置及处理就至关重要。 在开发过程中被调用的微服务打断点发现会又多次重试的情况,测试环境有的请求响应时间过长也会出现多次请求,网上查询了配置试了一下无果,决定自己看看源码。 本人使用的SpringCloud版本是Camden.SR3。 微服务间调用其实走的是http请求,debug了一下默认的ReadTimeout时间为5s,ConnectTimeout时间为2s,我使用的是Fegin进行微服务间调用,底层用的还是Ribbon,网上提到的配置如下 ribbon: ReadTimeout: 60000 ConnectTimeout: 60000 MaxAutoRetries: 0 MaxAutoRetriesNextServer: 1 超时时间是有效的但是重试的次数无效,如果直接使用ribbon应该是有效的。 下面开始测试: 在微服务B中建立测试方法,sleep 8s 确保请求超时 public Integer testee(){ try { Thread.sleep(8000L); } catch (InterruptedException e) { e.printStackTrace(); } return 9; } 在微服务A中使用fegin调用此方法时看到有异常

Spring Cloud学习笔记-007

故事扮演 提交于 2020-04-25 13:30:23
声明式服务调用:Spring Cloud Feign   Feign基于Netflix Feign实现,整合了Spring Cloud Ribbon和Spring Cloud Hystrix,除了提供这两者的强大功能之外,它还提供了一种声明式的Web服务客户端定义方式。   在使用Spring Cloud Ribbon时,通常都会利用它对RestTemplate的请求拦截来实现对依赖服务的接口调用,而RestTemplate已经实现了对HTTP请求的封装处理,形成了一套模板化的调用方法。在实际开发中,由于对服务依赖的调用可能不止一处,往往一个接口被多处调用,所以通常都会针对各个微服务自行封装一些客户端类来包装这些依赖服务的调用。Spring Cloud Feign在RestTemplate的基础上做了进一步的封装,由它来帮助我们定义和实现依赖服务接口的定义。在Spring Cloud Feign的实现下,我们只需创建一个接口并用注解的方式来配置它,即可完成对服务提供方的接口绑定,简化了在使用Spring Cloud Ribbon时自行封装服务调用客户端的开发量。 1. 启动注册中心和demo-member实例,创建demo-customer-feign工程,骨架选择quickstart。 2. 加入相关依赖: 3. 编写启动类: 4. 定义MemberService接口,通过

从零开始学spring cloud(七) -------- Spring Cloud OpenFegin

我的未来我决定 提交于 2020-04-25 13:30:03
一、OpenFegin 介绍 Feign是一个声明性的Web服务客户端。 它使编写Web服务客户端变得更容易。 要使用Feign,请创建一个界面并对其进行注释。 它具有可插入的注释支持,包括Feign注释和JAX-RS注释。 Feign还支持可插拔编码器和解码器。 Spring Cloud增加了对Spring MVC注释的支持,并使用了Spring Web中默认使用的相同HttpMessageConverters。 Spring Cloud集成了Ribbon和Eureka,在使用Feign时提供负载均衡的http客户端。 二、将OpenFegin应用到项目中 添加依赖到项目中: <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> 新建一个FeignClient类 1 package com.zwjk.cloud.fegin; 2 3 import com.zwjk.cloud.entity.User; 4 import org.springframework.cloud.openfeign.FeignClient; 5 import org.springframework.web

跟我学SpringCloud | 第六篇:Spring Cloud Config Github配置中心

≡放荡痞女 提交于 2020-04-25 09:52:17
SpringCloud系列教程 | 第六篇:Spring Cloud Config Github配置中心 Springboot: 2.1.6.RELEASE SpringCloud: Greenwich.SR1 如无特殊说明,本系列教程全采用以上版本 随着分布式项目越来越大,勤劳的程序猿们会开始面临一个挑战,配置文件会越来越繁杂,虽然spring提供了一个鸡肋版的解决方案,spring.profiles.active,在大型的分布式项目体系中,聊胜于无吧,手动维护配置文件的痛苦,生产,UAT,测试,开发环境的隔离,额外的配置文件,如:logback.xml日志的配置文件,bootstrap.properties配置文件,当系统中有几十个服务,相应的会有上百个配置文件,简直就是史诗级的灾难大片,每次发布上线,都要手动去检查配置文件,相应的服务都需要重启,那么,有没有一种方案,可以自动更新配置,并且对版本做出相应的控制,恰好,springcloud为我们提供了这样一种工具,虽然很多方面都还不完善,配置能力比较弱,但是也给我们提供了一种思路。 市面上有很多配置中心,BAT每家都出过,360的QConf、淘宝的diamond、百度的disconf都是解决这类问题。国外也有很多开源的配置中心Apache Commons Configuration、owner、cfg4j等等