淘先锋技术网

首页 1 2 3 4 5 6 7

一、什么是SpringCloud?

 

    SpringCloud是Spring团队提供的一套微服务架构体系的开发解决方案。内部继承了20多种为微服务开发所需要的服务和组件。直接开箱即用即可,极大的方便了微服务架构的开发。

 

    SpringCloud是基于SpringBoot

 

 

二、什么是微服务?

 

    微服务的特点:

        1、按照系统的业务模块进行服务的拆分

        2、每个服务独立部分,隔离运行,并且通过一个小型的管理中心集中管理

        3、服务和服务之间通过轻量级的通信机制进行通讯(dubbo - rpc / Spring cloud - Http Restful...)

        4、服务需要高可用部署

        5、服务可以采用不同的语种实现、存储也可以采用不同的方式

 

 

三、服务的注册和发现 - Eureka

    

    

 

    如何搭建一个注册中心:

 

        1、添加Eureka Server的相关依赖:

            

 

        2、去启动类添加相关注解:

            

 

        3、配置application.yml:

            

 

        4、打开浏览器,访问注册中心

            

 

    如何搭建一个微服务的提供者(本身就是一个微服务,可以是提供者也可以是消费者):

 

        1、添加Eureka client依赖

            

 

        2、启动类上添加注解

            

 

        3、配置application.yml

            

 

        4、提供一个Controller(就是给其他微服务调用的接口)

            

 

 

    注意:微服务的集群关系,是通过spring.application.name确定的,当两个微服务的名称相同时,注册中心就会认为这两个微服务是一个集群的关系

 

 

四、Eureka组件

 

    什么是Eureka的自我保护机制?

        一旦Eureka触发了自我保护机制,则注册中心上所以可能有问题的服务,就会被Eureka保护起来,而不被移除。

        

 

 

    为什么Eureka要设定一个貌似鸡肋的自我保护机制(zookeeper - 过半数存活原则)?

        

        CAP原则:任何分布式存储系统,必须遵循CAP原则中的2个原则,因为P(网络分区)不可避免,所以通常分布式系统都会从A和C中做选择,Zookeeper就是CP设计,Eureka是AP设计。

        P(分区容错性):当一个分布式服务,发生网络分区问题时,仍然可以对外正常提供服务。

        C(强一致性):对于任何的读操作,总能返回最新的写操作的结果

        A(高可用性):对于读取集群中任意一个节点,会返回一个合理的结果,但是有可能不正确(不能是超时或者报错)

 

        AP理论 - Base理论(对AP原则的一个补充):

        选择AP并不意味着丢弃数据一致性,而是在网络分区问题发生时,短暂的牺牲掉数据一致性,保证服务的高可用,一旦网络分区的问题恢复后,最终整个服务系统数据还是要回到一致性状态的。(最终一致性)

 

        Ba:服务基本可用,当服务资源出现问题时,首先保证更重要的服务可以正常运行

        s:软状态,整个系统允许某个时刻出现弱一致性状态,

        e:最终一致性,当系统分区问题解决后,整个数据最终还是要回归一致性状态的

 

    自我保护机制触发的条件:

 

        在 1 分钟后,Renews (last min) < Renews threshold * 0.85,就会触发自我保护机制

         Renews (last min):表示Eureka在最后一分钟,接收到的心跳数量

         Renews threshold:表示Eureka认为在最后一分钟,应该接收到的心跳数量

 

    如何避免自我保护机制?

 

        1、通过配置关闭自我保护机制(不推荐)

            

 

        2、修改自我保护机制的比例值(不推荐)

            

 

        3、将Eureka集群进行自我注册 - 心跳数会增加(推荐)

 

    注意:因为Eureka的高可用性选择,所以设计了一个自我保护机制,保护那些因为网络分区问题影响的微服务不会移除。但是也可能保护了真正出现了问题的微服务。这个时候,其他的微服务调用这个服务时,可能就会得到一个错误的结果,这种情况只能在调用端自行解决,比如通过Hystrix进行隔离熔断。

 

    Eureka如何搭建集群:

    

        1、准备三个Eureka服务

            

 

        2、配置每个Eureka服务的application.yml

            

 

        3、给配个集群机器分配一个域名(/hosts文件)

            

    

        4、验证集群

              

 

 

    Zookeeper和Eureka的区别:

        1、zk是cp设计,eureka是ap设计

        2、zk集群有角色,eureka集群没有角色

        3、zk提供了watch机制,eureka是通过长轮询实现            

    

    Nacos - AP设计 注册中心