SpringCloud 进阶之SpringCloud

1. Eureka 服务注册与发现

  • Eureka 是一个基于REST的服务,用于服务的的注册与发现;
  • Eureka采用C-S的设计架构,Eureka Server作为服务注册功能的服务器,它是服务注册中心;
  • Eureka包含两个组件:Eureka Server 和 Eureka Client
    • Eureka Server提供服务注册和发现;
    • Eureka Client是一个java客户端;

1.1 三大角色

  • Eureka Server提供服务注册和发现;
  • Service Provider服务提供方将自身服务注册到Eureka,从而使服务消费方能够找到;
  • Service Consumer服务消费方从Eureka获取注册服务列表,从而能够消费服务;

1.2 Eureka 服务注册中心Module(microservicecloud-eureka-7001)

// pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.noodles.springcloud</groupId>
    <artifactId>microservicecloud</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>

  <artifactId>microservicecloud-eureka-7001</artifactId>
  <dependencies>
      <!-- eureka-server 服务端 -->
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka-server</artifactId>
      </dependency>
      <!-- 修改后立即生效,热部署 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>springloaded</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
  </dependencies>
</project>

// application.yml
server:
  port: 7001

eureka:
  instance:
    hostname: localhost  #eureka服务端的实例名称
  client:
    register-with-eureka: false # false 表示不向注册中心注册自己
    fetch-registry: false   # false 表示自己就是注册中心,职责是维护服务实例,并不需要检索服务
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka
       #设置与Eureka Server交互的地址,查询和注册服务都需要依赖这个地址

// com.noodles.springcloud
// EurekaServer7001_App
@SpringBootApplication
@EnableEurekaServer  // EurekaServer 服务器端启动类,接收其他微服务注册进来
public class EurekaServer7001_App {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServer7001_App.class, args);
    }
}

// 测试
// 访问: http://localhost:7001

1.3 将已有的部门微服务注册进eureka服务中心(microservicecloud-provider-dept-8001)

// 修改microservicecloud-provider-dept-8001
// pom.xml 增加
<!-- 将微服务provider 注册进 eureka -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

// application.yml 增加
eureka:
  client: # 客户端注册进eureka服务列表内
    service-url:
      defaultZone: http://localhost:7001/eureka

// DeptProvider8001_App 主启动类
@SpringBootApplication
@EnableEurekaClient // 本服务启动后,自动注册进eureka服务中
public class DeptProvider8001_App {

    public static void main(String[] args) {
        SpringApplication.run(DeptProvider8001_App.class, args);
    }
}

// 测试
// 先要启动 EurekaServer,然后启动 DeptProvicer8001_App
// 访问:http://localhost:7001/

1.3.1 actuator 与注册微服务信息完善

  • 主机映射名称修改
  • 访问信息有IP信息提示
  • 微服务info内容详细信息

修改之前

修改之后

// 主机映射名称修改
// 修改microservicecloud-provider-dept-8001
// application.xml
eureka:
  client: # 客户端注册进eureka服务列表内
    service-url:
      defaultZone: http://localhost:7001/eureka
  instance:
    instance-id: microservicecloud-dept8001     # 主机映射名称

// 访问信息有IP信息提示
// 修改microservicecloud-provider-dept-8001
// application.xml
eureka:
  client: # 客户端注册进eureka服务列表内
    service-url:
      defaultZone: http://localhost:7001/eureka
  instance:
    instance-id: microservicecloud-dept8001     # 主机映射名称
    prefer-ip-address: true                     # 访问路径可以显示IP地址

// 微服务info内容详细信息
// 修改microservicecloud-provider-dept-8001
// pom.xml
<!-- actutator 监控信息完善 -->

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

// 修改父工程 microservicecloud
// pom.xml
<!-- dependencyManagement  -->
<build>
    <finalName>microservicecloud</finalName>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <delimiters>
                    <delimit>$</delimit>
                </delimiters>
            </configuration>
        </plugin>
    </plugins>
  </build>

<!-- modules -->

// 修改microservicecloud-provider-dept-8001
// application.yml
info:
  app.name: noodles-microservicecloud
  company.name: www.google.com
  build.artifactId: $project.artifactId$
  build.version: $project.version$

1.3.2 Eureka 自我保护机制

// 修改 microservicecloud-eureka-7001
// 将自我保护机制关闭(不推荐)
// application.yml
eureka:
  server:
    enable-self-preservation: false

参考资料:

原文地址:https://www.cnblogs.com/linkworld/p/9189744.html

时间: 2024-08-30 12:18:32

SpringCloud 进阶之SpringCloud的相关文章

springCloud进阶(微服务架构&amp;Eureka)

