前一篇讲了Spring Cloud断路器组件,本篇文章基于上一篇文章的项目开展,没看过上篇的先去上一篇文章了解一下。这篇文章我们讲一下智能路由Zuul的使用。
Zuul简介
Zuul的主要功能是路由转发和过滤器。路由功能是微服务的一部分,比如/api/user转发到到user服务,/api/shop转发到到shop服务。zuul默认和Ribbon结合实现了负载均衡的功能。
前一篇讲了Spring Cloud断路器组件,本篇文章基于上一篇文章的项目开展,没看过上篇的先去上一篇文章了解一下。这篇文章我们讲一下智能路由Zuul的使用。
Zuul的主要功能是路由转发和过滤器。路由功能是微服务的一部分,比如/api/user转发到到user服务,/api/shop转发到到shop服务。zuul默认和Ribbon结合实现了负载均衡的功能。
在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud
可以用RestTemplate+Ribbon
或Feign
来调用。为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,Servlet容器的线程资源会被消耗完毕,导致服务瘫痪。服务与服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的“雪崩”效应。
为了解决这个问题,业界提出了断路器模型。
在上一篇文章,讲解了通过RestTemplate+Ribbon消费服务,今天主要讲述怎样通过Feign去消费服务。
Feign is a declarative web service client. It makes writing web service clients easier. To use Feign create an interface and annotate it. It has pluggable annotation support including Feign annotations and JAX-RS annotations. Feign also supports pluggable encoders and decoders. Spring Cloud adds support for Spring MVC annotations and for using the same HttpMessageConverters used by default in Spring Web. Spring Cloud integrates Ribbon and Eureka to provide a load balanced http client when using Feign.
Feign是一个声明式的web服务客户端,它使得写web客户端变得更简单。想要使用Feign,只需要创建一个接口并注解它。Feign具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign还支持可插拔的编码器和解码器。Spring Cloud添加了对Spring MVC注释的支持,并默认使用和Spring Web相同的HttpMessageConverters。当使用Feign时,Spring Cloud集成了Ribbon和Eureka以提供负载平衡的http客户端。
假设您有多个用户使用的系统,其中每个用户都试图同时修改同一实体。当并发访问时,如何确保数据的完整性?
持久性提供了一种锁的策略来管理并发。锁有两种类型:乐观锁和悲观锁。在深入研究锁策略之前,让我们学习一下ACID事务。
ACID(原子性,一致性,隔离性,持久性)事务可确保数据库事务及时完成。关系数据库(例如MySQL,Postgres,SQL Server和Oracle)都符合ACID。
要想列出已经下载下来的镜像,可以使用 docker image ls
命令。
1 | $ docker image ls |