微服务框架之Spring Cloud简介
在了解 Spring Cloud 之前先了解一下微服务架构需要考量的核心关键点,如下图:
对于以上等核心关键点的处理,不需要我们重复造车轮, Spring Cloud 已经帮我们集成了,它使用 Spring Boot 风格将一些比较成熟的微服务框架组合起来,屏蔽掉了复杂的配置和实现原理,为快速构建微服务架构的应用提供了一套基础设施工具和开发支持。
Spring Cloud 所提供的核心功能包含:
Spring Cloud架构图
Spring Cloud子项目
Spring Cloud 旗下的子项目大致可以分为两类:
如下:
1. Spring Cloud 与 Spring Boot
Spring Boot 可以说是微服务架构的核心技术之一。通过在 Spring Boot 应用中添加 Spring MVC 依赖,就可以快速实现基于 REST 架构的服务接口,并且可以提供对 HTTP 标准动作的支持。而且 Spring Boot 默认提供 JackJson 序列化支持,可以让服务接口输入、输出支持 JSON 等。因此,当使用 Spring Cloud 进行微服务架构开发时,使用 Spring Boot 是一条必经之路。
2. Spring Cloud 与服务治理( Eureka )
服务治理是 Spring Cloud 的核心,在实现上其提供了两个选择,即 Consul 和 Netflix 的 Eureka 。
Eureka 提供了服务注册中心、服务发现客户端,以及注册服务的 UI 界面应用。
在 Eureka 的实现中,节点之间相互平等,有部分注册中心“挂掉”也不会对整个应用造成影响,即使集群只剩一个节点存活,也可以正常地治理服务。即使所有服务注册节点都宕机, Eureka 客户端中所缓存的服务实例列表信息,也可让服务消费者能够正常工作,从而保障微服务之间互相调用的健壮性和应用的弹性。
3. Spring Cloud 与客户端负载均衡( Ribbon )
Ribbon 默认与 Eureak 进行无缝整合,当客户端启动的时候,从 Eureka 服务器中获取一份服务注册列表并维护在本地,当服务消费者需要调用服务时, Ribbon 就会根据负载均衡策略选择一个合适的服务提供者实例并进行访问。
Spring Cloud 通过集成 Netflix 的 Feign 项目,为开发者提供了声明式服务调用,从而简化了微服务之间的调用处理方式。并且默认 Feign 项目集成了 Ribbon ,使得声明式调用也支持客户端负载均衡功能。
4. Spring Cloud 与微服务容错、降级( Hystrix )
为了给微服务架构提供更大的弹性,在 Spring Cloud 中,通过集成 Netflix 下子项目 Hystrix ,通过所提供的 @HystrixCommand 注解可以轻松为我们所开发的微服务提供容错、回退、降级等功能。此外, Hystrix 也默认集成到 Feign 子项目中。
Hystrix 是根据“断路器”模式而创建。当 Hystrix 监控到某服务单元发生故障之后,就会进入服务熔断处理,并向调用方返回一个符合预期的服务降级处理( fallback ),而不是长时间的等待或者抛出调用异常,从而保障服务调用方的线程不会被长时间、不必要地占用,避免故障在应用中的蔓延造成的雪崩效应。
而 Hystrix 的仪表盘项目( Dashboard )可以监控各个服务调用所消耗的时间、请求数、成功率等,通过这种近乎实时的监控和告警,可以及时发现系统中潜在问题并进行处理。
5. Spring Cloud 与服务网关( Zuul )
Spring Cloud 通过集成 Netflix 中的 Zuul 实现 API 服务网关功能,提供对请求的路由和过滤两个功能
路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础。
过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础。
通过 Zuul ,可以将细粒度的服务组合起来提供一个粗粒度的服务,所有请求都导入一个统一的入口,对外整个服务只需要暴露一个 API 接口,屏蔽了服务端的实现细节。通过 Zuul 的反向代理功能,可以实现路由寻址,将请求转发到后端的粗粒度服务上,并做一些通用的逻辑处理。此外, Zuul 默认会与 Eureka 服务器进行整合,自动从 Eureka 服务器中获取所有注册的服务并进行路由映射,实现 API 服务网关自动配置。
6. Spring Cloud 与消息中间件( Stream )
Spring Cloud 为简化基于消息的开发,提供了 Stream 子项目,通过建立消息应用抽象层,构建了消息收发、分组消费和消息分片等功能处理,将业务应用中的消息收发与具体消息中间件进行解耦,使微服务应用开发中可以非常方便地与 Kafka 和 RabbitMQ 等消息中间件进行集成。
Spring Cloud Bus 基于 Stream 进行扩展,可以作为微服务之间的事件、消息总线,用于服务集群中状态变化的传播。
比如 Spring Cloud Config 借助 Bus ,可以实现配置的动态刷新处理。
7. Spring Cloud 与分布式配置中心( Config )
针对微服务架构下的配置文件管理需求, Spring Cloud 提供了一个 Config 子项目。 Spring Cloud Config 具有中心化、版本控制、支持动态更新和语言独立等特性。
在 Config 子项目中将微服务应用分为两种角色:配置服务器( Config Server )和配置客户端( Config Client )。使用配置服务器集中地管理所有配置属性文件,配置服务中心可以将配置属性文件存储到 Git 、 SVN 等具有版本管理仓库中,也可以存放在文件系统中。默认采用 Git 的方式进行存储,因此可以很容易地对配置文件进行修改,并实现版本控制。
8. Spring Cloud 与微服务链路追踪( Sleuth )
Spring Cloud 中的 Sleuth 子项目为开发者提供了微服务之间调用的链路追踪。
Sleuth 核心思想就是通过一个全局的 ID 将分布在各微服务服务节点上的请求处理串联起来,还原了调用关系,并借助数据埋点,实现对微服务调用链路上的性能数据的采集。
因此,通过 Sleuth 可以很清楚地了解到一个用户请求经过了哪些服务、每个服务处理花费了多长时间,从而可以对用户的请求进行分析。此外,通过将采集的数据发送给 Zipkin 进行存储、统计和分析,从而可以实现可视化的分析和展示,帮助开发者对微服务实施优化处理。
9. Spring Cloud 与微服务安全( Security )
Spring Cloud Security 为我们提供了一个认证和鉴权的安全框架,实现了资源授权、令牌管理等功能,同时结合 Zuul 可以将认证信息在微服务调用过程中直接传递,简化了我们进行安全管控的开发。
Spring Cloud Security 默认支持 OAuth 2.0 认证协议,因此单点登录也可以非常容易实现,并且 OAuth2.0 所生成的令牌可以使用 JWT 的方式,进一步简化了微服务中的安全管理。
10. Spring Cloud 的其他子项目
前端都学什么框架?
小编在这里给大家整理了一份web前端开发完整的学习路线,框架在第三阶段中,希望可以帮到你~第一阶段:专业核心基础 阶段目标:1. 熟练掌握HTML5、CSS3、Less、Sass、响应书布局、移动端开发。2. 熟练运用HTML+CSS特性完成页面布局。4. 熟练应用CSS3技术,动画、弹性盒模型设计。5. 熟练完成移动端页面...
Spring的中文意思是什么?
n.1. 春季,春天[U][C]2. 旺盛时期;青春年少时期[U]3. 跳跃[C]He rose with a spring and dashed out the door.他一跃而起,奔出门去。4. 弹簧[C]5. 弹力;活力[U][S]There's little spring in this sofa.这张沙发几乎没什麼弹性。6. 泉[P1]7. 根源,源泉[C]Her vanity was the...
spring up face a crisis with perfect self-control stare straight ah...
春天了,面对一场完美的自我控制的危机 spring英[sprɪŋ]美[sprɪŋ]n.春季; 泉水,小溪; 弹簧,弹性; 跳跃;vi.跳,跃; 突然发出或出现; 发源; 劈开,裂开;vt.突然跳出; 跳过; 使开裂;[网络]框架; 青; 久石让;[例句]The Labor government of Western Australia has an...
ARKit探索
2.ARKit框架提供了两种AR技术,一种是基于3D场景(SceneKit)实现的增强现实,一种是基于2D场景(SpriktKit)实现的增强现实 一般主流都是基于3D实现AR技术,ARKit不仅支持3D游戏引擎SceneKit还支持2D游戏引擎SpriktKit,这一点出乎笔者意料之外 3.要想显示AR效果,必须要依赖于苹果的游戏引擎框架(3D引擎...
《宝可梦朱紫》正式公开,这款游戏是以什么为原型创作的?
依据Merchiodos地发现,游戏里面的好几个工程建筑,被觉得参考自西班牙著名工程建筑,主要包括坐落于巴塞罗那的高迪公园和圣家族大教堂,及其别的具备西班牙设计风格的工程建筑。而本次御三家之一新芽喵的英文名Sprigatito中的gatito,在西班牙语中有小猫猫的含义。主人公家的装饰油画,则是一副弗拉明戈舞者的...
box spring mattress cover是什么意思
box spring mattress cover 弹簧床垫套 双语对照 词典结果:box spring mattress cover[英][bɔks spriŋ ˈmætris ˈkʌvə][美][bɑks sprɪŋ ˈmætrɪs ˈkʌvɚ]n.框架弹簧床垫套;
java框架学习方式有哪些
三大框架简介1、Spring Spring 是一个解决了许多在J2EE 开发中常见的问题的强大框架. Spring 提供了管理业务对 象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯.Spring 的架构基础是 基于使用JavaBean 属性的Inversion Control容器.然而,这仅仅是完整图景中的一部 分:Spri 跟着这个网站学吧...
web前端三大主流框架
2、React.js React框架是起源于Facebook的项目,主要是通过对DOM的模拟减少与DOM的交互做到的。React的模块化把组件进行了隔离,出现问题的时候更方便程序员对其进行修改。3、Angular.js Angular拥有很好的应用程序,是一个以JavaSpript编写的库,模板功能也异常强大,本身就带有丰富的Angular指令。一方面...
使用框架的常用方法有哪些
Angular拥有很好的应用程序,是一个以JavaSpript编写的库,模板功能也异常强大,本身就带有丰富的Angular指令。一方面可以通过指令扩宽HTML,一方面可以通过表达式绑定数据到HTML。优点:模板功能强大丰富并且是声明式的,是一个比较完善的前端MVC框架,自带了丰富的Angular指令;ng模块化比较大胆的引入了Java的...
展望未来1 1——8单元单词表
坐落在 36 slowly ['sləuli] ad.缓慢地 37 smart [smɑ:t] a.漂亮的;时髦的 38 social ['səuʃəl] a.社会的;社交的 39 spring [spriŋ] n.春天 40 summer ['sʌmə] n.夏天 41 sun [sʌn] n.太阳 ...
蔡闸甘油: 它是 springcloud的前提,springcloud才是真正做微服务的框架,springboot是做微服务的入门级框架.但是也可以做电商之类的大型项目.
鲁山县18677693096: 微服务框架 spring cloud 和 dubbo 有什么区别 - ?
蔡闸甘油: 其中配置管理Dubbo是不具备的,当然可以借助Zookeeper实现,但是不推荐.Spring Cloud提供的方案是Spring Cloud Config,再加上Spring Cloud Bus可以实现配置的广播动态刷新.服务注册和发现作为基础的能力Dubbo是有的,默认大概提...
鲁山县18677693096: 如何使用Spring Boot/Spring Cloud 实现微服务应用 - ?
蔡闸甘油: REST(REpresentationStateTransfer)描述了一个架构样式的网络系统,比如web应用程序.它首次出现在2000年RoyFielding的博士论文中,他是HTTP规范的主要编写者之一.REST指的是一组架构约束条件和原则.满足这些约束条件和原则的...
鲁山县18677693096: 如何理解spring boot中的微服务架构的体现 - ?
蔡闸甘油: 1. Spring Boot是什么,解决哪些问题1) Spring Boot使编码变简单2) Spring Boot使配置变简单3) Spring Boot使部署变简单4) Spring Boot使监控变简单5) Spring Boot的不足 2. Spring Boot在平台中的定位,相关技术如何融合1) SpringBoot...
鲁山县18677693096: spring cloud微服务 和 rancher混合云 有什么区别 - ?
蔡闸甘油: spring boot 下个项目会用,作为app的服务端框架,spring boot 我理解就是把spring spring mvc spring data jpa 等等的一些常用的常用的基础框架组合起来,提供默认的配置,然后提供可插拔的设计,就是各种starter,来方便开发者使用这一系列的...
鲁山县18677693096: 如何使用 Java 和 Docker 构建微服务 - ?
蔡闸甘油: 在Java生态中,构建微服务的策略包括Container-less,Self-contained,以及In-container等.Container-less微服务将应用及其依赖打包成一个单一的jar文件.Self-contained微服务也是打包成一个单一的Jar文件,但它还包括一个嵌入式框架,这...
鲁山县18677693096: SOA和微服务架构的区别 - ?
蔡闸甘油: 微架构也是SOA的一种,只是其component更小更多而已. Spring等框架中,常有依赖注入,Ioc等技术,通过配置文件,决定API调用,一个不是很恰当的比喻,把这些API分开,包装成Service,放在网络上,每个有自己的process,通过与语言无关的协议通讯,类似Rest之类的,这就成了微架构. 据说,好处是容易deploy,更灵活,解耦;坏处是网络限制性能,不易确定系统state等等. 个人感觉,微架构只是把复杂性推到了其他的地方,过分强调解耦,可能造成不必要的细化,导致系统更为复杂,难以维护,不是很看好这种思路.
鲁山县18677693096: spring cloud,基于什么实现 - ?
蔡闸甘油: Spring Cloud的子项目,大致可分成两类,一类是对现有成熟框架”Spring Boot化”的封装和抽象,也是数量最多的项目;第二类是开发了一部分分布式系统的基础设施的实现,如Spring Cloud Stream扮演的就是kafka, ActiveMQ这样的角色....
鲁山县18677693096: 微信开发用什么程序/框架/架构 - ?
蔡闸甘油: 目前流行微服务前后端分离技术,Joolun微信快速开发框架用的是这个核心架构:Spring Boot2 + Spring Cloud Alibaba + Spring Cloud Gateway,安全框架:Spring Security OAuth2,前端框架:Vue2 + element-ui + avue2,持久层框架:MyBatis-plus,微信开发Java SDK:WxJava2.4.0 这是java的哦
鲁山县18677693096: Spring boot与Spring cloud 是什么关系 - ?
蔡闸甘油: spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式.spring boot 的优点是可以快速启动,快速构建应用程序,而不需要太多的配置文件.spring cloud 是分布式开发的解决方案,基于spring boot,在spring boot做较少的配置,便可成为 spring cloud 中的一个微服务