狂神说SpringCloud

1 简介

说明:是B站狂神说的自学笔记
微服务的四个问题?

  1. 服务很多,客户端该怎么访问?(路由网关)
  2. 这么多服务,服务之间如何通信?(通信)
  3. 这么多服务,如何治理?(服务注册和发现)
  4. 服务挂了,怎么办?(熔断)

解决方案:SpringCloud是一个生态!

  1. SpringCloud NetFlix:停止维护,成熟的一站式解决方案
    1. Api网关:zuul组件
    2. 负载均衡:Ribbon
    3. 声明式远程调用:Feign,基于HttpClinet,同步并阻塞
    4. 注册中心:EureKa
    5. 熔断机制:Hystrix

在这里插入图片描述

  1. Dubbo+Zookeeper:半自动,需要整合别人的。异步非阻塞。基于
    1. Api网关:没有,找第三方插件,或者自己实现
    2. Dubbo:基于RPC
    3. Zookeeper:
    4. 没有熔断:借助Hystrix
  2. SpringCloud Alibaba:2019年开始,目前主流,比第一个更简单了,基于Http协议的

新概念:服务网格(Server Mesh),自己查学习

2 微服务

  • 概念(面试):目前没有明确的概念,微服务是一个架构风格,它提倡将单一的应用划分成一组小的服务,每个服务运行在其独立的进程内,服务之间互相协调调用。通过一个简单的通信机制互相调用,每个服务都围绕着具体的业务进行构建,一个服务做一件事事情,从技术角度看就是一种小而独立的处理过程。
  • 微服务不会和css、html等前端页面产生交互,微服务只是业务逻辑的代码
  • 每个微服务都有自己的存储能力,可以有自己的数据库,也可以有统一的数据库

SpringBoot和SpringCloud关系

  1. SpringBoot专注于快速开发方便的个体微服务(jar包)
  2. SpringCloud是关注全局的微服务协调治理框架,离不开前者

3 搭建环境

4 Eureka

三大角色

  • Eureka Server:提供服务的注册与发现。=Zookeeper
  • Service Provider:将自身服务注册到Eureka中,让消费者获得
  • Service Consumer:消费服务
  • 自我保护机制:是一种应对网络异常的安全保护机制,它的架构哲学是宁可同时保留所有微服务,也不会盲目注销任何健康的微服务。可以在配置中取消自我保护机制
  • 配置集群:eureka中修改defaultZone中注册的多个端口,提供者中再同时调用多个

CAD原则

  • C(Consistency):强一致性

  • A(Availability):可用性

  • P(Partition tolerance):分区容错性

  • 一个分布式系统只能兼容以上3者中的2者

Zookeeper区别

  • Z保证的是CP
    • 可以容忍查询出前几分钟的以前的注册信息,但不能接受服务直接down不能使用,当master结点挂掉,选取leader时间过长,导致注册服务瘫痪Eureka保证的是AP
  • Eureka保证的是AP
    • Eureka中的各个结点中都是平等的,几个结点挂掉不会影响正常结点的工作,只不过查到的信息可能不是最新的,并且它有自我保护机制

5 Ribbon负载均衡

  • 基于客户端,是一种负载均衡(load balance)的工具,将用户的请求平摊到多个服务器上,从而达到系统的高可用,默认是轮询算法,

  • 使用微服务名字来访问

  • 负载均衡简单分类:

    • 集中式的LB:消费和服务之间提供独立的LB设施,如Nginx,方向代理服务器
    • 进程式的LB:消费方从服务注册中心获知哪些地址可用,然后自己调用,Ribbon就属于此类
  • Ribbon核心组件:IRule,各种负载均衡算法都在里面

6 Feign负载均衡

  • 使用接口来访问
  • 导包,编写接口,调用接口
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
整理自尚硅谷视频教程springboot高级篇,并增加部分springboot2.x的内容 一、Spring Boot与缓存 一、JSR107 Java Caching定义了5个核心接口,分别是CachingProvider, CacheManager, Cache, Entry 和 Expiry。 • CachingProvider定义了创建、配置、获取、管理和控制多个CacheManager。一个应用可 以在运行 期访问多个CachingProvider。 • CacheManager定义了创建、配置、获取、管理和控制多个唯一命名 的Cache,这些Cache 存在于CacheManager的上下文中。一个CacheManager仅被一个 CachingProvider所拥有。 • Cache是一个类似Map的数据结构并临时存储以Key为索引的值。一个 Cache仅被一个 CacheManager所拥有。 • Entry是一个存储在Cache中的key-value对。 • Expiry 每一 个存储在Cache中的条目有一个定义的有效期。一旦超过这个时间,条目为过期 的状态。一旦过期,条 目将不可访问、更新和删除。缓存有效期可以通过ExpiryPolicy设置。 二、Spring缓存抽象 Spring从3.1开始定义了org.springframework.cache.Cache 和 org.springframework.cache.CacheManager接口来统一不同的缓存技术; 并支持使用JCache(JSR- 107)注解简化我们开发; • Cache接口为缓存的组件规范定义,包含缓存的各种操作集合; • Cache接 口下Spring提供了各种xxxCache的实现;如RedisCache,EhCacheCache , ConcurrentMapCache 等; • 每次调用需要缓存功能的方法时,Spring会检查检查指定参数的指定的目标方法是否 已经被调用 过;如果有就直接从缓存中获取方法调用后的结果,如果没有就调用方法 并缓存结果后返回给用户。下 次调用直接从缓存中获取。 • 使用Spring缓存抽象时我们需要关注以下两点; 1、确定方法需要被缓存 以及他们的缓存策略 2、从缓存中读取之前缓存存储的数据 Cache 缓存接口,定义缓存操作。实现有:RedisCache、EhCacheCache、 ConcurrentMapCache等 CacheManager 缓存管理器,管理各种缓存(Cache)组件 @Cacheable 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存 @CacheEvict 清空缓存 @CachePut 保证方法被调用,又希望结果被缓存。 @EnableCaching 开启基于注解的缓存 keyGenerator 缓存数据时key生成策略 serialize 缓存数据时value序列化策略 @CacheConfig 抽取缓存的公共配置 三、几个重要概念&缓存注解 1、常用注解 2、常用参数 名字 位置 描述 示例 methodName root object 当前被调用的方法名 #root.methodName method root object 当前被调用的方法 #root.method.name target root object 当前被调用的目标对象 #root.target targetClass root object 当前被调用的目标对象类 #root.targetClass args root object 当前被调用的方法的参数列表 #root.args[0] 3、常用参数SPEL明 名字 位置 描述 示例 caches root object 当前方法调用使用的缓存列表(如 @Cacheable(value= {"cache1","cache2"}) ), 则有两 个cache #root.caches[0].name argument name evaluation context 方法参数的名字. 可以直接 #参数 名 ,也可以使用 #p0或#a0 的形 式,0代表参数的索引; #iban 、 #a0 、 #p0 result evaluation context 方法执行后的返回值(仅当方法执 行之后的判断有效,如‘unless’ , ’cache put’的表达式 ’cache evict’的表达式 beforeInvocation=false ) #result 四、代码中使用缓存 1、搭建基本环境 1、导入数据库文件 创建出department和employee表 2、创建javaBean封装数据 3、整合MyBatis操作数据库 1.配置数据源信息 2.使用注解版的MyBatis; 1)、@MapperScan指定需要扫描的mapper接口所在的包

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值