微服务架构-实现技术之具体实现工具与框架3:Spring Cloud概述和基本讲解

微服务架构-实现技术之具体实现工具与框架3:Spring Cloud概述和基本讲解目录一、基本定义二、SpringCloud相关组件成员框架SpringCloudEurekaSpringCloudRibbonSpringCloudFeignSpringCloudHytrixSpringCloudZuulSpringCloudGatewaySpringCloudConfigSpringCloudAdmin…

大家好,又见面了,我是你们的朋友全栈君。

目录

一、基本定义

二、Spring Cloud相关组件成员框架

Spring Cloud Eureka

Spring Cloud Ribbon

Spring Cloud Feign

Spring Cloud Hytrix

Spring Cloud Zuul

Spring Cloud Gateway

Spring Cloud Config

Spring Cloud Admin

Spring Cloud Bus

Spring Cloud for Spring Foundry

Spring Cloud Sleuth

Spring Cloud Data Flow

Spring Cloud Security

Spring Cloud Consul

Spring Cloud  Zookeeper

Spring Cloud Stream

Spring Cloud  CLI

Spring Cloud Stream App Starters

Spring Cloud  Cluster

Spring Cloud  Connectors

Spring Cloud for Amazon Web Services

Spring Cloud SkyWalking

Spring Cloud Dubbo

Spring Cloud Servicemesh

参考书籍、文献和资料:


一、基本定义

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。

Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

二、Spring Cloud相关组件成员框架

Spring Cloud Eureka

Eureka是Netflix开发的服务发现组件,本身是一个基于REST的服务。

Spring Cloud将它集成在其子项目spring-cloud-netflix中,以实现Spring Cloud的服务发现功能。

目前Eureka 项目相当活跃,代码更新频繁,且Eureka 2.0也在开发中,2.0将会带来更强的功能和更好的扩展性,但是由于还没有Release,故而不作讨论。

Spring Cloud Ribbon

Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。

通过Spring Cloud的封装,可以让我们轻松地将面对服务的REST模块请求自动转换成客户端负载均衡的服务调用。Spring Cloud Ribbon几乎存在于每一个Spring Cloud构建的微服务和基础设施中。

Spring Cloud Feign

Feign 是一个声明web服务客户端,这便得编写web服务客户端更容易,使用Feign 创建一个接口并对它进行注解,它具有可插拔的注解支持包括Feign注解与JAX-RS注解,Feign还支持可插拔的编码器与解码器,Spring Cloud 增加了对 Spring MVC的注解,Spring Web 默认使用了HttpMessageConverters, Spring Cloud 集成 Ribbon 和 Eureka 提供的负载均衡的HTTP客户端 Feign。

Spring Cloud Hytrix

在一个分布式系统中,必然会有部分系统的调用会失败。

Hystrix是一个通过添加超时容错和失败容错逻辑来帮助你控制这些分布式系统的交互。

Hystrix通过隔离服务之间的访问,阻止他们之间的级联故障以及提供后背选项来实现这些,所有新而这些都用来提高系统的整体弹性。

Spring Cloud Zuul

Zuul是Netflix开源的微服务网关组件,具有动态路由、过滤、压力测试、监控、弹性伸缩和安全等功能。

Zuul和Ribbon以及Eureka相结合,可以实现智能路由和负载均衡的功能,可以将流量按照某种策略分发到集群中的多个实例。 
Zuul统一对外暴露接口,外界系统不需要知道微服务系统中各服务之间调用的复杂性,也保护了内部微服务的api接口。 
Zuul可以统一做用户身份认证,权限验证,这样就不用在每个微服务中进行认证了。 
Zuul可以统一实现监控、日志的输出。 
客户端请求多个微服务时,可以只请求Zuul一次,在Zuul中请求多个微服务,减少客户端和微服务的交互次数。

Spring Cloud Gateway

Spring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术开发的网关

Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。

这里需要注意一下gateway使用的netty+webflux实现,不要加入web依赖,需要加入webflux依赖。

gateway与zuul的区别的简单比较:gateway使用的是异步请求,zuul是同步请求,gateway的数据封装在ServerWebExchange里,zuul封装在RequestContext里。

过滤器:gateway有两种filter,一种是GlobalFilter一种是GatewayFilter,全局过滤器默认对所有路由有效,gatewayFilter需要进行指定。

Spring Cloud Config

