day1 SpringCloud01

spring cloud day01

1. 项目结构-掌握

1. 单体架构
  • 优点:架构简单、部署成本低
  • 缺点:耦合度高(维护困难、升级困难)
2. 分布式架构
  • 优点:降低服务耦合、有利于服务升级和拓展
  • 缺点:服务调用关系错综复杂
3. 微服务架构
    1. 特点
      • 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责
      • 自治:团队独立、技术独立、数据独立,独立部署和交付
      • 面向服务:服务提供统一标准的接口,与语言和技术无关
      • 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题
    1. 微服务与分布式之间的关系
      1. 微服务是一种经过良好架构设计的分布式架构方案
      2. SpringCloud是微服务架构的一站式解决方案,集成了各种优秀微服务功能组件

2. 微服务技术的对比

1. dubbo和springcloud的对比
  • 面试题
2. springcloud 和springcloudalibaba的对比
  • 面试题
image-20220919200431818

3. spring cloud的基本介绍

1. spring cloud是一套技术解决方案,里面包含了N多的技术组件
  • 掌握
2. 使用springcloud一定需要使用springboot
  • 掌握
3. springcloud的版本和springboot的版本有兼容性的问题
  • 重点掌握

4. 微服务环境的准备-了解

1. 服务拆分的规则
  • 面试题

按照功能模块进行拆分,不能拆分出的,做成一个通用功能

  • 不同微服务,不要重复开发相同业务
  • 微服务数据独立,不要访问其它微服务的数据库
  • 微服务可以将自己的业务暴露为接口,供其它微服务调用
2. 环境的搭建
    1. 解压项目并导入idea
  • 2,创建数据库并导入sql中表和数据
    1. 修改每个项目中的mysql的连接信息 然后启动服务

5. 远程微服务的调用-重点掌握

1. 创建RestTemplate对象并放入spring的ioc容器中
2. 在需要使用的时候注入该对象
3. 使用restTemplate对象的方法发起一个http的请求

6. Eureka注册中心

1. eureka注册中心的工作流程-掌握
image-20220919200934701
2. eureka会有2个组成部分-了解
  • server-注册中心
  • client-内容提供者和消费者
3. Eureka Server的搭建-重点掌握
    1. 创建一个普通的Java项目
  • 2, 导入server的核心jar包

    • <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
      </dependency>
      
    1. 在启动引导类中开启Server的功能
    • @EnableEurekaServer
    1. 设置注册到Eureka的地址
    server:
      port: 10086
    spring:
      application:
        name: eureka-server
    eureka:
      client:
        service-url: 
          defaultZone: http://127.0.0.1:10086/eureka
    
4. 微服务注册到注册中心-重点掌握
    1. 导入eureka client的核心的jar包
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    
    1. 配置eureka的注册的地址
    spring:
      application:
        name: userservice
    eureka:
      client:
        service-url:
          defaultZone: http://127.0.0.1:10086/eureka
    
5. 服务的发现-重点掌握
    1. 导入eureka client的核心的jar包
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    
    1. 配置eureka的注册的地址
    spring:
      application:
        name: orderservice
    eureka:
      client:
        service-url:
          defaultZone: http://127.0.0.1:10086/eureka
    
    1. 在RestTemplate对象的创建的方法上添加负载均衡的注解
    • @LoadBalanced
    1. 调用的url地址作用使用内容提供者的服务的名称,替换之前的ip和端口
    String url = "http://USERSERVICE/user/" + order.getUserId();
    
    • 服务名称不区分大消息

7. Ribbon组件

image-20220919201500582 image-20220919201530981
1. 作用:主要实现负载均衡

SpringCloudRibbon的底层采用了一个拦截器,拦截了RestTemplate发出的请求,对地址做了修改。

2. 负载均衡策略有哪些?-面试题
  • 至少能够说出3-4个
