CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛

SpringCloud微服务架构篇3:SpringCloud简介-免费源码丞旭猿

微服务架构的核心关键点

1、微服务的服务治理

服务治理(服务注册及服务发现),通过服务发现,消费者可以在预先不知道服务提供者物理地址的情况下,仅通过相应的服务名称就可以实现服务调用。服务注册机制,可以让服务提供者在上线时将所提供的服务信息注册到服务治理服务器中,供服务消费者使用。当服务下线时将自己从服务治理服务器中注销,避免服务消费者调用而造成的异常。

2、微服务的负载均衡

客户端负载均衡,也称为软负载均衡,指在服务消费者保存有一份服务者列表,这份服务者列表通常是从服务治理服务器中动态获取,也可以采用股东配置方式,然后通过某种负载均衡策略来决定每次服务调用时所使用的具体服务实例,从而实现微服务之间的负载均衡。

3、微服务的统一入口

API服务网关就是为微服务提供了一个统一入口,并能够附加一些路由规则,使得不同的微服务通过路由规则提供一致的访问入口。

4、微服务的容错

微服务架构的容错提出了断路器、服务降级等模式,这些模式都可以有效防止微服务调用失败而引起的连锁反应,并且在必要时可以通过这些模式主动实施应用的降级处理,从而保证核心业务的正常运行。

5、微服务的统一配置

对微服务架构中,数十个、上百个实例,统一对配置进行管理和发布更新。

6、微服务的监控

日志多由服务实力自己管理,如何将分散在多个日志之间的调用串联起来,形成一个完整的请求调用链。微服务监控中提供了日志聚合、日志可视化分析、调用链跟踪等。

7、微服务的部署

通过构建-发布管道来构建自动化发布流程,可以通过Docker工具快速部署,通过k8s来构建自动化部署编排等。

Spring Cloud技术

SpringCloud使用Spring Boot风格将比较成熟的微服务框架组合起来,屏蔽掉了复杂的配置和实现原理,为快速构建微服务架构的应用提供了一套设施工具和开发支持。

所提供的基础设置,如服务发现、客户端负载均衡、API网关、微服务容错、统一配置中心、消息总线及微服务调用监控等,都可以做到一键启动和部署。

Spring Cloud所提供的核心功能包含:

基于Netfilix实现服务治理、客户端负载均衡和声明式调用;服务网关微服务容错管理整合消息中间件提供消息驱动式开发基于Spring Security提供微服务安全、单点登录功能分布式、版本化的统一配置管理微服务调用链及追踪管理Spring Cloud子项目

对于Spring Cloud旗下的子项目大致可以分为两类:一类是对现有成熟的第三方开源项目Spring Boot化,进行封装集成,使得我们基于Spring的开发非常容易集成和使用。第二类是新增一些微服务架构开发所需的基础设置,如Spring Cloud Config提供了统一配置中心、Spring Clound Stream则充当了与Kafka、RabbitMQ等消息中间件快速集成的桥梁。

1、Spring Clound与Spring Boot

Spring Boot可以说是微服务架构的核心技术之一,快速启动,通过Spring Boot应用中添加Spring MVC依赖,就可以快速实现基于REST架构的服务接口,并且可以提供堆HTTP标准动作的支持。而且Spring Boot默认提供JackJson序列化支持,可以让服务接口输入、输出支持JSON。当使用Spring Cloud进行微服务架构开发时,必须要Spring Boot。

2、Spring Cloud与服务治理

服务治理是Spring Cloud的核心,在实现上提供了连个选择,即Consul和Netflix的Eureka。

Eureka提供了服务注册中心、服务发现客户端,以及注册服务的UI界面应用。在Eureka的实现中,节点之间相互平等,有部分注册中心挂掉也不会对整个应用造成影响,即使集群只剩下一个节点存活,也可以正常地治理服务。即使所有服务注册节点都宕机,Eureka客户端中所缓存的服务实例列表信息,也可让服务消费能够正常工作,从而保障微服务之间互相调用的健壮性和应用的弹性。

3、Spring Cloud与客户端负载均衡

Ribbon默认与Eureka进行无缝整合,当客户端启动的时候,从Eureka服务器中获取一份服务注册列表并维护在本地,当服务消费者需要调用时,Ribbon就会根据负载均衡策略选择一个合适的服务提供者实例并进行访问。

通过在微服务调用时通过RestTemplate进行调用,这时需要开发者处理参数、调用路径等,Spring Cloud通过集成Netflix的Feign项目,为开发者提供了声明式服务调用,从而简化了微服务之间的调用处理方式。并且默认Feigin项目集成了Ribbon,使得声明式调用也支持客户端负载均衡功能。

4、Spring Cloud与微服务容错、降级

微服务容错、降级旨在为微服务架构提供更大的弹性,通过Hystrix提供的@HystrixCommand注解可以轻松为我们所开发的微服务提供容错、回退、降级等功能。另外,Hystrix也默认集成到Fegin子项目中。

