微服务架构-实现技术之具体实现工具与框架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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java个人微信消息接收_java接口接收json数据

    java个人微信消息接收_java接口接收json数据微信公众平台java服务器认证、接收文本消息和图片消息并实现返回,订阅服务号实现了通过微信接收信息转发至java后台解析并回复的消息的简单功能,贡献出代码希望能给大家一个参考

    2022年8月21日
    8
  • 【Verilog】FPGA驱动Ov7670/Ov7725搭建视频通路(RGB565、灰度图)

    【Verilog】FPGA驱动Ov7670/Ov7725搭建视频通路(RGB565、灰度图)一、课题功能指标要求(一)课程目的• 加深对数字电路时序的理解;• 掌握OV系列摄像头输出时序;• 掌握I2C总线时序,以及使用verilog驱动三态门的方法;• 掌握数字系统设计的方法;(二)设计任务o 设计并利用FPGA实现OV7670(Ov7725)~VGA(320*240)显示器的视频通路;o (基本要求)设计I2C总线接口以及控制器,实现对摄像头的配…

    2025年11月12日
    5
  • Mybatis分页查询(通过SQL分页实现)[通俗易懂]

    Mybatis分页查询(通过SQL分页实现)[通俗易懂]Mybatis分页查询(通过SQL分页实现)前言实现有哪几种方式:网页分页(一次查询所有数据,加载到网页,那么适合数量小的操作)服务器端分页java程序中查询所有数据,网页需要哪一页,就给哪一页数据,会撑爆java服务器,建议查询缓存优化数据库分页请求一页数据,查询数据库即可本文采用Oracle中的rownum实现分页,数据表使用Oracle中Scott的EMP表一、搭建环境目录结构导入jar包mybatis-3.2.7.jarojdbc6.jar数

    2022年5月8日
    122
  • 使用QPM编写PHP 多进程程序

    使用QPM编写PHP 多进程程序QPM 全名是 QuickProcess PHP 是强大的 web 开发语言 以至于大家常常忘记 PHP 可以用来开发健壮的命令行 CLI 程序以至于 daemon 程序 而编写 daemon 程序免不了与各种进程管理打交道 QPM 正式为简化进程管理而开发的类库 以下是用 QPM 编写多进程程序的小例子 定义 mission1 每隔 3 秒打印一次进

    2025年9月16日
    4
  • 剖析PetShop 4

    剖析PetShop 4PetShop的系统架构设计前言:PetShop是一个范例,微软用它来展示.Net企业系统开发的能力。业界有许多.Net与J2EE之争,许多数据是从微软的PetShop和Sun的PetStore而来。这种争论不可避免带有浓厚的商业色彩,对于我们开发人员而言,没有必要过多关注。然而PetShop随着版本的不断更新,至现在基于.Net2.0的PetShop4.0为止,整个设计逐渐变得成熟而优雅,

    2022年10月17日
    4
  • 重复字符串 leetcode_字符串中出现最多的子串 leetcode

    重复字符串 leetcode_字符串中出现最多的子串 leetcode原题链接给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。 请注意,你的答案必须是 子串 的长度,”pwk

    2022年8月8日
    9

发表回复

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

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