Spring Cloud part22—了解Kafka和在你的系统上部署kafka
了解Kafka
什么是Kafka
Kafka 是一款高吞吐量的分布式消息队列
Apache
Kafka是分布式发布-订阅消息系统,Kafka最初由LinkedIn公司开发,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。
初衷是解决 “大规模实时数据传输与存储” 问题,因此它的设计更偏向
“高吞吐、可持久化、分布式”
的日志系统,而消息队列只是其核心功能之一。
kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒。而且kafka集群支持热扩展,同时支持数千个客户端同时读,拥有很好的高并发。
简单说:RabbitMQ 更像 “快递中转站”(强调消息路由、即时投递),而
Kafka 更像 “大型仓库”(强调批量存储、高效读写)。
所以开发中,Kafka多使用在
日志收集:多服务的日志实时写入
Kafka,下游消费端(如 ELK)统一处理分析;
实时数据管道:数据库变更数据(CDC)通过 Kafka
同步到数据仓库、缓存或其他系统;
实时计算:作为 Flink/Spark...
Redis part5—RDB持久化和AOF持久化
Redis 持久化
Redis 本身是缓存,为什么它的持久化会被如此重视呢?
如何确保内存中的数据不因突发事件而丢失?如何在确保性能的前提下,为数据提供一个更加稳固的避风港?这是否矛盾
现在的情况差不多是这样,Redis
早期是纯缓存,但随着功能迭代,很多场景下它被当作内存数据库使用(如存储用户会话、购物车、实时排行榜)。此时持久化的价值体现在两点:
本质是因为它早已超越纯缓存,承担了数据库的职能,数据丢失会直接影响业务
Redis 提供三种持久化的方式: 分别是 RDB(Redis
Database Snapshot) 和 AOF(Append Only...
Redis part4—Redis布隆过滤器
什么是布隆过滤器
布隆过滤器简介
首先,布隆过滤器不是 redis
特有的东西,它是一种通用的数据结构,日常开发中,Redis 4.0
的时候官方提供了插件机制,布隆过滤器正式登场,使用
redisbloom 插件版本,但是 8.0.0 中 redis
正式添加了布隆过滤器。
布隆过滤器 (Bloom Filter)是由 Burton Howard Bloom 于 1970
年提出,它是一种 space efficient
的概率型数据结构,用于判断一个元素是否在集合中。
当布隆过滤器说,某个数据存在时,这个数据可能不存在;当布隆过滤器说,某个数据不存在时,那么这个数据一定不存在。
布隆过滤器(Bloom
Filter)是一种空间效率极高的概率型数据结构,本质是
“一个二进制数组 +...
Spring Boot part21-SpringBoot整合OpenAPI生成接口文档
了解OpenApi
首先说明,它是一个规范,我们在项目中常用的实现是 swagger 和
knife4j
OpenAPI 3.0.0 是 OpenAPI 规范的第一个正式版本,因为它是由 SmartBear
Software 捐赠给 OpenAPI Initiative,并在2015年从 Swagger 规范重命名为
OpenAPI 规范。
OpenAPI 规范(OAS),是定义一个标准的、与具体编程语言无关的 RESTful
API 的规范。OpenAPI
规范使得人类和计算机都能在“不接触任何程序源代码和文档、不监控网络通信”的情况下理解一个服务的作用。如果您在定义您的
API 时做的很好,那么使用 API 的人就能非常轻松地理解您提供的 API
并与之交互了。
如果您遵循 OpenAPI 规范来定义您的
API,那么您就可以用文档生成工具来展示您的
API,用代码生成工具来自动生成各种编程语言的服务器端和客户端的代码,用自动测试工具进行测试等等。
OpenAPI 本质上是一套用于描述 RESTful...
MongoDB part4—在Spring项目中使用MongoDB
在Spring项目中如何使用MongoDB
在Spring项目遇到什么需求需要用到MongoDB
首先,MongoDB 是 NoSQL,其次,它是文档型数据库,它拥有灵活
schema、高写入性能、适合非结构化 / 半结构化数据、水平扩展友好
一般在这样的情况下,我们考虑 MongoDB
存储非结构化 / 半结构化数据
所以说,当数据结构灵活多变(如用户行为日志、商品属性(不同商品字段差异大)、JSON
格式的 API
响应缓存等),传统关系型数据库的固定表结构会导致频繁的表结构变更,而
MongoDB 的文档模型(BSON
格式,支持嵌套结构)可直接存储动态字段,无需预先定义...
MongoDB part3-MongoDB的索引详解
索引简介
什么是索引
索引是 MongoDB
中优化查询性能的核心手段,通过创建索引可以大幅幅减少查询时的文档扫描量(从全集合扫描变为索引扫描)
本质上,索引是一种数据结构(类似书籍的目录),存储集合中某个 /
某些字段的值及其对应文档的位置信息,用于快速定位满足查询条件的文档。
索引并非没有代价,索引会占用额外存储空间,且写入操作(插入 / 更新 /
删除)会触发索引更新,可能降低写入性能。因此需平衡查询效率和写入成本,避免过度索引。
默认情况下,索引的创建是为每个集合自动为 _id
字段创建唯一索引(_id_),_id
索引可防止客户端插入两个具有相同 _id
字段值的文档。无法删除此索引。
在分片群集中,如果您不使用
_id 字段作为分分片键,那么您的应用程序必须确保
_id
字段中的值具有唯一性。为此,您可以使用一个具有自动生成的 ObjectId
的字段。
MongoDB 索引使用 B-Tree 数据结构(MySQL 是 B+Tree)
索引类型概述
MongoDB...
MongoDB part2—MongoDB的基本操作和mongosh命令
MongoDB Shell
MongoDB Shell(简称简称 mongo 或
mongosh)是 MongoDB 官方提供的交互式命令行工具,用于连接
MongoDB 数据库并执行各种操作(如查询、插入、更新数据,管理数据库 /
集合等)。它是开发者与 MongoDB 交互的最直接方式之一,其使用的命令是
MongoDB 操作的 “原生语法”
它的本质实际上是一个基于 JavaScript 的交互式环境,支持 JavaScript
语法和 MongoDB 扩展命令。你可以在其中输入命令,实时执行并获取结果,类似
MySQL 的 mysql 命令行工具。
从 MongoDB 5.0 开始,官方推荐使用新一代 Shell 工具
mongosh(功能更完善,支持语法高亮、自动补全、更好的错误提示等),旧的
mongo 工具已逐步废弃。
也就是说,你可以使用 js 操作 MongoDB
12345678910111213141516// 在 mongosh 中执行 JS 逻辑const userList = [ { name:...
使用n8n搭建基于Ollama本地模型的工作流—搭建天气邮件助手
关于Ollama
安装就不说了,直接快进到拉取模型这步骤
Ollama上拉取本地模型
Ollama上可以拉取的模型在官网就能看
https://ollama.com/search
image-20251024170841437
我的笔记本是 4060 RAM是48G 的,所以我直接拉取 qwen3:4b
规模的模型就可以
image-20251024170948644
下载略慢,耐心一些
byd 这个Ollama拉取模型貌似非要在 C盘 中
我改那个环境变量貌似没好使
位置在
image-20251024171105764
n8n搭建工作流
我们搭建一个基于 Ollama 本地 qwen3
的工作流,目的是能够结合今日的实时天气,去发送对应的请求然后给出出行和穿衣的建议
高德地图的 api 自己去看吧,是需要自己申请 key
的,比和风好搞多了,我这边也不是很明白,我只知道一些比较简单的
https://console.amap.com/dev/index...
MongoDB part1—了解MongoDB及其存储结构和数据类型
MongoDB介绍
什么是MongoDB,主要是做什么的
NoSQL的内容在这里就不展开说了,我相信看到这个的大家都知道什么是
NoSQL
MongoDB 是一款开源的分布式文档型 NoSQL 数据库,由
MongoDB Inc. 开发维护,由C++语言编写,核心是存储 “文档”
而非传统关系型数据库的 “行 - 列”
数据,旨在解决海量数据存储、高并发读写、灵活 schema
等传统数据库难以高效应对的问题。
作为基于分布式文件存储的数据库,它天生为处理大规模数据设计,目前是
NoSQL 数据库中市场份额最高、生态最完善的产品之一。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
它支持的数据结构非常松散,是类似 Json的...
Elasticsearch part6—ES分片,服务器和集群
Elasticsearch 集群
ES的集群是啥样的
Elasticsearch(ES)集群是分布式搜索引擎的核心形态,通过多节点协同工作实现高可用、高扩展和负载均衡。
和其他分布式的其实差不多,ES的集群无非就是,由一个或多个节点(Node)组成的集合,共同管理整个数据集,并提供分布式查询能力。
集群通过唯一的 集群名称(默认
elasticsearch)标识,节点通过加入相同名称的集群实现协同。
节点是单个运行的 ES
实例,是集群的基本组成单元。每个节点有唯一名称(默认随机生成),可通过配置指定角色。
角色
功能说明
适用场景
主节点(Master)
管理集群元数据(索引创建 /
删除、分片分配),不处理数据和查询(默认)。
集群控制节点,建议单独部署
数据节点(Data)
存储数据(分片),处理 CRUD、搜索、聚合等操作。
承载数据和计算,需高 CPU /...