Hystrix是根据断路器模式而创建。当Hystrix监控到某服务单元发生故障之后,就会进入服务熔断处理,并向调用方返回一个符合预期的服务降级处理(fallback),而不是长时间的等待或者抛出调用异常,从而保障服务调用方的线程不会被长时间、不必要地占用,避免故障在应用中的蔓延造成的雪崩效应。

而Hystrix的仪表盘项目(Dasgboard)可以监控各个服务调用所消耗的时间、请求数、成功率等。通过这种近乎实时的监控和告警,可以及时发现系统中潜在问题并进行处理。

5、Spring Clond与服务网关

Spring Cloud通过集成Netflix中的Zuul实现API服务网关功能,提供对请求的路由和过滤两个功能,其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础。过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础。通过Zuul,可以将细粒度的服务组合起来提供一个粗粒度的服务,所有请求都导入一个统一的入口,对外整个服务只需要暴露一个API借口,屏蔽了服务端的实现细节。通过Zuul的反向代理功能,可以实现路由寻址,将请求转发到后端的粗粒度服务上,并做一些通用的逻辑处理。

Zuul默认会与Eureka服务器进行整合,自动从Eureka服务器中获取所有注册的服务并进行路由映射,实现API服务网关自动配置。

6、Spring Cloud与消息中间件

Spring Cloud提供了Stream项目,通过建立消息应用抽象层,构建了消息收发、分组消费和消息分片等功能处理,将业务应用中的消息收发与具体消息中间件进行解耦,使微服务应用开发中可以非常方便地与Kafka和RabbitMQ等消息中间件进行集成。

此外,Spring Cloud Bus基于Stream进行扩展,可以作为微服务之间的事件、消息总线,用于服务集群中状态变化的传播,比如Spring Cloud Config借助Bus,可以实现配置的动态刷新处理。

7、Spring Cloud与分布式配置中心

Spring Cloud Config具有中心化、版本控制、支持动态更新和语言独立等特性。在Config子项目中将微服务应用分为两种角色:配置服务器(Config Server)和配置客户端(Config Client)。使用配置服务器集中地管理所有配置属性文件,配置服务中心可以将配置属性文件存储到Git、SVN等具有版本管理仓库中,也可以存放在文件系统中。默认采用Git的方式进行存储,因此可以很容易地对配置文件进行修改,并实现版本控制。

8、Spring Cloud与微服务链路追踪

Sleuth核心思想就是通过一个全局的ID将分布在各微服务结点上的请求处理串联起来,还原了调用关系,并借助数据埋点,实现对微服务调用链路上的性能数据的采集。因此,通过Sleuth可以很清楚地了解到一个用户请求经过了哪些服务、每个服务处理花费了多长时间,从而可以对用户的请求进行分析。

此外,通过将采集的数据发送给Zipkin进行存储、统计和分析,从而可以实现可视化的分析和展示,帮助开发者对微服务实施优化处理。

9、Spring Cloud与微服务安全

Spring Cloud Security提供了一个认证和鉴权的安全框架,实现了资源授权、令牌管理等功能,同时结合了Zuul可以将认证信息在微服务调用过程中直接传递,简化了我们进行安全管控的开发。此外,因为Spring Cloud Security默认支持OAuth 2.0认证协议,因此单点登录也可以非常容易实现,并且OAuth 2.0所生成的令牌可以使用JWT的方式,进一步简化了微服务中的安全管理。

10、Spring Cloud其他子项目

Spring Cloud Cli:提供了以命令行和脚本的方式来管理微服务。Spring Cloud Data Flow:一个用于开发、执行大数据处理的统一编程模型和托管服务。其基于原生云,并重新对Spring XD进行设计,简化了大数据应用的开发,为基于微服务的分布式流处理和批处理数据通道提供了一系列模型和最佳实践。Spring Cloud Task:用于短时的任务管理和调度微服务管理,通过与Data Flow一起使用。Spring Cloud Starters:类似于Spring Boot的启动项目,为基于Spring Cloud的微服务开发提供开箱即用的依赖管理Spring Cloud Contract:面向Java的契约框架,消费者驱动的,旨在帮助开发者完成微服务测试的子项目。Spring Cloud优点

Spring Cloud作为Spring Boot的传承,遵循约定优于配置的原则,在使用时不需要复杂的配置就可以运行起来,学习曲线低。Spring Cloud中大部分子项目开箱即用,采用自动化配置机制,使用门槛低。Spring Cloud属于Spring大家族,Spring是进行企业级开发的首选框架,因此在项目中引入Spring Cloud的技术成本低。Spring Cloud的口号就是开发面向云环境的应用程序,通过集成成熟的第三方开源组件,为微服务架构的开发提供了全方位的支持,并且在Spring系列下后续的更新、完善都有保障。Spring Cloud抛弃了传统的RPC通信,采用了基于HTTP的REST方式,使得微服务接口更为灵活,服务提供者和消费者之间的依赖只需要连接即可,而不存在代码级别的强依赖,这对快速演化的微服务架构更合适。Spring Cloud并没有限制所使用的环境,可以与异构系统进行整合。同时对于所提供的各组件服务即可单独部署,又可集中部署,方便了运维和管理。

举报/反馈

声明:本文部分素材转载自互联网,如有侵权立即删除 。

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
相关推荐
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容