springCloud进阶(微服务架构&Eureka) 1. 微服务集群 1.1 为什么要集群 为了提供并发量,有时同一个服务提供者可以部署多个(商品服务).这个客户端在调用时要根据一定的负责均衡策略完成负载调用. 1.2 服务提供者集群-同一种服务(服务名)部署多个 实际生产就是同一种服务多部署几台服务器,开发时就是用端口来区分. 1) 拷贝一份8001 2) 修改主类-改名 3) 改8002yml,端口 4) 服务提供者 1.3 服务消费者负载均衡调用 1)常见的负载均衡技术 Ribbon

SpringCloud(一).大话SpringCloud

学习一个东西,首先要搞清楚这个东西是什么,有什么用,怎么用.最近会坚持写博客,将最近学习的SpringCloud的过程记录下来,很多东西往往看了一遍过一段时间就会遗忘,用博客记录下来是一个很好的方式,在整理的过程中才能查漏补缺,知道自己哪些地方掌握的不牢,哪些地方可能是之前学习没有想到的地方.  一.什么是SpringCloud 在说SpringCloud之前,不得不提一下微服务,微服务是可以独立部署,水平扩张,独立访问(或者有单独的数据库)的服务单元.当一个单体系统越来越庞大时,带来的业务逻辑

带你入门SpringCloud 之 通过SpringCloud Bus 自动更新配置

前言 在<带你入门SpringCloud统一配置 | SpringCloud Config>中通过 SpringCloud Config 完成了统一配置基础环境搭建,但是并没有实现配置修改自动更新的操作(GitHub 或Gitee 修改配置后,需要重启配置服务才能更新配置). 本文是<带你入门SpringCloud统一配置 | SpringCloud Config>的续篇,通过 SpringCloud Bus 完成配置修改自动更新的操作介绍. 阅读本文前需要你先移步<带你入门

SpringCloud学习系列-SpringCloud

SpringCloud是什么? SpringCloud=分布式微服务架构下的一站式解决方案,是各个微服务架构落地技术的集合体,俗称微服务全家桶 SpringCloud,基于SpringBoot提供了一套微服务解决方案,包括服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件,除了基于NetFlix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件. SpringCloud利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,SpringCloud为开发

SpringCloud 进阶之Hystrix(断路器)

1. Hystrix 断路器 Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败, 比如超时,异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分 布式系统的弹性; "断路器"本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类似熔断保险丝),向调用方 返回一个符合预期的,可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方无法处理的异常,这样就

如何学习SpringCloud?(SpringCloud模板)

前言 对于SpringCloud来说(下面简称SC),现在网上已经有很多教程写的非常详细,因为SC的组件特别多,虽然不是所有组件都需要用到,但是学习的时候我们都需要去学习和了解.所以我想如果再写把每一个组件再拖出来做整理感觉有点重复劳动了,而且说的也不可能比当前别人说的更加详细,所以就打算换一个方向来说说SC的学习.俗话说授人以鱼不如授人以渔.同时给出一个模板,方便后期查看学习(模板正在不断更新,如有不对的地方请提出建议,感激不尽). 模板地址:https://github.com/Linkin

【SpringCloud】(1)---SpringCloud入门篇

SpringCloud理解篇 一.微服务概述 1.什么是微服务 目前的微服务并没有一个统一的标准,一般是以业务来划分将传统的一站式应用,拆分成一个个的服务,彻底去耦合,一个微服务就是单功能业务,只做一件事. 与微服务相对的叫巨石 . 2.微服务与微服务架构 微服务是一种架构模式或者一种架构风格,提倡将单一应用程序划分成一组小的服务==独立部署==,服务之间相互配合.相互协调,每个服务运行于自己的==进程==中. 服务与服务间采用轻量级通讯,如HTTP的RESTful API等 避免统一的.集中式

【SpringCloud】(2)---SpringCloud入门篇

SpringCloud理解篇 一.微服务概述 1.什么是微服务 目前的微服务并没有一个统一的标准,一般是以业务来划分将传统的一站式应用,拆分成一个个的服务,彻底去耦合,一个微服务就是单功能业务,只做一件事. 与微服务相对的叫巨石 . 2.微服务与微服务架构 微服务是一种架构模式或者一种架构风格,提倡将单一应用程序划分成一组小的服务==独立部署==,服务之间相互配合.相互协调,每个服务运行于自己的==进程==中. 服务与服务间采用轻量级通讯,如HTTP的RESTful API等 避免统一的.集中式

SpringCloud 教程 之 SpringCloud概述

一.SpringCloud简介 Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式会话,集群状态).分布式系统间的协作产生了一些样板规则,使用Spring Cloud开发人员可以快速构建实现这些模式的服务和应用程序.它们适用于任何分布式环境,包括开发人员自己的笔记本电脑,数据中心和Cloud Foundry等托管平台. 二.SpringCloud特点 Spring Clo