随笔分类 -  中间件技术

摘要:1.切割http日志 LOGS_DIR="/data/nlu/chatgpt_adapter/nginx/logs/http" cd ${LOGS_DIR} 切换到日志目录文件下 获取error.log文件的字节大小 log_size=du -b error.log | awk '{print $1 阅读全文
posted @ 2025-04-23 22:37 小郑[努力版] 阅读(33) 评论(0) 推荐(0)
摘要:需求背景 现在app客户端请求后台服务是非常常用的请求方式,在我们写开放api接口时如何保证数据的安全, 我们先看看有哪些安全性的问题 请求来源(身份)是否合法? 请求参数被篡改? 请求的唯一性(不可复制) 实现目标 案例 为了保证数据在通信时的安全性,我们可以采用参数签名的方式来进行相关验证。 我 阅读全文
posted @ 2025-04-13 17:09 小郑[努力版] 阅读(100) 评论(0) 推荐(0)
摘要:需求背景 为了封禁某些爬虫或者恶意用户对服务器的请求,我们需要建立一个动态的 IP 黑名单。 对于黑名单之内的 IP ,拒绝提供服务。 设计方案 实现目标 实现 IP 黑名单的功能有很多途径: 1、在操作系统层面,配置 iptables,拒绝指定 IP 的网络请求; 2、在 Web Server 层 阅读全文
posted @ 2025-04-13 17:02 小郑[努力版] 阅读(49) 评论(0) 推荐(0)
摘要:需求背景 在高并发场景下为了防止某个访问ip访问的频率过高,有时候会需要控制用户的访问频次 在openresty中,可以找到: set_by_lua,rewrite_by_lua,access_by_lua,content_by_lua等方法。 那么访问控制应该是,access阶段。 我们用Ngin 阅读全文
posted @ 2025-04-13 17:00 小郑[努力版] 阅读(45) 评论(0) 推荐(0)
摘要:OpenResty的执行流程概览 引出问题 location /test { set $a 32; echo $a; set $a 56; echo $a; } 输出结果 56 56 为什么是56 56? nginx处理为一个用户请求时,都是按照若干个不同阶段依次处理的,而不是根据配置文件上的顺序 阅读全文
posted @ 2025-04-13 16:55 小郑[努力版] 阅读(157) 评论(0) 推荐(0)
摘要:使用缓存 概述 nginx是一个master进程多个worker进程的工作方式,因此我们可能需要再多个worker进程中共享数据 使用ngx.shared.DICT来实现全局内存共享 使用缓存 在nginx的conf的http部分分配内存大小 语法:lua_shared_dict <name> <s 阅读全文
posted @ 2025-04-13 15:43 小郑[努力版] 阅读(61) 评论(0) 推荐(0)
摘要:发起Http请求 发起内部请求 capture请求方法 res = ngx.location.capture(uri,{ options? }); options可以传参数和设置请求方式 local res = ngx.location.capture("/product",{ method = n 阅读全文
posted @ 2025-04-13 11:29 小郑[努力版] 阅读(77) 评论(0) 推荐(0)
摘要:使用MySQL 默认安装OpenResty时已经自带了mysql模块 我们编写一个案例,操作mysql数据库,编辑test.lua 定义关闭mysql的连接 local function close_db(db) if not db then return end db:close() end lo 阅读全文
posted @ 2025-04-13 11:15 小郑[努力版] 阅读(40) 评论(0) 推荐(0)
摘要:连接redis服务器 基本使用 定义 redis关闭连接的方法 local function close_redis(red) if not red then return end local ok, err = red:close() if not ok then ngx.say("close r 阅读全文
posted @ 2025-04-13 11:08 小郑[努力版] 阅读(137) 评论(0) 推荐(0)
摘要:引入cjson模块 local json = require(“cjson”) json.encode 将表格(table 包含哈希键值对 和 数组键值对)数据编码为 JSON 字符串 格式: jsonString = json.encode(表格对象) table转json字符串 table包含哈 阅读全文
posted @ 2025-04-13 10:51 小郑[努力版] 阅读(84) 评论(0) 推荐(0)
摘要:APISix-插件开发 源码下载:git clone https://github.com/apache/apisix.git apisix目录结构如下 apisix-2.0/ ├── admin/ # 管理接口相关模块 │ ├── d_api_router.lua # API 路由定义 │ ├── 阅读全文
posted @ 2025-04-10 21:52 小郑[努力版] 阅读(153) 评论(0) 推荐(0)
摘要:redis与mysql数据同步 redis是内存型数据库,具备极高的读写速度,而mysql作为持久化数据库,通畅用户数据的可靠存储,如何保证两者数据的一致性需要具体业务场景的设计优化 缓存更新策略 cache Aside Pattern (旁路缓存模式) 场景: 在大部分业务系统中,Redis 作为 阅读全文
posted @ 2025-03-10 21:55 小郑[努力版] 阅读(54) 评论(0) 推荐(0)
摘要:ES 参考文档:https://www.cnblogs.com/buchizicai/p/17093719.html ES分布式搜索引擎 注意:在没有创建库的时候搜索,ES会创建一个库并自动创建该字段并且设置为String类型也就是text 什么是elasticsearch? 一个开源的分布式搜索引 阅读全文
posted @ 2025-02-20 22:51 小郑[努力版] 阅读(37) 评论(0) 推荐(0)
摘要:简介 etcd是什么? etcd是一个开源的,分布式存储的,强一致性的,可靠的键值存储;来存储分布式系统化或机器集群需要访问的数据。它在网络分区期间优雅地处理Leader选举,并且可以容忍机器故障,即使是在leader节点中。 其底层使用Raft算法保证一致性,主要用于共享配置,服务发现,集群监控, 阅读全文
posted @ 2025-01-02 22:54 小郑[努力版] 阅读(91) 评论(0) 推荐(0)
摘要:Redis,MongoDB,MySQL,ES之间的区别与适用场景: redis 是一种高性能键值存储数据库,基于内存操作,支持数据持久化,支持数据类型丰富(如:字符串,哈希,列表,集合,有序集合等),redis还提供了订阅/发布,事务,lua脚本,主从同步等功能,适用于访问频繁,数据量较小,对性能要 阅读全文
posted @ 2025-01-02 22:46 小郑[努力版] 阅读(183) 评论(0) 推荐(0)
摘要:git常见操作 git 多次测试后 使用git reset --soft 节点 再次commit 远程回滚使用 git push -f origin 节点:分之名称 回滚到上次 git reset --hard 不保留本地更改 撤销修改: git checkout -- readme.txt (还未 阅读全文
posted @ 2025-01-02 22:45 小郑[努力版] 阅读(26) 评论(0) 推荐(0)
摘要:Nginx的最重要的几个使用场景 静态资源服务,通过本地文件提供服务 反向代理服务,延伸出包括缓存,负载均衡等 API服务,OpenResty 相关概念 简单请求和非简单请求 请求方法是HEAD,GET,POST三种之一 HTTP 头信息不超过右边这几个字段:Accept、Accept-Langua 阅读全文
posted @ 2024-12-24 22:27 小郑[努力版] 阅读(66) 评论(0) 推荐(0)
摘要:Redis概念和基础 Redis是一种支持key-value等多种数据结构的存储系统。可用于缓存,事件发布或订阅,高速队列等场景。支持网络,提供字符串,哈希,列表,队列,集合结构直接存取,基于内存,可持久化。 什么是Redis Redis是一款内存高速缓存数据库。支持key-value存储系统,支持 阅读全文
posted @ 2024-11-09 16:21 小郑[努力版] 阅读(106) 评论(0) 推荐(0)
摘要:Logstash ELasticsearch是当前主流的分布式大数据存储和搜索引擎,可以为用户提供强大的全文检索能力,广泛应用于日志检索,全站搜索等领域。 Logstash作为Elasticsearch常用的实时数据采集引擎,可以采集来自不同数据源的数据,并对数据进行处理后输出到多种输出源,是Ela 阅读全文
posted @ 2024-09-22 16:37 小郑[努力版] 阅读(82) 评论(0) 推荐(0)