一级二级缓存设计

为什么需要多级缓存 在互联网系统中,随着业务规模不断增长,数据库往往会成为系统的性能瓶颈。大量请求如果直接访问数据库,不仅会带来高延迟,还会导致数据库压力过大,甚至出现连接耗尽、查询变慢等问题。因此,几乎所有高并发系统都会引入 缓存(Cache) 来提升系统性能。 最常见的缓存方式是使用 Redis 作为统一缓存层。客户端请求首先访问 Redis,如果缓存命中,就直接返回数据;如果缓存未命中,再访问数据库并将结果写入缓存。这种方式已经能够显著降低数据库压力。 但随着系统规模继续扩大,仅仅依赖 Redis 仍然可能出现新的问题。例如在高 QPS 场景下,大量请求同时访问 Redis,会产生网络开销和 Redis CPU 压力。同时,某些热点数据可能会被频繁读取,每次都经过网络访问 Redis,也会带来额外延迟。 为了解决这些问题,很多大型系统会引入 多级缓存架构(Multi-Level Cache),其中最常见的一种模式就是 一级缓存 + 二级缓存设计。
6 min read

微服务架构设计

为什么会出现微服务架构 在早期的软件系统中,大多数应用都采用 单体架构(Monolithic Architecture)。所有功能模块都运行在同一个应用进程中,例如用户系统、订单系统、支付系统、库存系统等,都被打包在一个工程中统一部署。这种架构在系统规模较小时非常简单直接,开发效率也较高。 但随着业务不断增长,单体架构的问题逐渐显现出来。系统代码越来越庞大,一个项目可能包含几十万甚至上百万行代码,任何一次修改都需要重新构建和部署整个系统。同时,不同功能模块之间耦合严重,一个模块出现问题很可能影响整个系统运行。当访问量增长时,系统也无法只对某个热点模块进行扩展,只能整体扩容,资源利用效率很低。 在这种背景下,微服务架构逐渐成为大型系统的主流设计方式。微服务的核心思想是 将一个庞大的系统拆分为多个独立服务,每个服务负责一个明确的业务能力,并可以独立开发、部署和扩展。这样不仅可以降低系统复杂度,还可以提升系统的可维护性和扩展能力。 微服务架构的核心设计思想 微服务架构并不仅仅是把系统拆分成很多小服务,更重要的是围绕 业务能力(Business Capability)进行
8 min read

go-lynx设计思路

前言 github.com/go-lynx 的设计目的是为了可以快速帮助企业构建微服务体系的基础框架,其中我把整个仓库(包括组织 go-lynx 下 29 个 repo)进行了拆分,分为了lynx架构基座,和各种lynx插件模块。 https://github.com/go-lynx 亮点就是:Plug-and-Play(真正开箱即用),把复杂微服务架构变成“搭积木”。 它不是从 0 造轮子,而是站在巨人肩膀上: * 核心运行时借 Kratos(B 站那套开源框架) * 服务发现/治理用 Polaris(腾讯云原生服务网格),Nacos (阿里开源) * 分布式事务用 Seata,DTM 等 * 然后我自己加了一套插件管理系统 + 事件总线 + 控制平面,实现真正热插拔。 对比 Kratos:Kratos 是“
4 min read

Grpcs TLS 自签证书

由于微服务通讯需要进行数据加密以保证内网通讯安全。故此记录一下自签证书的生成过程。 以下是在 Linux 或 MacOS 系统上使用 OpenSSL 命令行工具生成自签名证书的步骤。这个过程将创建一个新的根证书(CA),然后使用这个根证书签名一个新的服务器证书。 先简明说明整体流程: 根证书: 1、生成根私钥 2、通过根私钥生成根证书 服务证书 1、生成服务私钥 2、通过服务私钥生成服务CSR 3、通过服务.csr 文件 + 根证书 + 根证书 key 签名出服务证书.crt文件 生成根证书的私钥 openssl genrsa -out ca.key 2048 这个命令将生成一个新的 RSA 私钥,长度为 2048 位。这个私钥将被保存到名为 ca.key 的文件中。 生成根证书
4 min read

Polaris Mesh

PolarisMesh 提供了完整的微服务治理能力,是腾讯开源的一站式云原生服务治理平台。平台围绕 服务注册与发现、流量治理、容错保护以及配置管理 等核心能力,为微服务架构提供稳定可靠的运行基础。通过 PolarisMesh,服务实例可以自动完成注册与发现,同时结合智能负载均衡策略,实现请求在多实例之间的合理分配,从而提升系统整体的稳定性与吞吐能力。 PolarisMesh支持多语言、多框架的云原生服务治理平台 服务管理、流量管理、故障容错、配置管理、可观测性 GitHub 查看文档 立即体验 一站式服务治理平台 北极星为服务治理提供一站式解决方案,覆盖服务注册中心、服务网格和配置中心的功能,提供业务监控、流量监控、事件中心和操作记录等全方位的可观测性能力,帮助用户快速构建微服务架构。 支持异构技术栈和环境 通过 Proxyless 和 Proxy 两种形态实现服务发现和治理,提供多语言 SDK、开发框架、Java Agent 和网格代理等接入方式,支持虚拟机、容器和混合云等部署环境,满足不同业务场景和开发模式。 支持常用开发框架 提供
6 min read

Ent-ORM

前言 Ent 是由 Facebook(现 Meta)开发的一款基于 Go 语言的 ORM 框架。最初 Ent 作为 Facebook 内部项目被设计和实现,用于解决大型系统中数据模型复杂、关系众多以及数据访问层难以维护的问题。随着 Facebook 内部系统规模的不断扩大,传统 ORM 在 类型安全、查询可维护性以及复杂关系建模方面逐渐暴露出一定局限性,因此 Facebook 设计了一套全新的 ORM 方案——Ent。 Ent 的核心理念是 Schema First + Code Generation。开发者首先通过 Go 代码定义数据模型 Schema,然后通过代码生成工具生成完整的数据访问层代码,包括实体结构体、查询构建器、关系操作以及 CRUD 方法。由于大部分逻辑在 编译阶段生成并校验,
5 min read

Kratos

前言 Kratos是一款基于Go语言的开源微服务框架,由Bilibili开源并维护。提供了微服务所需的服务发现,注册,HTTP,GRPC,限流,配置中心等常用功能。框架设计合理,轻量,易上手。 框架优点 1. 高性能 Kratos框架使用Go语言的协程和高效的并发模型,能够支持高并发场景。此外,Kratos框架还使用了自研的GRPC框架,相比其他框架,能够更快地处理请求和响应。 2. 简单易用 Kratos框架提供了丰富的文档和示例,易于上手。框架的设计也非常简单,不需要开发者掌握过多的概念和技术。 3. 模块化设计 Kratos框架提供了一系列的模块,如配置、日志、数据库等,方便开发者快速搭建微服务。此外,Kratos框架还支持插件化开发,可以根据需要自行开发插件,扩展框架的功能。 4. 高度可定制化 Kratos框架提供了丰富的配置选项,可以根据不同的需求进行定制化配置。此外,Kratos框架还支持自定义中间件、拦截器等,开发者可以根据需要进行自行开发。 KratosKratos 具体功能 1. 微服务注册与发现:
4 min read

随心笔记

技术无止境 创新不停驻