Java提升营

前一篇讲了Spring Cloud断路器组件,本篇文章基于上一篇文章的项目开展,没看过上篇的先去上一篇文章了解一下。这篇文章我们讲一下智能路由Zuul的使用。

Zuul简介

Zuul的主要功能是路由转发和过滤器。路由功能是微服务的一部分,比如/api/user转发到到user服务,/api/shop转发到到shop服务。zuul默认和Ribbon结合实现了负载均衡的功能。

阅读全文 »

在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+RibbonFeign来调用。为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,Servlet容器的线程资源会被消耗完毕,导致服务瘫痪。服务与服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的“雪崩”效应。

为了解决这个问题,业界提出了断路器模型。

阅读全文 »

在上一篇文章,讲解了通过RestTemplate+Ribbon消费服务,今天主要讲述怎样通过Feign去消费服务。

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客户端。

阅读全文 »

前一篇讲了服务注册和发现,没有看过的朋友先看上一篇,这篇是在上一篇基础上展开。

Ribbon简介

Ribbon is a client side load balancer which gives you a lot of control over the behaviour of HTTP and TCP clients. Feign already uses Ribbon, so if you are using @FeignClient then this section also applies.

阅读全文 »

Spring cloud 简介

Spring Cloud为开发人员提供了快速构建分布式系统的工具(例如:配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式会话,集群状态等等)。 开发人员可以用Spring Cloud快速搭建具有以上功能的应用程序。 它们可以在任何分布式环境中正常工作,包括开发人员自己的笔记本电脑,裸机数据中心以及Cloud Foundry等托管平台。

创建服务注册中心

我们创建一个工程来作为服务注册中心,下面详细说一下创建过程:

阅读全文 »

我每天使用 Git ,但是很多命令记不住。

一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。

阅读全文 »

假设您有多个用户使用的系统,其中每个用户都试图同时修改同一实体。当并发访问时,如何确保数据的完整性?

持久性提供了一种锁的策略来管理并发。锁有两种类型:乐观锁和悲观锁。在深入研究锁策略之前,让我们学习一下ACID事务。

ACID(原子性,一致性,隔离性,持久性)事务可确保数据库事务及时完成。关系数据库(例如MySQL,Postgres,SQL Server和Oracle)都符合ACID。

阅读全文 »

如果要删除本地的镜像,可以使用 docker image rm 命令,其格式为:

1
$ docker image rm [选项] <镜像1> [<镜像2> ...]

用 ID、镜像名、摘要删除镜像

其中,<镜像> 可以是 镜像短 ID镜像长 ID镜像名 或者 镜像摘要

阅读全文 »

列出镜像

要想列出已经下载下来的镜像,可以使用 docker image ls 命令。

1
2
3
4
5
6
7
8
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 5f515359c7f8 5 days ago 183 MB
nginx latest 05a60462f8ba 5 days ago 181 MB
mongo 3.2 fe9198c04d62 5 days ago 342 MB
<none> <none> 00285df0df87 5 days ago 342 MB
ubuntu 18.04 f753707788c5 4 weeks ago 127 MB
ubuntu latest f753707788c5 4 weeks ago 127 MB
阅读全文 »

获取镜像

Docker Hub 上有大量的高质量的镜像可以用,这里我们就说一下怎么获取这些镜像。

从 Docker 镜像仓库获取镜像的命令是 docker pull。其命令格式为:

1
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

具体的选项可以通过 docker pull --help 命令看到,这里我们说一下镜像名称的格式。

阅读全文 »