Spring Cloud 为开发人员提供了一系列的工具来快速构建分布式系统的通用模型 。

例如:配置管理、服务发现、断路由、智能路由、微代理、控制总线、一次性Token、全局锁、决策竞选、分布式session、集群状态等等。

分布式系统的协助需要一大堆的模型,使用Spring Cloud开发者能快速的建立支持实现这些模式的服务和应用程序。他们将适用于任何分布式环境,无论是开发者的个人电脑还是生产环境,还是云平台。

Spring Cloud Admin

Spring Boot提供的监控接口,例如:/health、/info等等,实际上除了之前提到的信息,还有其他信息业需要监控:当前处于活跃状态的会话数量、当前应用的并发数、延迟以及其他度量信息。下面我们来了解如何使用spring-boot-admin来监控我们的系统。

Spring Cloud Bus

Spring Cloud Bus将Spring的事件处理机制和消息中间件消息的发送和接收整合起来,可以轻松的将分布式应用中连接有消息中间件的多个服务节点连接起来,实现消息互通。

Spring Cloud for Spring Foundry

将应用程序与Pivotal Cloudfoundry集成。

提供服务发现实现,还可以轻松实现通过SSO和OAuth2保护资源,还可以创建Cloudfoundry服务代理。

Spring Cloud Sleuth

适用于Spring Cloud应用程序的分布式跟踪,与Zipkin,HTrace和基于日志(例如ELK)跟踪兼容。

Spring Cloud Data Flow

针对现代运行时的可组合微服务应用程序的云本地编排服务。

易于使用的DSL,拖放式GUI和REST-API一起简化了基于微服务的数据管道的整体编排。

Spring Cloud Security

在Zuul代理中为负载平衡的OAuth2休眠客户端和认证头中继提供支持。

Spring Cloud Consul

Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件。

Spring Cloud  Zookeeper

Zookeeper的服务发现和配置管理。

Spring Cloud Stream

轻量级事件驱动的微服务框架,可快速构建可连接到外部系统的应用程序。

使用Apache Kafka或RabbitMQ在Spring Boot应用程序之间发送和接收消息的简单声明式模型。

Spring Cloud  CLI

基于 Spring Boot CLI,可以让你以命令行方式快速建立云组件。

Spring Cloud Stream App Starters

Spring Cloud任务应用程序启动器是Spring Boot应用程序,可能是任何进程,包括不会永远运行的Spring Batch作业,并且它们在有限时间的数据处理之后结束/停止。

Spring Cloud  Cluster

提供在分布式系统中的集群所需要的基础功能支持。

Spring Cloud  Connectors

使PaaS应用程序在各种平台上轻松连接到后端服务,如数据库和消息代理(以前称为“Spring Cloud”的项目)。

Spring Cloud for Amazon Web Services

轻松集成托管的Amazon的Web Services服务。它通过使用spring的idioms和APIs便捷集成AWS服务,例如缓存或消息API。开发人员可以围绕托管服务,不必关心基础架构来构建应用。

Spring Cloud SkyWalking

被用于追踪、监控和诊断分布式系统,特别是使用微服务架构,云原生或容积技术。主要功能如下:分布式追踪和上下文传输、应用、实例、服务性能指标分析、根源分析、应用拓扑分析、应用和服务依赖分析、慢服务检测、性能优化

Spring Cloud Dubbo

由于遗留Dubbo系统比较庞大,短期之内无法完成技术栈的迁移。

因此需要“分步走”,即:初期实现两者共存,后期逐步绞杀Dubbo应用,最终实现技术栈的统一。

借助Ribbon调用Dubbo应用

使用Sidecar,Dubbo微服务必须实现健康检查(对于Spring Boot程序即:添加spring-boot-starter-actuator依赖)。

将Dubbo应用也注册到Eureka上。

相关代码:

Spring Cloud Servicemesh

Service Mesh又称为服务网格,本质上就是我们前面介绍过的模式三。

之所为称之为服务网格是因为按照模式三的结构,每个主机上同时运行了业务逻辑代码和代理,此时这个代理被形象地称之为SideCar(业务代码进程相当于主驾驶,共享一个代理相当于边车),服务之间通过SideCar发现和调用目标服务,从而形成服务之间的一种网络状依赖关系,然后通过独立部署的一种称之为控制平面(ControlPlane)的独立组件来集中配置这种依赖调用关系以及进行路由流量调拨等操作,如果此时我们把主机和业务逻辑从视觉图上剥离,就会出现一种网络状的架构,服务网格由此得名。

