SpringCloud 主要组件说明及简单搭建过程

搭建
  • idea创建project 选择maven 点击next
  • 删除掉src文件夹
  • 在项目上右键,new->module->next->选择你要建的这个Module是作什么用的
组件
  • eureka-server 核心服务注册与发现
  • eureka-client discovery服务客户端包含了ribbon
  • gateway 网关,也就是统一的访问服务的入口路径
  • fegin 服务间调用,其实简单理解为一个http-client工具包即可,帮你完成组建调用服务参数,发起请求,调用ribbon寻找合适的机器,最终拼装,请求到真正的服务;一般和hystrix熔断器一块使用
  • ribbon 客户端负载使用,比如A服务,部署了多机,由ribbon自动完成治理和负载
  • hystrix 熔断器,某个服务有问题的时候,自动调用异常处理
  • admin 官方提供的监控,分为server和client,需要先创建server,再其它服务里只需要加下amdin-client依赖即可
使用逻辑
  • 先建立SpringCloud项目
  • 建立注册中心Server的Module 【EurekaServer】
  • 配置文件修改为yml,也可以不修改。
spring:  
  application:
    name: eureka-server #服务名称,自定义
  security:
    user:
      name: user  #配置BASIC认证登录的账号
      password: 000000  #配置BASIC认证登录的密码
server:  
  port: 5001
eureka:  
  server:
    renewal-percent-threshold: 0.5
  client:
    register-with-eureka: false    #禁止注册自身
    fetch-registry: false #因为该服务没有注册到其他注册中心,所以关闭从注册中心拉取服务列表。
    #如果是服务注册中心集群,需要开启,开启就是去掉该配置,采用默认配置即可
    service-url:
      defaultZone: http://user:000000@localhost:5001/eureka/  #服务注册中心地址,http://账号:密码@主机名称:端口/Eureka/
  • 在应用入口的文件,加上注解:@EnableDiscoveryClient 标记为一个服务
  • 建立网关中心Gateway,选择【gateway】和【eureka-discovery】
  • 配置
server:  
  port: 5004
spring:  
  # 开启 Gateway 服务注册中心服务发现
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
          lower-case-service-id: true #服务名使用小写
  application:
    name: gateway-server

eureka:  
  instance:
    prefer-ip-address: true
  client:
    service-url:
      defaultZone: http://user:000000@localhost:5001/eureka/ #注册到服务中心
# 配置Gateway日志等级,输出转发细节信息
logging:  
  level:
    org.springframework.cloud.gateway: debug
  • 在应用入口的文件,加上注解:@EnableDiscoveryClient 标记为一个服务
  • 建立监控中心SpringBootAdmin,选择【srping-boot-admin-server】和【eureka-discovery】
  • 配置
spring:  
  security:
    user:
      name: admin
      password: admin
    basic:
      enabled: true
  application:
    name: monitor-server #服务名
  boot:
    admin:
      probed-endpoints: env,metrics,trace,dump,jolokia,info,configprops,trace,logfile,refresh,flyway,liquibase,heapdump,activiti,hystrix.stream,turbine.stream

server:  
  port: 5005

eureka:  
  client:
    serviceUrl:
      defaultZone: http://user:000000@localhost:5001/eureka/      #服务注册中信地址,含有BASIC认证的用户名和密码
  instance:
    prefer-ip-address: true         #将IP注册到服务注册中心

#放开所有节点
management:  
  endpoints:
    web:
      exposure:
        include: '*'
  • 在应用入口的文件,加上注解:@EnableDiscoveryClient 标记为一个服务
  • 在应用入口的文件,加上注解:@EnableAdminServer 启用监控中心 标记为一个服务
  • 在需要监控的服务里加上下面的依赖,不需要再有额外配置
<dependency>  
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>2.1.0</version>
</dependency>  
  • 建立A服务,选择【eureka-discovery】及当前服务需要的其它依赖即可
  • 在应用入口的文件,加上注解:@EnableDiscoveryClient 标记为一个服务
  • 简单配置
server:  
  port: 5006
spring:  
  application:
    name: feign-provider

eureka:  
  client:
    serviceUrl:
      defaultZone: http://user:000000@localhost:5001/eureka/      #服务注册中信地址,含有BASIC认证的用户名和密码
  instance:
    prefer-ip-address: true         #将IP注册到服务注册中心

#放开所有节点
management:  
  endpoints:
    web:
      exposure:
        include: '*'
  • 根据A服务就建立其它对应的服务即可,如果需要服务间调用,引入Feign依赖
  • 在应用入口的文件,加上注解:@EnableFeignClients 启用Feign,然后就定义feign使用到的服务接口及回调方法
启动顺序
  • 注册中心【必须第一个启用】
  • 网关中心
  • 监控中心
  • 其它服务

以上是简单的一些说明,网上说的最不好理解的就是feign和ribbon,其实这两个简单理解就是,在eureka里已经实现了ribbon,fegin是简单来说减少我们要写一堆的http请求这类操作,主要是可以调用ribbon寻找服务的真实服务地址,然后拼装为一个整体的请求包,进行调用。

一堆抗过来的。

郝先生

继续阅读此作者的更多文章