Spring Cloud微服务架构简介

栏目: Java · 发布时间: 5年前

内容简介:什么是微服务微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并且可通过全自动部署机制独立部署。这些服务共用一个最小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储技术。微服务架构应该具备以下特性:
编辑推荐:
本文来自于51cto,本文介绍了什么是Spring Cloud,Spring Cloud主要的功能及Spring Cloud服务治理。

什么是微服务

微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并且可通过全自动部署机制独立部署。这些服务共用一个最小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储技术。

微服务架构应该具备以下特性:

每个微服务可独立运行在自己的进程里。

一系列独立运行的微服务共同构建起整个系统。

每个服务为独立的业务开发,一个微服务只关注某个特定的功能,例如订单管理,用户管理等。

微服务之间通过一些轻量的通信机制进行通信,例如通过RESTful API进行调用。

可以使用不同的语言与数据存储技术

全自动部署机制

微服务架构的优点

易于开发和维护

一个微服务只会关注一个特定的业务功能,所以它业务清晰,代码量较少。

单个微服务启动较快

单个微服务代码量较少,所以启动会比较快。

局部修改容易部署

单体应用只要有修改,就得重新部署整个应用,微服务解决了这样的问题。

技术栈不受限

在微服务架构中,可以结合项目业务及团队的特点,合理地选择技术栈。

按需伸缩

可根据需求,实现细粒度的扩展。

微服务架构面临的挑战

运维要求高

更多的服务意味着更多的运维投入。

分布式固有的复杂性

使用微服务架构是分布式系统。对于一个分布式系统,系统容错,网络延迟,分布式事务等都会带来巨大的挑战。

接口调整成本高

微服务之间通过接口进行通信。如果修改某一个微服务的API,可能所有使用了该接口的微服务都需要做调整。

重复劳动

很多服务可能都会使用到相同的功能,而这个功能并没有达到分解为一个微服务的程度,这个时候,可能各个服务都会开发这一功能,从而导致代码重复。

微服务整体架构图

Spring Cloud微服务架构简介

服务注册于发现

各个服务在启动时,将自己的网络地址等信息注册到服务发现组件中,服务发现组件会存储这些信息。

服务消费者可以从服务发现组件查询服务提供者的网络地址,并使用该地址调用服务提供者的接口。

各个微服务与服务发现组件使用一定机制(例如心跳)通信。服务发现组件如长时间无法与某为服务实例通信,就会注销该实例。

微服务网络地址发生变更(例如实例增减或者IP端口发生变化等)时,会重新注册到服务发现组件。使用这种方式,服务消费者就无须人工修改提供者的网络地址了。

Spring Cloud微服务架构简介

Fegion实现声明式REST调用

REST(Representational State Transfer ),用中文翻译为"具象状态传输"(也有:"代表性状态传输")。是由 Roy Thomas Fielding博士 在2000年就读加州大学欧文分校期间在学术论文中提出的一个术语。REST 定义了一组体系架构原则,您可以根据这些,包括使用不同语言编写的客户端如何通过 HTTP 处理和传输资源状态。Feign是一个声明式的WebService客户端。使用Feign能让编写WebService客户端更加简单,它的使用方法是定义一个接口,然后在接口上添加注解,同时也支持JAX-RS标准的注解。Feign也支持可插拔式的编码器和×××。SpringCloud对Feign进行了封装,使其支持SpringMVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。

使用Hystrix实现微服务的容错处理

Hystrix是由Netflix开源的一个延迟和容错库,用于隔离访问远程系统,服务或者第三方库,防止级联失败,从而提升系统的可用性和容错性。Hystrix主要通过以下几点实现延迟和容错。

包裹请求:使用HystrixCommand包裹对依赖的调用逻辑,每个命令在独立线程中执行。这使用到了 设计模式 中的“命令模式”。

跳闸机制:当某服务的错误率超过一定阈值时,Hystrix可以自动或者手动跳闸,停止请求该服务一段时间。

资源隔离:Hystrix为每个依赖都维护了一个小型的线程池(或者信号量)。如果该线程池已满,发往该依赖的请求就被立即拒绝,而不是排队等候,从而加速失败判定。

监控:Hystrix可以近乎实时地监控运行指标和配置变化,例如成功,失败,超时以及被拒绝的请求等。

回退机制:当请求失败,超时,被拒绝,或当断路器打开时,执行回退逻辑。回退逻辑可由开发人员自行提供,例如返回一个缺省值。

自我修复:断路器打开一段时间后,会自动进入“半开”状态。

如果没有容错处理,“基础服务故障”导致“级联故障”从而形成右边的雪崩效应

Spring Cloud微服务架构简介

使用Zuul构建微服务网关

Zuul是Netflix开源的微服务网关,它可以和Eureka,Ribbon,Hystrix等组件配合使用。Zuul的核心是一系列的过滤器,这些过滤器可以完成以下功能。

身份认证与安全

动态路由

压力测试

负载分配

静态响应处理

多区域弹性

Zuul大部分功能是通过过滤器实现的,如右图所示。

Spring Cloud微服务架构简介

使用Spring CloudConfig统一管理微服务配置

Spring Cloud Config支持在Git, SVN和本地存放配置文件,使用Git或者SVN存储库可以很好地支持版本管理,Spring默认配置是使用Git存储库。具有如下优点:

集中管理配置:一个使用微服务架构的应用系统可能会包含成百上千个微服务,因此几种管理配置是非常有必要的。

不同环境不同配置:例如,数据源配置在不同的环境(开发,测试,预发布,生产等)中是不同的。

运行期间可动态调整:例如可根据各个微服务的负载情况,动态调整数据源连接池大小或熔断阈值,并且在调整配置是不停止微服务。

配置修改后可自动更新。如配置内容发生变化,微服务能够自动更新配置。

Spring Cloud微服务架构简介

Spring Cloud服务治理

注册中心监控

Spring Cloud微服务架构简介

容错处理监控

Spring Cloud微服务架构简介

微服务健康检查

Spring Cloud微服务架构简介

微服务调用追踪

Spring Cloud微服务架构简介


以上所述就是小编给大家介绍的《Spring Cloud微服务架构简介》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

需求

需求

[美] 亚德里安•斯莱沃斯基(Adrian J. Slywotzky)、[美]卡尔•韦伯 (Karl Weber) / 魏薇、龙志勇 / 浙江人民出版社 / 2013-6 / 64.9

《财富汇•需求:缔造伟大商业传奇的根本力量》内容简介:需求,是缔造伟大商业传奇的根本力量。《财富汇•需求:缔造伟大商业传奇的根本力量》呈现了人们无法拒绝、竞争对手无法复制的需求创造的六大关键,在人们无奈接受的现状和心中真正期待的理想的这道鸿沟之上,架设起了一道桥梁。 创造需求,需要解开一个谜团,这个谜团是人类学、心理学、科技、设计、经济学、基础设施以及其他众多因素综合而成的奇特组合。《财富汇......一起来看看 《需求》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具