eureka

springcloud学习笔记

瘦欲@ 提交于 2020-12-13 00:51:13
一、什么是springcloud,有什么作用   Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。 二、springcloud的基本使用   1.服务的注册与发现     ①创建一个parent maven项目springcloud,然后在该maven项目下面创建两个子项目eureka-server,eureka-client       Ⅰ、springcloud          < project xmlns ="http://maven.apache.org/POM/4.0.0" xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation ="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > < modelVersion > 4.0.0 </ modelVersion > < groupId > com.demo </ groupId > < artifactId >

Spring Cloud架构的各个组件的原理分析

坚强是说给别人听的谎言 提交于 2020-12-12 21:42:41
作者:白羽毛 来源:toutiao.com/i6888099913867985422/ 我们先认识一下SpringCloud的各个组件,然后知其所以然。 原理讲解前,先看一个最经典的业务场景,如开发一个电商网站,要实现支付订单的功能,流程如下: 创建一个订单之后,如果用户立刻支付了这个订单,我们需要将订单状态更新为“已支付” 扣减相应的商品库存 通知仓储中心,进行发货 给用户的这次购物增加相应的积分 如上,微服务的应用场景和核心竞争力: 降低耦合:每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界。由于体积小、复杂度低,每个微服务可由一个小规模开发团队完全掌控,易于保持高可维护性和开发效率。 独立部署:由于微服务具备独立的运行进程,所以每个微服务也可以独立部署。当某个微服务发生变更时无需编译、部署整个应用。由微服务组成的应用相当于具备一系列可并行的发布流程,使得发布更加高效,同时降低对生产环境所造成的风险,最终缩短应用交付周期。 选型灵活:微服务架构下,技术选型是去中心化的。每个团队可以根据自身服务的需求和行业发展的现状,自由选择最适合的技术栈。由于每个微服务相对简单,故需要对技术栈进行升级时所面临的风险就较低,甚至完全重构一个微服务也是可行的。 容错机制:当某一组建发生故障时,在单一进程的传统架构下,故障很有可能在进程内扩散,形成应用全局性的不可用。在微服务架构下

原理解析 -Spring Cloud

感情迁移 提交于 2020-12-12 16:04:40
1.内置负载均衡规则 1.1 RoundRobinRule 直接 round robin 轮询,从一堆 server list 中,不断的轮询选择出来一个,每个 server 平摊到的请求,基本是平均的 1.2 AvailabiltyFileringRule 这个会考察服务器的可用性,如果3次链接失败,就会等待30秒后再次访问;如果不断失败,那么等待时间会不断变长,如果某个服务器的并发请求太高了,那么会绕过去,不再访问 1.3 WeightedResponseTimeRule 这个代表权重,每个服务器都可以有权重,权重高的优先访问,如果某个服务器响应时间比较长,那么权重就会降低,减少访问 1.4 ZoneAvoidanceRule 会根据区域和服务器来进行负责均衡,说白了就是机房的意思 1.5 BestAvailableRule 忽略那些连接失败的服务器,然后尽量找并发比较低的服务器来请求 1.6 RandomRule 随机找一个服务器 1.7 RetryRule 可以重试,就是通过 round robin 找到的服务器请求失败,会重新找一个服务器 2.基本整合原理 3.源码级别大体流程 4.@LoadBalanced 极简流程 首先通过 @loadBalanced注解,找到对应的相关配置类 LoadBalancerAutoConfiguration ,他还有一个负责异步调用的类

Spring Cloud中Feign的继承特性

安稳与你 提交于 2020-12-12 09:19:16
上篇文章我们了解了Feign的基本使用,在HelloService类中声明接口时,我们发现这里的代码可以直接从服务提供者的Controller中复制过来,这些可以复制的代码Spring Cloud Feign对它进行了进一步的抽象,这里就用到了Feign的继承特性,本文我们就来看看如何利用Feign的继承特性来进一步简化我们的代码。 本文是Spring Cloud系列的第十七篇文章,了解前十六篇文章内容有助于更好的理解本文: 1. 使用Spring Cloud搭建服务注册中心 2. 使用Spring Cloud搭建高可用服务注册中心 3. Spring Cloud中服务的发现与消费 4. Eureka中的核心概念 5. 什么是客户端负载均衡 6. Spring RestTemplate中几种常见的请求方式 7. RestTemplate的逆袭之路,从发送请求到负载均衡 8. Spring Cloud中负载均衡器概览 9. Spring Cloud中的负载均衡策略 10. Spring Cloud中的断路器Hystrix 11. Spring Cloud自定义Hystrix请求命令 12. Spring Cloud中Hystrix的服务降级与异常处理 13. Spring Cloud中Hystrix的请求缓存 14. Spring Cloud中Hystrix的请求合并 15.

Spring Cloud实战小贴士:Feign的继承特性(伪RPC模式)

只愿长相守 提交于 2020-12-12 08:02:18
通过之前发布的《Spring Cloud构建微服务架构:服务消费者(Feign)》,我们已经学会如何使用Spring MVC的注解来绑定服务接口。我们几乎完全可以从服务提供方的Controller中依靠复制操作,来构建出相应的服务接口客户端,或是通过Swagger生成的API文档来编写出客户端,亦或是通过Swagger的代码生成器来生成客户端绑定。即便如此,有很多的方式来产生Feign的客户端程序,依然有很多开发者热衷于利用公共的依赖接口来连接服务提供者和服务消费者的方式。由此,Feign的继承特性就能很好的派上用处。下面,我们来详细看看如何使用Spring Cloud Feign的继承特性。 动手试一试 接下来的示例将分为三个模块: 服务接口定义模块:通过Spring MVC注解定义抽象的interface服务接口 服务接口实现模块:实现服务接口定义模块的interface,该模块作为服务提供者注册到eureka 服务接口消费模块:服务接口定义模块的客户端实现,该模块通过注册到eureka来消费服务接口 服务接口的定义 创建一个Spring Boot项目:eureka-feign-api, pom . xml 的主要内容如下: <parent> <groupId> org.springframework.boot </groupId> <artifactId> spring

[菜鸟SpringCloud入门]第一章:构建多模块的Maven项目+创建注册中心Eureka子模块

倾然丶 夕夏残阳落幕 提交于 2020-12-09 18:55:50
前言 欢迎来到菜鸟SpringCloud入门实战系列(SpringCloudForNoob),该系列通过层层递进的实战视角,来一步步学习和理解SpringCloud。 本系列适合有一定Java以及SpringBoot基础的同学阅读。 每篇文章末尾都附有本文对应的Github源代码,方便同学调试。 Github仓库地址: https://github.com/qqxx6661/springcloud_for_noob 菜鸟SpringCloud入门实战系列 你还可以通过以下两种途径查看菜鸟SpringCloud入门实战系列: 关注我的公众号:Rude3Knife 点击公众号下方:技术推文——SpringCloud 菜鸟SpringCloud实战专栏(CSDN) 实战版本 SpringBoot:2.0.3.RELEASE SpringCloud:Finchley.RELEASE -----正文开始----- 构建多模块的Maven项目 + 创建注册中心Eureka子模块 构建多模块的Maven项目 由于SpringCloud中有许多组件,每个组件都需要单独进行开发和维护,为了便于统一的版本维护和管理,我们经常会用到Maven的多模块模式。 结构如下: 在这里插入图片描述 创建主工程 首先创建一个Maven项目作为主工程,类型无所谓,这里建议使用maven-archetype

灰度发布浅析

