Spring Cloud

Spring Cloud学习进阶(一)- 服务调用Fegin

為{幸葍}努か 提交于 2020-08-10 14:05:07
一、Feign简介 Feign是Netflix开源的声明式的HTTP客户端,只需要声明一个接口,Feign可以自动帮我们构造请求地址。 (简单来说,Feign可帮助我们更加便捷,优雅的调用服务之间的HTTP API),另外SpringCloud对Feign进行了增强,是Feign支持SpringMVC注解,并整和了Ribbon和Eureka,从而让Feign使用更加便捷。 二、基于Feign的服务调用 (1)pom依赖 <!-- 声明式Http客户端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> (2)在内容中心微服务启动类添加Feign的支持, 通过@EnableFeignClients主机诶开启Spring Cloud Feign的支持功能: @SpringBootApplication @EnableFeignClients //开启Feign支持 public class ContentCenterApplication { public static void main(String[] args) { SpringApplication.run

Spring Cloud升级之路

本秂侑毒 提交于 2020-08-10 12:06:14
本系列示例与胶水代码地址: https://github.com/HashZhang/spring-cloud-scaffold 负载均衡Ribbon替换成Spring Cloud Load Balancer Spring Cloud Load Balancer 并不是一个独立的项目,而是 spring-cloud-commons 其中的一个模块。 项目中用了 Eureka 以及相关的 starter,想完全剔除 Ribbon 的相关依赖基本是不可能的,Spring 社区的人也是看到了这一点,通过配置去关闭 Ribbon 启用 Spring-Cloud-LoadBalancer 。 spring.cloud.loadbalancer.ribbon.enabled=false 关闭ribbon之后,Spring Cloud LoadBalancer就会加载成为默认的负载均衡器。 Spring Cloud LoadBalancer 结构如下所示: 其中: 全局只有一个 BlockingLoadBalancerClient ,负责执行所有的负载均衡请求。 BlockingLoadBalancerClient 从 LoadBalancerClientFactory 里面加载对应微服务的负载均衡配置。 每个微服务下有独自的 LoadBalancer , LoadBalancer

Ribbon 全局修改irule

