Eureka

Eureka服务端配置
eureka.client.service-url.defaultZone值的格式
Eureak集群
Eureka客户端配置
定时续约和拉取注册表
服务端的自我保护机制
完整配置项
手动清理已经关闭的服务
远程关闭服务
服务平滑上下线

Ribbon

自定义负载均衡策略
DefaultRibbonConfig被@SpringBootApplication组合注解扫描到
配置文件方式自定义负载均衡策略
@RibbonClients自定义全局的负载均衡策略
内置负载均衡策略
不依赖Eureka使用Ribbon

OpenFeign

openFeign的使用
@SpringQueryMap表单提交需要带这个
超时设置

Hystrix(还需要深入的学习,难点)

方法级别的降级处理
服务级别的降级处理的两种实现
hystrix中的超时设置
隔离策略
Fallback也有限制
熔断器
Dashboard监控中心
Turbine集群监控
Turbine分组集群监控

Gateway

扩展写法
同时匹配到多个route
11个Route

route之 - Before
route之 - After
route之 - Between
route之 - Cookie
route之 - Header
route之 - Host(get不到用法)
route之 - Method
route之 - Path
route之 - Query
route之 - RemoteAddr
route之 - Weight

31个Filter

filter之 - AddRequestHeader
filter之 - AddRequestParameter
filter之 - AddResponseHeader
filter之 - DedupeResponseHeader
filter之 - Hystrix
filter之 - CircuitBreaker
filter之 - FallbackHeaders
filter之 - MapRequestHeader
filter之 - PrefixPath
filter之 - PreserveHostHeader
filter之 - RequestRateLimiter
filter之 - RedirectTo
filter之 - RemoveRequestHeader
filter之 - RemoveResponseHeader
filter之 - RemoveRequestParameter
filter之 - RewritePath
filter之 - RewriteLocationResponseHeader
filter之 - RewriteResponseHeader
filter之 - SaveSession
filter之 - SecureHeaders
filter之 - SetPath
filter之 - SetRequestHeader
filter之 - SetResponseHeader
filter之 - SetStatus
filter之 - StripPrefix
filter之 - Retry
filter之 - RequestSize
filter之 - SetRequestHost
filter之 - ModifyRequestBody
filter之 - ModifyResponseBody
filter之 default-filters

以上yml配置都可以用JAVA编程方式实现
全局过滤器

SpringCloudNetflix概述

官方文档地址: https://cloud.spring.io/spring-cloud-netflix/2.2.x/reference/html

SpringCloudNetflix可以通过自动配置将.properties或.yml的属性绑定到SpringEnvironment,也可以

使用Spring编程方式(注解)构建。Netflix组件提供的服务有Eureka(服务发现)Hystrix(断路器)Ribbon(负载均衡)

Zuul(路由本博客不做研究,官方已经不推荐使用了,后边会补充官方推荐的Gateway)另外Netflix和spring cloud不知道

啥原因,Netflix的组件正在被spring cloud慢慢替换。Gateway就是第一个(PS:真心学不动)。

Eureka

注册中心是分布式项目中不可缺少的一环,不同的业务模块拆分为独立的微服务(springboot项目)服务于服务之间需要互相调用,功能

相同的服务又要做集群负载均衡。若有A,B,C业务服务组成一个系统,A,B,C每个负载均衡1分,则该系统共有6个微服务。服务之间互相调用

一般为内部调用,其实也可以理解为A服务Http访问B服务,但B服务有两个此时IP+Port的方式就不灵了。所以我们需要将每个微服务都注册

到注册中心,并且周期的向注册中心发送心跳,证明自己活着。当服务自身的状态发生了更改也要告诉注册中心,例如A服务中的其中一台主机

需要下架服务(即暂不提供服务)。服务之间需要互相调用,则需要到注册中心获取注册表,例如A调用B则需要获取B服务的实例IP+Port,当然

具体的选择哪一个B服务取决于负载均衡策略。同时注册中心也要负责管理每个服务的当前状态,若发现有不可以用的服务,负责将其清理出注册中心。

若B服务挂掉了一台,则注册中心维护的注册表中不会有该服务,若有其他服务要访问B服务则只会获取到仅存活的一个B服务的IP+Port。

主流的注册中心有Zookeeper和Eureka,需要注意的是Zookeeper是CP,Eureka是AP。CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、

可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。

Eureka的AP特性决定了多个Eureka组成的集群中,每个注册中心的注册表可能会不同,这一点特别重要。

Eureka服务端配置

EurekaServer的基本配置以下三步,1 导入依赖 spring-cloud-starter-netflix-eureka-server 2 yml配置 3 Springboot启动类增加注解@EnableEurekaServer

其实eureka的配置有很多,官方文档只提供了最基础的配置,按照以下配置可以快速构建eureka服务端。对于yml配置:eureka.instance.hostname 此处填写的为

当前服务器的真实IP。eureka.client.register-with-eureka 若为true则表示将该服务注册到注册中心,对于eureka服务端可以配置为false,以下配置为true只是

为了在页面可以看到。eureka.client.fetch-registry 如果为false则表示不从注册中心集群中拉去注册表,身为服务端也是不需要拉去的,只有客户端需要拉去注册表。

eureka.client.service-url.defaultZone 此处要填写当前此处要填写eureka服务端集群的中所有eureka的地址。若为单机eureka则只需填自己的即可。

<?xml version="1.0" encoding="UTF-8"?>
<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>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.dfsn.cloud</groupId>
    <artifactId>erueka-7001</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Hoxton.SR1</spring-cloud.version>
    </properties>


    <dependencies>

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

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>



    </dependencies>


    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>
View Code

相关文章: