700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 精通spring cloud 其实并不难 这篇文章就够了!

精通spring cloud 其实并不难 这篇文章就够了!

时间:2019-10-02 23:42:18

相关推荐

精通spring cloud 其实并不难 这篇文章就够了!

Spring Cloud概述

在“微服务简介”中,提到了云原生的开发风格,并且Spring Cloud 可以帮助开发人员轻松采用与此概念相关的最佳实践。实际上,在一个名为TheTwelve-Factor App (微服务+二要素)的趣味倡议中已经收集了一些最常用的最佳实践。该倡议App的访问地址为hts://fact/r.nct,中文版地址为htpt://factor.nctch.h _cn/。在该倡议中开宗明义地提出,软件通常会作为-种服务来交付,它们被称为网络应用程序,或软件即服务(Software as a Service, SaaS)。The Twelve-Factor App为构建Saas应用提供了方法论,它提出现代应用程序必须可扩展、可在云平台上轻松部署,并且可以按连续部署的方式交付。开发人员有必要熟悉这些原则,特别是,如果开发人员所构建的应用程序将作为服务运行的话,则更应该熟悉它们。Spring Boot和Spring Cloud 提供的功能和组件将使得开发人员的应用程序可以符合十二要素规则(Twelve Factor Rules)。开发人员可以区分最现代的分布式系统通常使用的一些典型特征。每一个遵守+二要素规则的框架都应该提供它们,Spring Cloud也不例外。

本章将要讨论的主题包括:

口分布式版本化配置。

口服务注册和发现。

口路由。

口服务和服务之间的调用。

口负载均衡。

口断路器。

口分布式消息传递。

从基础开始

在此之前,曾详细介绍了Spring Boot 项目的结构。开发人员应在YAML或properties文件中提供配置,并且应包含应用程序或pplication- frofil}名称。与标准的Spring Boot应用程序相比,Spring Cloud基于从远程服务器获取的配置。但是,应用程序内部仅需要最少的设置,如它的名称和配置服务器地址。这就是Spring Cloud应用程序需要创建Bostrap上下文(Bootrep Context) 的原因,这个Bostrop上下文将负责从外部源加载属性。

Botstrap属性以最高优先级添加,并且本地配置无法覆盖它们。Bootstrap 上下文是主应用程序上下文的父级,它将使用botstrap.yml而不是ppliationyml.一般来说, 可以将应用程序名称和Spring Cloud Config设置如下。

springapplication:name: person-servicecloud :config:uri: http://192.168.99.100:8888

通过将springcloud. bostrap.enabled属性设置为false, 开发人员可以轻松禁用Bootstrap. 上下文启动。此外,还可以使用spring.cloudbotstrap.name属性更改Bootstrap引导程序配置文件的名称,甚至可以通过设置spring cloud bostrap.location来更改其位置。因为这里也提供了配置文件机制,所以开发人员还可以创建诸如bostrapr developmentyml之类的文件,并将其加载到活动的开发配置文件(Development Profle)中。Spring CloudContext 库中提供了此功能和其他一些功能, 它将作为父依赖项(Parent Dependency)与任何其他Spring Cloud库-起添加到项目类路径中。在这些功能中,有一项是 Spring Boot Actuator附带的一些额外管理端点。

口env: 它是针对Environment的新POST方法,将执行日志级别的更新,并且重新绑定@ConfigurationProperties.

口refresh: 它将重新加载Botstrap. 上下文,并且刷新所有使用@RefreshScope 注解的bean。

口restar: 它将重新启动Spring ApplicationContext.

口pause: 它将停止Spring ApplicationContext.

口 resume: 它将启动Spring ApplicationContext.

和Spring Cloud Context-起使用的下一个库是Spring Cloud Commons,它同样作为父依赖项包含在Spring Cloud 项目中。它将为诸如服务发现、负载均衡和断路器之类的机制提供一个通用的抽象层,其中还包括一些常用的注解,如@ EnableDiscoveryClient或@LoadBalanced等。后续章节将介绍有关它们的详细信息。

Netlix OSS

在阅读本书前两章时,开发人员可能已经注意到许多与微服务架构相关的关键字的出现。对于部分开发人员来说,这可能是一个新名词,而对于其他人来说,这是众所周知的。但是到目前为止,本书尚未提及微服务网络社区的一个重要词汇。大多數人都知道,这个词就是Netlix (美国最大的在线DVD租赁商,中文名:奈飞公司)。很多人都喜欢该公司提供的电视节目和其他作品,但是对于开发人员来说,它是因其他原因而闻名的,这个原因就是微服务。Netix 是最早从创建单一的一体化应用程序的传统开发模式迁移到云原生微服务开发方法的先驱之一。 该公司通过将大部分源代码推送到公共存储库、在会议演示中发言以及发布博客帖文等方式来与网络社区分享其专业经验。Netlix架构的概念非常成功,它也成为其他大型企业的榜样,而它的IT架构师(如AdrianCockcroft 等)现在则是微服务的杰出传播者。此后,许多开源框架都基于Netlix 共享的代码提供了它们的解决方案库。Spring Cloud也不例外,它提供了与最流行的Netlix OsS功能的集成,这些功能包括Eureka、Hystrix、 Ribbon 和Zuul等。顺便说一句,不知道你是否一直关注Netlix, 但他们对自已决定开放大部分源代码的原因做出了清晰的阐述,我认为这值得引用,因为这也部分地解释了他们的解决方案在IT世界中大获成功和广受欢迎的原因:

“当我们说要将Netlix全部移植到云端时,每个人都说我们完全疯了。他们不相信我们实际上已经这样做了,他们认为我们只会把事情搞砸。

使用 Eureka进行服务发现

Spring Cloud Netflix 提供的第一个模式是使用Eureka的服务发现。该软件包分为客户端和服务器两部分。

要在项目中包含Eureka客户端,开发人员应该使用相应的spring coud-sarter-ureka启动器。客户端始终是应用程序的一部分, 负责连接到远程发现服务器。一旦建立起连接,它应该发送带有服务名称和网络位置的注册消息。如果当前微服务必须从另一个微服务调用端点,则客户端应该从服务器检索具有已注册服务列表的最新配置。服务器可以作为独立的Spring Boot应用程序进行配置和运行,并且应该设定为高度可用,每个服务器都可以将其状态复制到其他节点。要在项目中包含Eureka Server, 开发人员需要使用spring-cloud- starter-eureka-server启动器。

使用Zuul路由

在Spring Cloud Nettix项目下可用的下一个流行模式是使用Zzuul进行智能路由。它不仅是基于JVM的路由器,而且还可以充当服务器端负载均衡器或执行一些过滤。它还可以具有各种各样的应用。Netlix 将其用于身份验证、减轻负载、静态响应处理或压力测试等情况。它与Eureka Server的相同之处在于,它可以作为独立的Spring Boot应用程序进行配置和运行。要在项目中包含Zuul,需要使用spring-cloud-starter-zuul启动器。在微服务架构中,Zuul扮演着API网关的重要角色,它是整个系统的入口点。它需要了解每个服务的网络位置,因此它可以通过将发现客户端(Discovery Client)包含到类路径中来与Eureka Server进行交互。

使用 Ribbon实现负载均衡

Spring Cloud Netlix的下一个功能同样是开发人员不能忽视的,因为它就是用于实现客户端负载均衡的Ribbon. Ribbon支持最流行的协议,如TCP、UDP和HTTP等。它不仅可以用于同步REST调用,还可以用于异步和反应模型。除了负载均衡之外,它还能提供与服务发现、缓存、批处理和容错功能等的集成。Ribbon是建立在基本HTTP和TCP客户端之上的新抽象层次。

要将Ribbon包含在项目中,需要使用spring-cloud- strtr-ibbon启动器。Ribbon 支持轮询调度(Round Robin)算法、可用性过滤和现成可用的加权响应时间负载均衡规则(Weighted Response Time Load Balancing Rule),并且可以使用自定义规则对其进行轻松扩展。它将基于命名客户端(Named Client)概念,这意味着应该为包含负载均衡的服务器提供一个名称。

编写 Java HTTP客户端

Feign是一个受欢迎程度略低的Nettlix OSS软件包。它是-一个声明性REST客户端,可以帮助开发人员更轻松地编写Web服务客户端。使用Feign之后,开发人员只需要声明和注解接口,而实际的实现将在运行时生成。要在项目中包含Feign, 需要使用spring-cloud-starter-feign启动器。它可以与Ribbon客户端集成,因此在默认情况下就已经支持负载均衡和其他Ribbon功能,包括与发现服务的通信。

Hystrix 的延迟和容错能力

在“微服务简介”中已经提到了断路器模式,Spring Cloud提供了一个实现这种模式的库。它基于由Netlix创建的作为断路器实现的Hystrix软件包。默认情况下,Hystrix将与Ribbon 和Feign客户端集成在一起。 回退(Fallback) 与断路器概念密切相关。使用SpringCloud库,开发人员可以轻松配置回退逻辑,如果存在读取或断路器超时,则应执行该回退逻辑。要在项目中包含Hystrix,需要使用spring -cloud- sarer-hystrix启动器。

使用 Archaius进行配置管理

Spring Cloud Nettlix项目提供的最后- -个重要功能是Archaius.就个人而言,笔者尚未使用过这个库,但它在某些情况下可能会很有用。SpringCloud参考资料中称Archaius是Apache Commons Configuration项目的扩展。它允许通过轮询(Polling) 源的更改或将更改推送到客户端来更新配置。

本文给大家讲解的内容是Spring Cloud概述

下篇文章给大家讲解的是发现和分布式配置;觉得文章不错的朋友可以转发此文关注小编;感谢大家的支持!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。