内置负载均衡规则类规则描述
RoundRobinRule简单轮询服务列表来选择服务器。它是Ribbon默认的负载均衡规则。
AvailabilityFilteringRule对以下两种服务器进行忽略: (1)在默认情况下,这台服务器如果3次连接失败,这台服务器就会被设置为“短路”状态。短路状态将持续30秒,如果再次连接失败,短路的持续时间就会几何级地增加。 (2)并发数过高的服务器。如果一个服务器的并发连接数过高,配置了AvailabilityFilteringRule规则的客户端也会将其忽略。并发连接数的上限,可以由客户端的..ActiveConnectionsLimit属性进行配置。
WeightedResponseTimeRule为每一个服务器赋予一个权重值。服务器响应时间越长,这个服务器的权重就越小。这个规则会随机选择服务器,这个权重值会影响服务器的选择。(根据权重随机,响应时间越长,权重值越小)
ZoneAvoidanceRule默认以区域可用的服务器为基础进行服务器的轮询选择。使用Zone对服务器进行分类,这个Zone可以理解为一个机房、一个机架等。而后再对Zone内的多个服务做轮询。
BestAvailableRule忽略那些短路的服务器,并选择并发数较低的服务器。
RandomRule随机选择一个可用的服务器。随机
RetryRule重试机制的选择逻辑
  • 默认的策略-ZoneAvoidanceRule,是一种轮询方案
3. 负载均衡策略的修改-重点掌握
    1. 全局的修改
    @Bean
    public IRule randomRule(){
        return new RandomRule();
    }
    
    1. 单独修改某一个服务
    userservice: # 给某个微服务配置负载均衡规则,这里是userservice服务
      ribbon:
        NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则 
    
3. 加速第一次访问的速度-开启饥饿加载策略-了解
ribbon:
  eager-load:
    enabled: true
    clients: userservice

8. Nacos组件

1. 搭建nacos的服务-重点掌握

启动nacos:

startup.cmd -m standalone
2. 服务注册到nacos-重点掌握
    1. 在父工程的pom.xml中添加jar包的依赖管理
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
        <version>2.2.6.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
    
    1. 导入nacos的服务发现的jar包:user-service和order-service中
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    
    1. 配置nacos的id和端口:在user-service和order-service的application.yml中添加nacos地址:
    spring:
      cloud:
        nacos:
          server-addr: localhost:8848
    
3. 集群节点的分级存储-重点掌握:user-service
spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ # 集群名称
4. nacos的负载均衡-重点掌握:
  1. order-service
spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ # 集群名称
  1. order-service的application.yml
userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则 
4. 带权重的负载均衡-重点掌握
  • 可以在nacos中找到具体的服务 然后点击编辑 设置权限 权重的值在0-1之间 值越大获取流量的机会就越大 同时如果设置为0则表示不在接收新的请求
5. 环境的隔离-掌握
    1. 在nacos的控制台的命名空间下创建一个新的命名空间
    1. 内容提供者注册到对应的空间下
    spring:
      cloud:
        nacos:
          server-addr: localhost:8848
          discovery:
            cluster-name: HZ
            namespace: 492a7d5d-237b-46a1-a99a-fa8e98e4b0f9 # 命名空间,填ID
    
    • 特别注意:配置的是id不是名称
    1. 消费者注册到该命名空间下
6. nacos的工作的原理-掌握
image-20220919202448235
零时实例和非临时实列的区别
  • 临时实例:如果实例宕机超过一定时间,会从服务列表剔除,默认的类型。

  • 非临时实例:如果实例宕机,不会从服务列表剔除,也可以叫永久实例。

  • spring:
      cloud:
        nacos:
          discovery:
            ephemeral: false # 设置为非临时实例
    
7. nacos和eureka的区别是什么?-面试题
  • Nacos与eureka的共同点

    • 都支持服务注册和服务拉取
    • 都支持服务提供者心跳方式做健康检测
  • Nacos与Eureka的区别

    • Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式
    • 临时实例心跳不正常会被剔除,非临时实例则不会被剔除
    • Nacos支持服务列表变更的消息推送模式,服务列表更新更及时
    • Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值