╄→гoц情女王★ 提交于 2020-08-10 10:12:18
1.x版本 /** * @author Spencer Gibb */ @Configuration @Import({ PropertyPlaceholderAutoConfiguration.class, ArchaiusAutoConfiguration.class, UtilAutoConfiguration.class, RibbonAutoConfiguration.class }) @RibbonClients(defaultConfiguration = DefaultRibbonConfig.class) public class RibbonClientDefaultConfigurationTestsConfig { public static class BazServiceList extends ConfigurationBasedServerList { public BazServiceList(IClientConfig config) { super.initWithNiwsConfig(config); } } } @Configuration class DefaultRibbonConfig { @Bean public IRule ribbonRule() { return new BestAvailableRule(); } @Bean

疫情期间,学习半年源码,终于拿到了蚂蚁Offer,分享面试过程

纵饮孤独 提交于 2020-08-10 10:01:00
小伙伴年初就一直嚷嚷这要跳槽,但由于今年情况特殊,在家待了大半年,在这期间TA也没有荒废时间,吸取之前的不足,努力钻研 源码,还有框架的知识....... 其实,大大小小的公司面试了很多, 但总没有拿到一个满意的offer,要么package太低 ,要么就是面试被虐。 经过前几次的面试失利,终于明白了什么叫基础不牢,地动山摇。 面试官随便针对一个知识点深入考察一下,就回答不出来,就这样,还怎么能通过面试? 不过,最近收到了小伙伴的捷报,已拿到阿里的offer,公司足够大,base还可以,虽然是个 P6,但还是隐隐感觉到他很满意。 其实,我还是有点疑惑,他之前的基础很一般,咋就突然拿到了阿里的offer 。 后来没忍住,问他: “你最近都干啥了,阿里面试都问你什么了?” 结果,这小伙这大半年居然一直在闭关修炼,把一些基础的源码慢慢都啃了一遍。 最基本的HashMap 和 ConcurrentHashMap 线程池的源码实现 阻塞队列BlockingQueue相关实现 ReentrantLock 实现,以及其内部同步器Sync的实现原理 Future的实现原理 AtomicXXX是如何运转的 技术面 项目中的监控:那个监控指标常见的有哪些? 微服务涉及到的技术以及需要注意的问题有哪些? 注册中心你了解了哪些? consul 的可靠性你了解吗? consul 的机制你有没有具体深入过

Eureka--springClould笔记一:

守給你的承諾、 提交于 2020-08-10 09:26:38
单机版注册中心: 1、Eureka服务端 : pom <!--eureka-server--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> yml: server: port: 7001 eureka: instance: hostname: localhost #eureka服务端的实例名字 client: allow-redirects: false # 是否向注册中心注册本服务:true为是。注册中心不需要将自己注册进去 fetch-registry: false # false表示自己是注册中心,职责是维护服务实例,并不需要去检索服务 service-url: #设置与eureka server交互的地址查询服务和注册服务都需要依赖这个地址,多个时用逗号隔开 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ 主启动类 : @EnableEurekaServer @SpringBootApplication @EnableEurekaServer /

RestTemplate--SpringCloud 二:

旧巷老猫 提交于 2020-08-10 08:47:30
一. 什么是RestTemplate 优雅的HTTP请求: 传统情况下在java代码里访问restful服务,一般使用Apache的HttpClient。不过此种方法使用起来太过繁琐。 spring提供了一种简单便捷的模板类来进行操作,这就是RestTemplate。 二.一个简单的例子。 定义一个简单的restful接口 @RestControllerpublic class TestController { @RequestMapping(value = "testPost", method = RequestMethod.POST) public ResponseBean testPost(@RequestBody RequestBean requestBean) { ResponseBean responseBean = new ResponseBean(); responseBean.setRetCode("0000"); responseBean.setRetMsg("succ"); return responseBean; }} 使用RestTemplate访问该服务 //请求地址 String url = "http://localhost:8080/testPost"; //入参 RequestBean requestBean = new RequestBean(

reactor.netty.http.client.PrematureCloseException: Connection prematurely closed BEFORE response解决方案

試著忘記壹切 提交于 2020-08-10 08:35:16
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://lovnx.blog.csdn.net/article/details/107900585 一、背景 可能大家在使用Spring Cloud Gateway构建微服务网关的时候,过五关斩六将,Reactor没能难倒我们,链路追踪没能难倒我们,最后在上线之后发现许多奇妙的问题,这些奇妙的问题还无从下手,比如这个堆栈,深入使用过SCG的人一定不会陌生: reactor . netty . http . client . PrematureCloseException : Connection prematurely closed BEFORE response Suppressed : reactor . core . publisher . FluxOnAssembly$OnAssemblyException : 类似的还有: Connection prematurely closed DURING response 。。。等等 百度了一圈,鲜有人提供解决方案,有条件的Google了一把,跟着官方调整几个参数,有用没用也不得而知,最后反正就不了了之。 二、如何找答案 去SCG官方Issue中查找一番,还不少,(这里插一句,遇到问题可以先找前人的Issue

Spring Cloud Gateway Cors跨域问题的解决

亡梦爱人 提交于 2020-08-10 08:28:22
CORS 前后端分离就会碰到跨域问题,原本我们在后端采用 CORS 解决,现在利用网关,可以放在网关解决。 版本: spring-cloud:Hoxton.SR3 spring-cloud-gateway:2.2.2.RELEASE 一共两个文件 GulimallCorsConfiguration.java /** * 配置跨域 */ @Configuration public class GulimallCorsConfiguration { @Bean public CorsResponseHeaderFilter corsResponseHeaderFilter() { return new CorsResponseHeaderFilter(); } @Bean public CorsWebFilter corsWebFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.addAllowedHeader("*"); corsConfiguration.addAllowedMethod("*"

Dubbo服务调用隔离这么玩对么

我是研究僧i 提交于 2020-08-10 08:00:45
背景阐述 前几天,有位同学问我一个关于 Dubbo 的问题。他的诉求是这样子的: 诉求一 第一个诉求是本地开发的时候想自己调用自己的服务,比如自己在改 A 服务,然后出问题了,本地再启动一个 B 服务,A 服务调用 B 服务直接排查问题。 目前的问题是用的同一个注册中心,所以会调用到其他的服务实例。 还有就是去网上找了一些文章的资料,按照资料上的配置没有效果,也就是在@Reference 配置 url 来指定调用的服务地址。 配置如下: @Reference(url="dubbo://localhost:20880") 诉求二 目前他们的测试环境没有使用 Docker 来部署,而且每个服务只部署了一个实例。问题就是当一个项目并行开发时有多个分支,这些分支得合并后一起部署测试。经常会出现代码冲突等问题。 还有就是快要上线时,需要下掉其他的分支做回归测试。但是会出现其他团队也要同一天上线,就只能协商等待来解决。 最好的方式就是可以实现一个分支部署一个实例,对于他们目前的这个规模和投入这个暂时做不了。所以他向我请教,有没有什么更好更快的方式。 解决方案 既然找了我,我还是给出一些建议吧,不一定很好,仅供参考。 诉求一解决方案 br/>@Reference 在@Reference 中指定 url 是可以的,只是那位同学配置的地址有问题,在地址后面应该加上接口和版本的信息。

SpringCloud:Spring Cloud 之 okhttp

孤者浪人 提交于 2020-08-10 07:10:07
1. 什么是 okhttp ? okhttp 是由 square 公司开源的一个 http 客户端。在 Java 平台上,Java 标准库提供了 HttpURLConnection 类来支持 HTTP 通讯。不过 HttpURLConnection 本身的 API 不够友好,所提供的功能也有限。大部分 Java 程序都选择使用 Apache 的开源项目 HttpClient 作为 HTTP 客户端。Apache HttpClient 库的功能强大,使用率也很高。 2. 为什么要使用 okhttp ? okhttp 的设计初衷就是简单和高效,这也是我们选择它的重要原因之一。它的优势如下:(了解源码可+求求: 1791743380) 支持 HTTP/2 协议。 允许连接到同一个主机地址的所有请求,提高请求效率。 共享Socket,减少对服务器的请求次数。 通过连接池,减少了请求延迟。 缓存响应数据来减少重复的网络请求。 减少了对数据流量的消耗。 自动处理GZip压缩。 3. 实战目标 Feign 中使用 okhttp 替代 httpclient Zuul 中使用 okhttp 替代 httpclient 4. 在 Feign 中使用 okhttp 首先介绍一下工程结构,本演示工程包含 provider-server、consumer-server、eureka-server 和