SpringCloud学习笔记

SpringCloud是一个基于SpringBoot的微服务框架,它为开发人员提供了快速构建分布式系统中常用的模块。

架构图

在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现、服务消费、负载均衡、熔断器、智能路由、配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统。一个简单的微服务系统如下图:

服务列表

spring-cloud-dependencies -->统一依赖管理

spring-cloud-eureka   -->服务注册与发现

spring-cloud-config    -->服务配置中心

spring-cloud-provider        -->服务提供者

spring-cloud-client-ribbon  -->服务消费者

spring-cloud-client-feign    -->服务消费者

spring-cloud-zipkin     -->服务链路追踪

spring-cloud-zuul        -->服务网关

spring-cloud-admin     -->服务监控

大合照

下面,我来解释一下这些服务哈...

1.服务注册与发现

Eureka,是 Spring Cloud Netflix 一个高可用的组件,向Eureka注册的实例需要向注册中心发送心跳(没有心跳连不上就当你挂了)。因此需要Erureka Server充当注册中心,然后将很多个Erureka Client注册到Erureka Server中。

① 在pom文件配置


② 在SpringBoot启动类中需注解@EnableEurekaServer


③ 表明自己是一个 Eureka Server


④ 启动Eureka之后,访问Eureka Server的端口,可以看到我已注册了好多Eureka Client

ps:后续可以学习zookeeper,分布式协调技术,也是服务注册与发现模块。

 

2. 服务配置中心

在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。Spring Cloud 有分布式配置中心组件 Spring Cloud Config,它支持配置服务放在远程 Git 仓库中。

① 在pom文件配置


② 在SpringBoot启动类中需注解@EnableConfigServer

③ 配置Git仓库


④ 启动服务配置中心,各个Config Client只需要在自己的yml中指定Config Server,就可以访问云配置中属于自己yml文件

ps:后续可以学习Apollo,也是开源配置管理中心。

 

3. 服务提供者

① 在pom文件配置


② 在SpringBoot启动类中需注解@EnableEurekaClient服务提供者和服务消费者都需要此注解,表明都是Eureka的客户端,都是弟弟。

③ 在yml文件中:要有自己的名字(服务唯一标志),自己的端口,以及要指向的Eureka Server(服务消费者类似,以下不在赘述)

④ 启动服务提供者,可以使用此服务

4. 服务消费者(Ribbon)

服务与服务的通讯是基于 http restful 的。Spring cloud 有两种服务调用方式,这一种是 Ribbon + RestTemplate。

① 在pom文件配置


② 需要自己定义restTemplate,然后放在Spring的IoC容器中,并且添加@LoadBalanced注解之后可实现负载均衡的效果

③ 服务提供者和服务消费者都已经注册到Eureka Server中,服务消费者可以只根据服务的名字,就可以找到对应的服务提供者,服务消费者不用管服务提供者的ip和port,这些已交给服务注册中心了。


④ 启动服务消费者(Ribbon),可以使用此服务(port=8764)来调用服务提供者的服务(port=8763),因此实现了服务与服务的调用

5. 服务消费者(Feign)

Spring cloud 有两种服务调用方式,而这一种是 Feign,它集成了Ribbon,默认拥有负载均衡的效果。使用 Feign,只需要创建一个接口并注解。在实现熔断器时,只需要实现服务的接口。

① 在pom文件配置


② 在启动类中使用这两个注解


③ 接口:根据服务名字调用服务提供者,以及有熔断处理

④ 实现此接口的的实现类,拥有熔断处理方法


⑤ 配置熔断器仪表盘


⑥ 用仪表盘可以监控熔断情况

 

6. 服务网关

Zuul,主要功能是路由转发和过滤器。路由功能是微服务的一部分,根据api转发到相应的服务。Zuul 默认和 Ribbon 结合实现了负载均衡的功能。

① 在pom文件配置


② 在启动类中使用这个注解


③ 在yml中配置路由


④ 实现过滤器(eg:这里根据是否携带token参数进行过滤)

⑤ api网关演示

7. 服务链路追踪

ZipKin,是一个开放源代码的分布式跟踪系统,用于收集服务的定时数据,以解决微服务架构中的延迟问题,包括数据的收集、存储、查找和展现。每个服务向  ZipKin 报告计时数据,ZipKin 会根据调用关系通过 ZipKin UI  生成依赖关系图,显示了多少跟踪请求通过每个服务,该系统让开发者可通过一个 Web  前端轻松的收集和分析数据,例如用户每次请求服务的处理时间等,可方便的监测系统中存在的瓶颈。(几乎要在所有的pom文件添加ZipKin的依赖)

① 在pom文件配置


② 在启动类中使用这个注解


③ 启动链路追踪服务ZipKin

 

8. 服务监控

Spring Boot Admin 是一套功能强大的监控管理系统。用于各个微服务系统的健康状态、会话数量、并发数、服务资源、延迟等度量信息的收集。(几乎要在所有的pom文件添加Admin  Client的依赖)

① 在Admin Server中pom文件配置

② 在启动类中使用这个注解

③ 启动服务监控


好了,小编今天已经肝到凌晨3点半了,先记录到这啦哈哈。

-END-

 

后续

个人博客地址:https://www.cnblogs.com/q964024886/

GitHub地址:https://github.com/wenhaixiong

posted @ 2019-10-12 03:33  街角de男孩  阅读(305)  评论(0编辑  收藏  举报