参考书籍、文献和资料:

【1】郑天民. 微服务设计原理与架构. 北京:人民邮电出版社,2018.

【2】https://blog.csdn.net/zhanglu0223/article/details/80613213.

【3】https://blog.csdn.net/chengqiuming/article/details/81120921.

【4】http://www.cnblogs.com/xiaojunbo/p/7094377.html.

【5】https://blog.csdn.net/hzq472583006/article/details/81110443.

【6】https://blog.csdn.net/chayangdz/article/details/81533659.

【7】https://www.cnblogs.com/meetzy/p/9670279.html.

【8】https://www.cnblogs.com/zhangjianbin/p/6322476.html.

【9】https://blog.csdn.net/u014320421/article/details/79708622.

【10】https://blog.csdn.net/xichenguan/article/details/77535694.

【11】https://blog.csdn.net/longdan3105/article/details/79062274.

【12】http://spring.io/projects/spring-cloud.

【13】https://blog.csdn.net/u014172271/article/details/83511202.

【14】https://my.oschina.net/eacdy/blog/893500.

【15】https://www.cnblogs.com/tianyamoon/p/10106587.html.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/130611.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • android加密设备,用于Android手机的加密设备和加密外部SD卡

    android加密设备,用于Android手机的加密设备和加密外部SD卡电话被盗或丢失后,隐私将被泄露.Android手机具有“加密设备”和“加密外部SD卡”功能.那么这两个功能有什么区别?加密设备加密设备后,内置SD卡上的所有数据将被加密.此部分主要用于保护和SMS的隐私.加密设备后,即使将设备重置为出厂设置也无法解密数据.加密的外部SD卡加密外部SD卡可以保护SD卡上的所有数据.这部分数据主要用于保护用户的某些图片和私人文件,并防止照片.如果未解密加…

    2022年5月16日
    45
  • Autoconf简介「建议收藏」

    Autoconf简介「建议收藏」Autoconf是一个用于生成shell脚本的工具,可以自动配置软件源代码以适应多种类似POSIX的系统。为了让你的软件包在所有的不同系统上都可以进行编译。GNU构建系统Autoconf解决了系统特使构建和运行时信息的难题,但在软件开发时还有更多的难题,GNU构建系统是为了更好的开发软件而开发的一套完整的公益事业。主要组成部分有Autoconf、Automake和Libtool。Auto…

    2022年5月4日
    37
  • Oracle insert into select大数据量踩过的坑

    Oracle insert into select大数据量踩过的坑1、简单粗暴insertintotable1select*fromtable2;commit;灰度环境机器配置不好,二百多万数据十来分钟没有导完,产生大量归档日志。删除索引约束后可能要好点。大数量有风险,可能会导致归档日志撑爆。2、nologgingaltertabletable1nologging;insert/*+append*/intotable…

    2022年7月15日
    86
  • 异步发送邮件完整示例

    异步发送邮件完整示例

    2022年2月13日
    44
  • 〖EXP〗NSA MS17010永恒之蓝漏洞一键工具「建议收藏」

    〖EXP〗NSA MS17010永恒之蓝漏洞一键工具「建议收藏」漏洞简介永恒之蓝是指2017年4月14日晚,黑客团体ShadowBrokers(影子经纪人)公布一大批网络攻击工具,其中包含“永恒之蓝”工具,“永恒之蓝”利用Windows系统的SMB漏洞可以获取系统最高权限。5月12日,不法分子通过改造“永恒之蓝”制作了wannacry勒索病毒,英国、俄罗斯、整个欧洲以及中国国内多个高校校内网、大型企业内网和政府机构专网中招,被勒索支付高额赎金才能解密恢复文件。漏洞检测无损检测,不会对目标造成任何危害,大家无需担心Ladon192.168.1.8MS1701

    2022年6月3日
    162
  • Java高级工程师常见面试题(答案)[通俗易懂]

    Java高级工程师常见面试题(答案)[通俗易懂]Java高级工程师常见面试题2017年02月17日12:46:00阅读数:17280一、Java基础1.String类为什么是final的。   1.线程安全2.支持字符串常量池数据共享,节省资源,提高效率(因为如果已经存在这个常量便不会再创建,直接拿来用)  2.HashMap的源码,实现…

    2022年6月12日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号