• 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

  • 相关阅读:
    centos通过yum安装php
    CentOS6 用yum安装mysql详解,简单实用
    启用CentOS6.5 64位安装时自带的MySQL数据库服务器
    Python三方库:Pandas(数据分析)
    Python三方库:Numpy(数组处理)
    Java笔记:反射,注解
    Java笔记:多线程
    Java笔记:IO流
    Java笔记:集合
    Java笔记:数组,异常,泛型
  • 原文地址:https://www.cnblogs.com/q964024886/p/11658126.html
Copyright © 2020-2023  润新知