╄→尐↘猪︶ㄣ 提交于 2020-12-08 09:57:25
定义 灰度发布就是已一种平滑过渡的方式来发布,通过切换线上新旧版本之间的路由权重,逐步从旧版本切换到新版本;比如要上线新功能,首先只是更新少量的服务节点,通过路由权重,让少部分用户体验新版本,如果没有什么问题,再更新所有服务节点;这样可以在出现问题把影响面降到最低,保证了系统的稳定性。 灰度发布 一个系统往往有接入层比如nginx(Openresty),网关层比如zuul,以及服务层比如各种rpc框架;在这几层都有路由功能,也就是说这几层都可以做灰度;接入层可以使用nginx+lua来实现灰度,网关层zuul可以结合ribbon来实现灰度,rpc框架如dubbo本身提供了路由功能可以直接做灰度处理;下面看看具体如何去实现; 接入层灰度 接入层我们这里使用功能更强大的Openresty,然后使用lua进行路由转发,相关的路由策略可以配置在分布式缓存redis里面,当然也可以持久化到数据库里面; 准备 准备一台Openresty,两台web服务器tomcat(端口分别是8081,8082),以及redis;为了方便模拟在redis里面配置白名单,如果在白名单里面就走8082,不在则走8081; Openresty配置 需要在Openresty中配置支持lua,以及相关路由的lua脚本,nginx.conf配置如下: http { ... lua_package_path "

服务发现与注册 Eureka 设计理念

99封情书 提交于 2020-12-06 14:46:49
Eureka是在部署AWS的背景下面设计的,其设计认为,在云端,特别是大规模部署情况下面,失败是不可以避免的,可能是因为eureka自身部署失败或者网络分区等情况导致服务不可用,这些问题是不可以避免的,要解决这个问题就需要eureka在网络分区的时候,还能够正常提供服务,因此eureka选择满足availability这个特性。 1. AP 优于CP eureka是在部署AWS的背景下面设计的,其设计认为,在云端,特别是大规模部署情况下面,失败是不可以避免的,可能是因为eureka自身部署失败或者网络分区等情况导致服务不可用,这些问题是不可以避免的,要解决这个问题就需要eureka在网络分区的时候,还能够正常提供服务,因此eureka选择满足availability这个特性。 eureka选择了A也就必须放弃C,也就是说在eureka中采用最终一致性的方式来保证数据的一致性问题,因此实例的注册信息在集群的所有节点之间的数据都不是强一性的,需要客户端能支持负载均衡算法及失败重试等机制。 2. Peer to Peer 架构 一般而言在分布式系统的数据有多个副本之间的复制方式,可以分为主从复制和对等复制 主从复制 Master-Slave模式 一个主副本和多个从副本,所有数据的写操作都是提交到主副本,最后由主副本更新到其他的从副本(常采用异步更新),通常写是整个系统的瓶颈所在。

SpringCloud之Feign

拟墨画扇 提交于 2020-12-05 19:51:52
  Fegin是一个声明似的web服务客户端,它使得编写web服务客户端变得更加容易。使用Fegin创建一个接口并对它进行注解。它具有可插拔的注解支持包括Feign注解与JAX-RS注解,Feign还支持可插拔的编码器与解码器,Spring Cloud 增加了对 Spring MVC的注解,Spring Web 默认使用了HttpMessageConverters, Spring Cloud 集成 Ribbon 和 Eureka 提供的负载均衡的HTTP客户端 Feign。 声明式REST客户端:Feign   创建一个maven工程eureka_feign_client,pom文件如下: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version> 1.4 . 3 .RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF- 8 </project.build.sourceEncoding> <java

真香!阿里、腾讯、百度、京东等多位架构师鼎力推荐SpringCloud笔记

老子叫甜甜 提交于 2020-12-05 15:14:19
前言 过去十几年里,广义的“微服务”架构以其小团队快速创建和迭代服务带来的架构弹性、扩展性、敏捷性,天然匹配了互联网业务快速发展和变化的特点,在各大互联网公司取得了巨大的成功。时至云原生应用时代,已不再是是否采用微服务架构的问题,而是何时采用以及如何在生产上实战的问题。 今天分享的这份学习资料:讲解将如何基于Spring Cloud生态体系进行微服务实战的方方面面的细节都涵盖了,从这个意义上来讲,确实做到了“重新定义”。 本书内容有3大特色: 足够广:详细讲解了Spring Cloud的核心常用组件以及Spring Cloud的增强生态,针对生产实践中常见问题给出可落地的&*佳实践方案,无论您是初学者还是开发人员,还是架构师,都能从此书获益。 有深度:本书对涉及的Spring Cloud组件按照从入门、进阶、实战、扩展增强的顺序循序渐进进行剖析和讲解,帮助作者知其然并知其所以然,授之以渔。 重实践:注重生产实践,通过案例驱动,给出优秀的生产实践方案和优秀的生产配置,帮助读者快速落地企业微服务架构。 本书大牛出版: 本书由Spring Cloud中国社区官方撰写,基于Spring Cloud的Finchley.RELEASE版本,基于Spring Cloud的Finchley.RELEASE版本,核心成员来自原阿里、蚂蚁金服、京东金融等互联网企业,经验丰富。 本书内容有3大特色