k8s学习笔记01-k8s入门
k8s快速入门简介kubernetes简称k8s。是用于自动部署,扩展和管理容器化应用程序的开源系统。
中文官网: https://kubernetes.io/zh/
中文文档:http://docs.kubernetes.org.cn/
传统部署时代: 早期,组织在物理服务器上运行应用程序。无法为物理服务器中的应用程序定义资源边界,这会导致资源分配问题。例如,如果在物理服务器上运行多个应用程序,则可能会出现一个应用程序占用大部分资源的情况,结果可能导致其他应用程序的性能下降。一种解决方案是在不同的物理服务器上运行每个应用程序,但是由于资源利用不足而无法扩展,并且组织维护许多物理服务器的成本很高。
虚拟化部署时代: 作为解决方案,引入了虚拟化功能,它允许您在单个物理服务器的 CPU 上运行多个虚拟机(VM)。虚拟化功能允许应用程序在 VM 之间隔离,并提供安全级别,因为一个应用程序的信息不能被另一应用程序自由地访问。
因为虚拟化可以轻松地添加或更新应用程序、降低硬件成本等等,所以虚拟化可以更好地利用物理服务器中的资源,并可以实现更好的可伸缩性。
每个 VM 是一台完整的计算机,在虚拟 ...
Redis学习笔记07-springCache
Spring Cache简介spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cacheCacheManager接口来统一不同的缓存技术,并支持使用JCache注解简化我们开发。
Cache接口为缓存的组件规范定义,包含缓存的各种操作集合;Cache接口下Spring提供了各种xxxCache的实现;如RedisCache,EhCache
每次调用需要缓存功能的方法时,Spring会检查指定参数的指定的目标方法是否已经被调用过。如果有就直接从缓存中获取调用后的结果,如果没有就调用方法并缓存结果后返回给用户。下次调用直接从缓存中获取。
使用spring缓存抽象时我们需要关注以下两点:
确定方法需要被缓存以及他们的缓存策略
从缓存中读取之前缓存存储的数据
整合SpringCache简化缓存开发引入依赖123456789101112131415161718<dependency> <groupId>org.springframework.boot</gro ...
Redis学习笔记06-Redisson
RedissonRedisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。
Redisson整合引入依赖123456<!-- https://mvnrepository.com/artifact/org.redisson/redisson --><dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.12.2</version></dependency>
配置redissonredisson官方提供了多种方式来配置redisson
程序化配置方法12345678910111213141516171819@Configurationpublic class MyRedissonConfig { /** ...
Redis学习笔记05-缓存
缓存缓存使用为了系统性能的提升,我们一般都会将部分数据放入缓存中,加速访问。而db承担数据落盘工作。
哪些数据适合放入缓存?
即时性、数据一致性要求不高的
访问量大且更新频率不高的数据(读多,写少)
举例: 电商类应用,商品分类,商品列表等适合缓存并加一个失效时间(根据数据更新频率来定),后台如果发布一个商品,买家需要5分钟才能看到新的商品一般还是可以接受的。
常见问题缓存穿透缓存穿透指的是查询一个一定不存在的数据,由于缓存是不命中,将去查询数据库,但是数据库也无此记录,我们没有将这次查询的null写入缓存,这将导致这个不存在的数据每次请求都要到数据库中查询,失去了缓存的意义。
风险:利用不存在的数据进行攻击,数据库瞬时压力增大,最终导致崩溃
解决:null结果缓存,并加入短暂过期时间
缓存雪崩缓存雪崩是指在我们设置缓存时key采用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到DB,DB瞬时压力过重雪崩。
解决:原有的失效时间基础上增加一个随机值,比如1-5分钟随机,这样每一个缓存的过期时间的重复率就会降低,就很难引发集体失效的事件。
缓存击穿对于一 ...
Elasticsearch学习笔记03-springboot整合elasticsearch
springboot整合es基于尚硅谷的电商项目笔记
es提供了很多种客户端用于操作,这里我们使用官方推荐的Java High Level REST Client
导入依赖12345<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.4.2</version></dependency>
因为不同的springboot版本默认的es版本会不一致,所以需要特别指定es版本
编写配置创建config.GulimallElasticsearchConfig文件,写入配置
1234567891011121314151617181920212223@Configurationpublic class GulimallElasticsearchConfig { pu ...
Elasticsearch学习笔记02-elasticsearch进阶检索
ES进阶检索ES支持两种基本方式检索:
一种是通过使用REST request URI发送搜索参数
另一种是通过使用REST request body来发送它们
检索信息
请求参数方式检索
1GET bank/_search?q=*&sort=account_number:asc
响应结果解释:
took -es执行搜索的时间(毫秒)
time_out -告诉我们搜索是否超时
_shards - 告诉我们多少个分片被搜索了,以及统计了成功/失败的搜索分片
hits - 搜索结果
hits.total - 搜索结果
hits.hits - 实际的搜索结果数组
sort - 结果的排序key
score 和 max_score - 相关性得分和最高得分(全文检索用)
请求体进行检索
1234567GET /bank/_search{ "query": { "match_all": {} }, "sort": [ { "acc ...
Elasticsearch学习笔记01-elasticsearch简介以及安装
Elasticsearch 简介Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。
Docker安装ES下载镜像文件12docker pull elasticsearch:7.4.2 # 存储和检索数据docker pull kibana:7.4.2 # 可视化检索数据
创建ES实例123mkdir -p /mydata/elasticsearch/config # 创建es的配置目录mkdir -p /mydata/elasti ...
Redis学习笔记04-Jedis&springboot
JedisJedis是Redis官方推荐的java连接开发工具,使用java操作Redis中间件,如果你要使用java操作redis,那么一定要对Jedis十分熟悉!
导入依赖12345678910111213<dependencies> <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.2.0</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</ ...
Redis学习笔记03-Redis事务
事务Redis事务本质:一组命令的集合,一个事务中的所有命令都会被序列化,在事务执行的过程中,会按照顺序执行
一次性、顺序性、排他性!执行一些列的命令
1------ 队列 set set set 执行 -----
==Redis事务没有隔离级别的概念==
所有的命令在事务中,并没有直接被执行,只有发起执行命令的时候才会执行
==Redis单条命令是保证原子性的,但是事务不保证原子性==
redis的事务:
开启事务(multi)
命令入队(…)
执行事务(exec)
正常执行事务1234567891011121314151617127.0.0.1:6379> MULTI #开启事务OK#命令入队127.0.0.1:6379> set k1 v1QUEUED127.0.0.1:6379> set k2 v2QUEUED127.0.0.1:6379> get k2QUEUED127.0.0.1:6379> set k3 v3QUEUED# 执行事务127.0.0.1:6379> exec1) OK2) OK3) "v2"4) ...
Redis学习笔记02-Redis数据类型
五大数据类型Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
Redis-Key123456789101112127.0.0.1:6379> set name helloOK127.0.0.1:6379> keys *1) "name"127.0.0.1:6379> get nam ...