JasonBourne

鉴权中心的设计与实现

最近在做公司的统一鉴权中心,踩了不少坑,也有一些思考。这篇文章记录一下整个设计过程,希望对有类似需求的朋友有所帮助。 为什么需要统一鉴权中心 公司业务发展到一定阶段,系统越来越多,每个系统都有自己的用户体系和权限管理。用户要记住多套账号密码,开发团队要重复实现权限逻辑,运维要维护多套用户数据。这种情况下,统一鉴权中心就成了刚需。 我们的目标很明确:一套账号体系,一次登录,访问所有系统。...

分布式事务

什么是分布式事务 在微服务架构中,一个业务操作往往需要跨越多个服务和数据库。分布式事务就是为了保证这些跨服务、跨数据库的操作要么全部成功,要么全部失败,从而保证数据的一致性。 为什么需要分布式事务 在单体应用中,我们可以使用数据库的本地事务(ACID)来保证数据一致性。但在微服务架构下: 每个服务有独立的数据库 服务之间通过网络通信 无法使用传统的数据库事务来保证一致性...

TCP/IP 协议族

前言 在计算机网络中,操作系统之间的通信最终都要落到一套具体的协议之上,这套协议就是我们常说的 TCP/IP 协议族。 网上关于 TCP/IP 的资料很多,但如果缺少体系化的视角,很容易变成「记一堆名词,却不知道它们如何协同工作」。 本文尝试以「学习归纳」的方式,从整体到细节梳理 TCP/IP 协议族的核心概念和运行机制,帮助你建立起一个可反复回顾的知识框架,而不是零散记忆点。 一...

MCP协议学习总结:从架构到实现原理

一、MCP是什么? MCP(Model Context Protocol,模型上下文协议)是由Anthropic在2024年发布的一个开放标准协议,旨在标准化和统一大语言模型(LLM)与外部数据源、工具之间的通信方式。 核心价值 统一标准:类似于USB-C接口,为不同的数据源、工具和应用提供统一的连接方式 解决问题:克服了传统AI系统因缺乏标准化接口而导致的集成困难、信息孤岛...

OpenTelemetry从零到实践

前言:为什么要关心可观测性? 最早做业务开发的时候,我对“监控”的理解非常朴素: 请求量、QPS 看一眼 CPU、内存、磁盘差不多就行 报错了看一下日志,grep 一把 随着系统复杂度增加(微服务、消息队列、分布式事务、异步任务……),这些手段越来越不够用: 排查一次线上慢请求,要在多个服务的日志里来回翻 调用链断层,很难知道一次请求到底经过了哪些服务 ...

数据结构与算法:回溯算法

回溯算法 核心思想:回溯法是一种通过探索所有可能的候选解来找出所有解的算法。如果候选解被确认不是一个解(或者至少不是最后一个解),回溯算法会通过撤销(回溯) 上一步或几步的操作,丢弃该候选解,并尝试其他可能的候选解。 它是一种深度优先搜索策略的运用。 为什么需要回溯算法? 很多问题无法用简单的循环嵌套来解决,特别是当问题的规模(大小)是动态的或需要穷举所有排列/组合时。 典型问题:...

sync、fsync、fdatasync

传统的UNIX实现再内核都设有缓冲区高速缓存或页面高速缓存,大多数磁盘I/O都通过缓冲进行。当将数据写入文件时,内核通常先将数据复制到一个缓冲区中,如果该缓存区尚未写满, 则不将其排入输出队列,而是的等待其写满或者当内核需要重用该缓冲区以便存放其他磁盘块数据时,再将该缓冲排入输出队列,然后等待其到达队首时,才进行实际的I/O操作。 这种输出方式成为延迟写。 延迟写减少了磁盘的读写次数,但是...

数据结构与算法:几个简单的双指针算法题

27. 移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作: 更改 nums 数组,使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和 num...