资源预览内容
第1页 / 共37页
第2页 / 共37页
第3页 / 共37页
第4页 / 共37页
第5页 / 共37页
第6页 / 共37页
第7页 / 共37页
第8页 / 共37页
第9页 / 共37页
第10页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
微服务Spring Cloud介绍,主要内容,一、传统服务架构与微服务架构 二、什么是微服务 三、SpringCloud介绍 四、Eureka介绍 五、Ribbon介绍 六、Hystric介绍 七、Feign介绍 八、Zuul介绍 九、Config介绍,单体应用,单体应用优化,加入ESB,微服务架构,主要内容,一、传统服务架构与微服务架构 二、什么是微服务 三、SpringCloud介绍 四、Eureka介绍 五、Ribbon介绍 六、Hystric介绍 七、Feign介绍 八、Zuul介绍 九、Config介绍,什么是微服务,微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。 微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力,主要内容,一、传统服务架构与微服务架构 二、什么是微服务 三、SpringCloud介绍 四、Eureka介绍 五、Ribbon介绍 六、Hystric介绍 七、Feign介绍 八、Zuul介绍 九、Config介绍,Spring Cloud,Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包,Spring Cloud核心功能,Eureka:基于REST服务的分布式中间件,主要用于服务管理。 Ribbon:负载均衡框架。 Hystrix:容错框架,通过添加延迟阀值以及容错的逻辑,来帮助我们控制分布式系统间组件的交互。 Feign:一个REST客户端,目的是为了简化Web Service客户端的开发 Zuul:为微服务集群提供过代理、过滤、路由等功能。 Config:分布式配置中心组件,支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git、SVN。,Spring Cloud组件架构,主要内容,一、传统服务架构与微服务架构 二、什么是微服务 三、SpringCloud介绍 四、Eureka介绍 五、Ribbon介绍 六、Hystric介绍 七、Feign介绍 八、Zuul介绍 九、Config介绍,Eureka,Eureka由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。,Eureka架构,Eureka集群架构图,主要内容,一、传统服务架构与微服务架构 二、什么是微服务 三、SpringCloud介绍 四、Eureka介绍 五、Ribbon介绍 六、Hystric介绍 七、Feign介绍 八、Zuul介绍 九、Config介绍,Ribbon简介,负载均衡框架,支持可插拔式的负载均衡规则 支持多种协议,如HTTP、UDP等 提供负载均衡客户端,负载均衡器组件,一个负载均衡器,至少提供以下功能: 要维护各个服务器的IP等信息 根据特定逻辑选取服务器 为了实现基本的负载均衡功能,Ribbon的负载均衡器有三大子模块: Rule Ping ServerList,Ribbon内置的负载均衡规则,RoundRobinRule AvailabilityFilteringRule WeightedResponseTimeRule ZoneAvoidanceRule BestAvailableRule RandomRule RetryRule,Ribbon程序,主要内容,一、传统服务架构与微服务架构 二、什么是微服务 三、SpringCloud介绍 四、Eureka介绍 五、Ribbon介绍 六、Hystric介绍 七、Feign介绍 八、Zuul介绍 九、Config介绍,Hystrix:为什么需要断路器功能,在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用(RPC)。为了保证其高可用,单个服务又必须集群部署。由于网络原因或者自身的原因,服务并不能保证服务的100%可用,如果单个服务出现问题,调用这个服务就会出现网络延迟,此时若有大量的网络涌入,会形成任务累计,导致服务瘫痪,甚至导致服务“雪崩”。为了解决这个问题,就出现断路器模型。,Hystrix:作用,1.断路器机制:当Hystrix Command请求后端服务失败数量超过一定比例(默认50%), 断路器会切换到开路状态(Open). 这时所有请求会直接失败而不会发送到后端服务. 断路器保持在开路状态一段时间后(默认5秒), 自动切换到半开路状态(HALF-OPEN). 这时会判断下一次请求的返回情况, 如果请求成功, 断路器切回闭路状态(CLOSED), 否则重新切换到开路状态(OPEN). Hystrix的断路器就像我们家庭电路中的保险丝, 一旦后端服务不可用, 断路器会直接切断请求链, 避免发送大量无效请求影响系统吞吐量, 并且断路器有自我检测并恢复的能力. 2.Fallback:Fallback相当于是降级操作. 对于查询操作, 我们可以实现一个fallback方法, 当请求后端服务出现异常的时候, 可以使用fallback方法返回的值. fallback方法的返回值一般是设置的默认值或者来自缓存. 3.资源隔离:在Hystrix中, 主要通过线程池来实现资源隔离. 通常在使用的时候我们会根据调用的远程服务划分出多个线程池. 例如调用产品服务的Command放入A线程池, 调用账户服务的Command放入B线程池. 这样做的主要优点是运行环境被隔离开了. 这样就算调用服务的代码存在bug或者由于其他原因导致自己所在线程池被耗尽时, 不会对系统的其他服务造成影响. 但是带来的代价就是维护多个线程池会对系统带来额外的性能开销.,Hystrix:命令执行流程,主要内容,一、传统服务架构与微服务架构 二、什么是微服务 三、SpringCloud介绍 四、Eureka介绍 五、Ribbon介绍 六、Hystric介绍 七、Feign介绍 八、Zuul介绍 九、Config介绍,Feign介绍,Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign整合了Ribbon 与Hystrix,并和Eureka结合,能够实现负载均衡和断路器等效果。 简而言之: Feign 采用的是基于接口的注解 Feign 整合了ribbon、 Hystrix,主要内容,一、传统服务架构与微服务架构 二、什么是微服务 三、SpringCloud介绍 四、Eureka介绍 五、Ribbon介绍 六、Hystric介绍 七、Feign介绍 八、Zuul介绍 九、Config介绍,Zuul介绍,Zuul的主要功能是路由转发和过滤器。路由功能是微服务的一部分,比如api/user转发到到user服务,/api/shop转发到到shop服务。zuul默认和Ribbon结合实现了负载均衡的功能, 类似于nginx转发 是Netflix的一个子项目 提供代理、过滤、路由等功能,Zuul:Hystrix 和Ribbon 支持,Zuul天生就拥有线程隔离和断路器的自我保护功能, 以及对服务调用的客户端负载均衡功能。但是需要注意, 当使用path与url的映射关系来配置路由规则的时候, 对于路由转发的请求不会采用HystrixCommond来包装, 所以这类路由请求没有线程隔离和断路器的保护,并且也不会有负载均衡的能力。因此,我们在使用Zuul的时候尽量使用path和serviceId的组合来进行配置,这样不仅可以保证API网关的健壮和稳定,也能用到Ribbon的客户端负载均衡功能,Zuul过滤器运行机制,项目结构,加入Zuul后的集群,主要内容,一、传统服务架构与微服务架构 二、什么是微服务 三、SpringCloud介绍 四、Eureka介绍 五、Ribbon介绍 六、Hystric介绍 七、Feign介绍 八、Zuul介绍 九、Config介绍,Config介绍,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持, 它分为服务端与客户端两个部分。其中服务端也称为分布式配置中心, 它是一个独立的微服务应用,用来连接配置仓库并为客户端提供获取配置信息、加密/解密信息等访问接口;而客户端则是微服务架构中的各个微服务应用或基础设施, 它们通过指定的配置中心来管理应用资源与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息。,Config架构,THANK YOU!,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号