back to index

wzl's Studio.

Nothing

loading
用Go实现一个AI对话助手
本文实现一个基于 Go + Gin 的 AI 会话后端服务,核心目标是把大模型调用能力接入到标准 Web API 中,并提供完整的用户鉴权、会话管理、流式响应、异步持久化、历史恢复能力。项目的设计重点不是单点功能,而是通过分层架构把协议处理、业务编排、模型调用、存储与消息系统明确拆分,形成可扩展、可维护、可演进的工程结构。 整体架构架构图如图所示: 架构分层职责 接入层:负责应用生命周期与全局装配,完成配置加载、数据库连接、消息队列初始化、路由注册、服务启动与优雅退出。 路由层:负责路由编排和访问控制边界,将公开接口与受保护接口分组,并统一挂载鉴权中间件。 控制器层:负责 HTTP 协...
raft协议
为了实现进程高可用,我们可以对进程进行备份,而实现进程的主从备份主要有两种方法: State Transfer(状态转移):主服务器将完整的状态内容都传输给备份服务器 Replicated State Machine(备份状态机):将需要备份的服务器视为一个确定性状态机 —— 主备以相同的状态启动,以相同顺序导入相同的输入,最后它们就会进入相同的状态、给出相同的输出 其中 Replicated State Machine 是较为常用的主从备份实现方式。常见的 Replicated State Machine 架构如下: 客户端向服务发起请求,执行指定操作 共识模块将该操作以日志的...
Kafka
Kafka是一个分布式的,支持多分区、多副本,基于Zookeeper的分布式消息流平台,同时也是一款开源的基于发布订阅模式的消息引擎系统 基本术语消息:kafka中是数据单元被称为消息,也被称为记录,可以把它看做数据库表中某一行记录 批次:为了提高效率,消息会分批次写入kafka,批次就代指一组消息 主题:消息的种类称为主题, 可以说一个主题代表了一类信息,相当于是对消息进行了分类,主题就像是数据库中的表 分区:主题可以被分为若干个分区(partition),同一个主题中的分区可以不在一个机器上,有可能会部署在多个机器上,由此来实现 kafka 的伸缩性,单一主题中的分区有序,但是无法保...
ants
为什么需要协程池超大规模并发的场景下。不加限制的大规模的goroutine可能造成内存暴涨,给及其带来极大的压力,要解决这个问题就是要限制运行的goroutine食量,合理复用,节省资源,具体就是goroutine池化 设计思路启动服务之时先初始化一个 Goroutine Pool 池,这个 Pool 维护了一个类似栈的 LIFO 队列 ,里面存放负责处理任务的 Worker,然后在 client 端提交 task 到 Pool 中之后,在 Pool 内部,接收 task 之后的核心操作是: 检查当前 Worker 队列中是否有可用的 Worker,如果有,取出执行当前的 task;...
roseDB
RoseDB是一个基于bitcast存储模型的单机kv存储引擎,基于bitcast存储模型设计的kv存储引擎,所有的写操作都是先构建一个entry,经过编码后写到active logfile文件中,只有active logfile才能进行写操作,其他都为归档logfile日志文件,只能读,不能写。 WALWAL作为RoseDB的一个单独结构,实现了预写日志功能,一个WAL文件包含多个SEG段文件。 12345678910111213type WAL struct { activeSegment *segment olderSegme...
redis线程模型
单线程模型Redis 的 “单线程” 并非指服务器进程仅含一个线程,而是核心的命令执行逻辑由单个线程串行处理。多线程模型虽然在某些方面表现优异,但是它却引入了程序执行顺序的不确定性,带来了并发读写的一系列问题,增加了系统复杂度、同时可能存在线程切换、甚至加锁解锁、死锁造成的性能损耗。 Redis 服务器进程包含多个线程,核心逻辑与辅助操作完全分离: 核心线程(主线程):负责处理客户端命令请求(如get/set)、执行数据读写操作、解析命令语法 —— 这是 Redis “单线程模型”的核心载体,所有命令执行严格串行,不存在并发竞争。 辅助线程:负责耗时的非核心操作,不参与命令执...
基于Netty实现IM聊天系统
体验地址:http://47.122.54.172/chat NettyNetty 是一个 Java 开源框架。Netty 提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。 Netty 是一个基于 NIO 的客户、服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户,服务端应用。Netty 相当简化和流线化了网络应用的编程开发过程。 实现思路通过Netty承载WebSocket长连接,用Spring管理业务Handler,用统一消息协议完成多类型消息路由,结合Redis+MySQL实现在...
avatar
wzl
witness me