springCloud学习笔记

springcloud

1:maven中复习:DependencyManagement和Dependencies


maven 中用dependencyManagement---- 元素提供一种管理依赖版本号的方式

<dependencyManagement>
   <dependencies>
    <dependency>
    <groupId>mysq1</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.2</version>
    </dependency>
 <dependencies>
</dependencyManagement>

父工程


<dependencyManagement>
<dependencies>
    <dependency>
    <groupId>mysq1</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.2</version>
    </dependency>
<dependencies>
</dependencyManagement>

子工程


<dependencies>
   <dependency>
   <groupId>mysq1</groupId>
   <artifactId>mysql-connector-java</artifactId>
   </dependency>
 </dependencies>
 
   这样做的好处就是:如果有多个子项目都引用同一样依赖
 ,则可以避免在每个使用的子项目里都声明一个版本号,
 这样当想升级或切换到另一个版本时,只需要在顶层父容
 器里更新,而不需要一个一个子项目的修改;另外如果某个子项目需要另外的一个版本,只
 需要声明version就可。
 dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本
 ,才会从父项目中继承该项,并且version和scope都读取自父pom。
 如果子项目中指定了版本号
 ,那么会使用子项目中指定的jar版本。

2 :Eureka服务注册中心

 

 Eureka包含两个组件:Eureka Server和Eureka Client

Eureka Server提供服务注册服务

各个微服务节点通过配置启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观看到。

EurekaClient通过注册中心进行访问

它是一个Java客户端,用于简化Eureka Server的交互,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,EurekaServer将会从服务注册表中把这个服务节点移除(默认90秒)

其实就相当于Eureka Server 是物业公司,Eureka client 是小区的业主,你30天就要缴纳一次物业费,如果三个月 也就是90天你还是没缴纳物业费,那么就把你这个业主剔除掉了。


第一步jar包

<!-- eureka新旧版本 -->
 <!-- 以前的老版本(2018)-->
 <dependency>
 <groupid>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-eureka</artifactId >
 </dependency>

 <!-- 现在新版本(2020.2)--><!-- 我们使用最新的 -->
 <dependency>
   <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
 </dependency>

第二步,写启动类 以及yaml

server:
   port: 1111
 spring:
   application:
   name: eureka-server
 eureka:
   client:
     service-url:
         defaultZone:http://127.0.0.1:${server.port}/eureka
     #注册中心的职责是维护服务实例,不需要去检索服务
     fetch-registry: false
     # 默认设置下,注册中心会将自己作为客户端来尝试注册自己,设置为false代表不向注册中心注册自己
     register-with-eureka: false
 启动类上加入:
 // 启动注册中心
 @EnableEurekaServer

第三步:客户端

<!-- Eureka客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>


启动类上
// 开启Eureka客户端发现功能
@EnableDiscoveryClient


yaml文件中 
 eureka:
    client:
       service-url:
          defaultZone: http://127.0.0.1:1111/eureka

@EnableDiscoveryClient和@EnableEurekaClient的异同点

共同点:@EnableDiscoveryClient和@EnableEurekaClient共同点就是:都是能够让注册中心能够发现,扫描到改服务。
不同点:@EnableEurekaClient只适用于Eureka作为注册中心,@EnableDiscoveryClient 可以是其他注册中心。

eureka的自我保护理论知识

概述

默认情况下,如果eurekaServer在一段时间内没有接收到某个微服务的实例的心跳,EurekaServer将会注销该实例(默认是90秒) 也就是三个月没有缴纳物业费, 但是当网络分区故障发生(延迟,卡顿,拥挤)时候,微服务于EurekaServer之间无法正常通信,这个行为就变的非常的危险了,因为微服务本事其实可能是健康的,此时不应该注销这个微服务,Eureka 通过“自我保护模式”来解决这个问题---当EurekaServer节点在短时间内丢失过多客户端时候(可能发生了网络分区故障),那么这个节点就会进入自我保护模式。

EurekaServer 会统计心跳失败的比例在15分钟之内是否低于85%, 如果出现低于的情况EurekaServer会将当前的实例注册信息保护起来让这些实例不会过期,尽可能保护这些注册信息 就会进入自我保护机制,也就是,不会在剔除服务。  

 

 

使用 eureka.server.enable-self-preservation=false参数来关闭保护机制,以确保注册中心可以将不可用的实例正确剔除

eureka:
  client:
    # 注册中心提供服务的地址
    service-url:
      defaultZone: http://127.0.0.1:${server.port}/eureka
    # 注册中心的职责是维护服务实例,不需要去检索服务
    fetch-registry: false
    # 默认设置下,注册中心会将自己作为客户端来尝试注册自己,设置为false代表不向注册中心注册自己
    register-with-eureka: false
  server:
    # 关闭自我保护机制
    enable-self-preservation: false
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值