0%

一、前言

Spring Cache本身是Spring框架中一个缓存体系的抽象实现,本身不具备缓存能力,需要配合具体的缓存实现来完成,如Ehcache、Caffeine、Guava、Redis等。

二、缓存注解

  • @EnableCaching:开启缓存功能
  • @Cacheable:定义缓存,用于触发缓存
  • @CachePut:定义更新缓存,触发缓存更新
  • @CacheEvict:定义清楚缓存,触发缓存清除
  • @Caching:组合定义多种缓存功能
  • @CacheConfig:定义公共设置,位于class之上
阅读全文 »

原文地址:https://www.cnblogs.com/captainad/p/10954331.html

前言

一般单机或者单数据库的项目可能规模比较小,适应的场景也比较有限,平台的访问量和业务量都较小,业务ID的生成方式比较原始但是够用,它并没有给这样的系统带来问题和瓶颈,所以这种情况下我们并没有对此给予太多的关注。但是对于大厂的那种大规模复杂业务、分布式高并发的应用场景,显然这种ID的生成方式不会像小项目一样仅仅依靠简单的数据自增序列来完成,而且在分布式环境下这种方式已经无法满足业务的需求,不仅无法完成业务能力,业务ID生成的速度或者重复问题可能给系统带来严重的故障。所以这一次,我们看看大厂都是怎么分析和解决这种ID生成问题的,同时,我也将我之前使用过的方式拿出来对比,看看有什么问题,从中能够得到什么启发。

阅读全文 »

原文地址:https://www.cnblogs.com/sharpxiajun/archive/2013/06/02/3113923.html

Zookeeper是hadoop的一个子项目,虽然源自hadoop,但是我发现zookeeper脱离hadoop的范畴开发分布式框架的运用越来越多。今天我想谈谈zookeeper,本文不谈如何使用zookeeper,而是zookeeper到底有哪些实际的运用,哪些类型的应用能发挥zookeeper的优势,最后谈谈zookeeper对分布式网站架构能产生怎样的作用。

  Zookeeper是针对大型分布式系统的高可靠的协调系统。由这个定义我们知道zookeeper是个协调系统,作用的对象是分布式系统。为什么分布式系统需要一个协调系统了?理由如下:

  开发分布式系统是件很困难的事情,其中的困难主要体现在分布式系统的“部分失败”。“部分失败”是指信息在网络的两个节点之间传送时候,如果网络出了故障,发送者无法知道接收者是否收到了这个信息,而且这种故障的原因很复杂,接收者可能在出现网络错误之前已经收到了信息,也可能没有收到,又或接收者的进程死掉了。发送者能够获得真实情况的唯一办法就是重新连接到接收者,询问接收者错误的原因,这就是分布式系统开发里的“部分失败”问题。

阅读全文 »

Broker:

一台Kafka服务器就是一个Broker,一个集群由多个Broker组成,一个Broker可以容纳多个Topic,Broker和Broker之间得地位是基本平等的。

Topic:

每条发送到Kafka集群的消息都属于某个主题,这个主题就称为Topic。物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存在一个或多个Broker上,但是用户只需指定消息的主题Topic即可生产或者消费数据而不需要关心数据存放在何处。

阅读全文 »

准备工作

  • 安装kafka,版本为2.6.0
  • 安装zookeeper,版本为3.6.2
  • 启动kafka
  • 启动zookeeper
  • SpringBoot版本2.3.1.RELEASE

核心目录结构


  • KafkaConsumer.java 消费者
  • KafkaProducerController 生产者
  • application.yaml 主配置文件
  • application-kafka.properties kafka配置文件
阅读全文 »

ADD

复制文件

从src⽬录复制⽂件到容器的dest。其中src可以是Dockerfile所在⽬录的相对路径,也可以是⼀个URL,还可以是⼀个压缩包

示例:

1
ADD SpringBoot-Demo.jar app.jar
阅读全文 »

容器中数据持久化主要有两种方式:

  • 数据卷
  • 数据卷容器

数据卷

数据卷是一个可供一个或多个容器使用的特殊目录

阅读全文 »

一、Docker的底层实现

​ Docker容器本质上是宿主机上的进程 ,核心技术包括Linux上的命名空间(namespace)、控制组(cgroups)、UnionFS(联合文件系统)和容器格式(Container format)。Docker通过namespace实现了资源隔离,通过cgoups实现了资源限制,通过写时复制机制实现了高效的文件操作。
容器就是一个与宿主机系统共享内核但与系统中的其他进程资源相隔离的执行环境。Docker通过对namespace、cgroups、capabilities以及文件系统的管理和分配来“隔离”出一个上述执行环境,这就是Docker容器。

阅读全文 »