1 背景介绍 2 工作原理 2.1 短链接生成与存储 2.2 短链接返回与传播 2.3 用户点击与跳转 3 核心算法 3.1 哈希算法 3.2 分布式 ID 3.3 Base62 编码 4 安全与防护 4.1 长链接合法性校验 4.2 重复生成短链接防护策略 4.3 短链接有效性验证 5 系统性能优化 5.1 数据库索引 5.2 缓存应用 5.3 号段模式优化 5.4 分表 […]
1 背景介绍 2 工作原理 2.1 短链接生成与存储 2.2 短链接返回与传播 2.3 用户点击与跳转 3 核心算法 3.1 哈希算法 3.2 分布式 ID 3.3 Base62 编码 4 安全与防护 4.1 长链接合法性校验 4.2 重复生成短链接防护策略 4.3 短链接有效性验证 5 系统性能优化 5.1 数据库索引 5.2 缓存应用 5.3 号段模式优化 5.4 分表 […]
1. 分布式唯一 ID 特性 在业务开发中,会存在大量的场景都需要唯一 ID 来进行标识。比如,用户需要唯一身份标识;商品需要唯一标识;消息需要唯一标识;事件需要唯一标识等等。尤其是在分布式场景下,业务会更加依赖唯一 ID。 分布式唯一 ID 的特性如下: 全局唯一:必须保证生成的 ID 是全局性唯一的,这是分布式 ID 的基本要求; 有序性:生成的 ID 需要按照某种规则 […]
👉目录 1 架构图的目的 2 怎样的架构图是好的架构图 3 什么时候画架构图 4 架构图分类 5 如何画架构图 6 业务/产品架构图 7 应用架构图 8 技术架构图 9 代码架构图 10 数据架构图 画架构图是架构师的一门必修功课。 对于架构图是什么这个问题,我们可以按以下等式进行概括: 架构图 = 架构的表达 = 架构在不同抽象角度和不同抽象层次的表达,这是一 […]
随着项目发展,现有模块不再符合需求,重构后端服务必要性拉满。👨💻 重构过程中,明确重构目标如引入新功能、性能提升、增强系统可用性等是前提条件,此外也必须考虑功能一致性和数据一致性这两大关键问题。 后台重构可以根据服务的不同需求划分为以下几类: 1️⃣逻辑模块重构:专注于优化代码逻辑和业务流程。 2️⃣存储模块重构:改进数据存储和检索机制。 3️⃣逻辑与存储模块联合重构:同 […]
零,前言 经常排查线上紧急问题的IT老兵都知道,IT故障排查,和临床治病救人,有两个共同特征。 第一个特征,都容易“只见树木不见森林”。 综合性医院分科很细,医生专科化程度很高,常常“只见树木不见森林”。医生只知道处理专科的问题,其他方面的问题就通过转科或者会诊的方式交给其他科室。一旦遇到的是系统性、全身性疾病,这种工作模式就会导致延误诊断及治疗。 相对应的,IT团队也 […]
我们在《系统设计 | 如何表达技术架构?(规划篇)》中讨论了一个新的项目启动时如何表达技术架构,类似的我们还需要在敏捷项目的迭代前进行更细致的技术方案设计。 进入迭代的技术方案可以类比为瀑布模型中的详细设计,其目的是为了让迭代中的具体开发工作顺利进行。 本文,整理了一些日常项目上进入迭代前的技术方案输出物。 迭代技术方案的逻辑 迭代技术方案和规划类的技术方案不同,为了让迭代 […]
💡Excalidraw 官网:https://excalidraw.com/ 💡Graphvizx26amp;nbsp; 官网:https://graphviz.org/ 💡PlantUML 官网:https://plantuml.com/zh/ 💡Matplotlib 官网:https://matplotlib.org/ 本文仅供学习!所有权归属原作者。侵删!文章来源:腾 […]
1 结论 2 问题背景及现象 3 排查过程 3.1 初次分析 3.2 问题再次出现 3.3 解决方案 4 总结与反思 1 结论 结论先行:事务+MQ的使用场景,使用方式一定得正确,稍有不慎,可能就会带来数据不一致问题。 2 问题背景及现象 商业退款业务,每周都会有几笔退款订单自动处理失败,究其直接原因,是因为数据表里的一个字段cost更新失败导致。抽象一下,业务场景大概是这 […]
在多年软件开发的经验中,我看过各种各样的架构图和技术方案。其中不乏看到非常精美架构图,以及非常详细的技术方案。 非常遗憾的是,目前没有流传开的标准来规范架构图的绘制,不同公司架构文档风格也五花八门。如果说有 UML 这类图例标准,也非常古老了,大部分人也不怎么使用 UML 来设计架构图。 这会让很多架构师非常困惑,不知道如何上手,参考哪些材料来完成这类工作。 本文,整理了一 […]
分布式事务一直是微服务设计的一个难点,是解决业务一致性问题的重要手段,一直很谨慎不敢写这部分内容,担心水平不够弄错误导大家。 但是如果在项目上出现了跨服务的业务一致性需求,在网络上搜索出来的材料往往是一些理论和具体的框架使用,对问题场景的分析不多。 在和多个公司的架构师讨论后,大家的共识是:分布式事务很难有一个通用的解决方案,需要在场景中获得比较好的平衡,往往是捏着鼻子选择 […]
写作的价值不仅仅是传播想法,更在于总结和反馈。系统设计系列收到了一些读者的反馈和补充,定期整理更新。 时间方案中补充频率表达格式 在 《系统设计中需要考虑到的时间问题》文章中我们讨论了时间的标准化表达格式,在其中提到了 ISO-8601 规范。 其实 ISO-8601 中有非常多很有价值的表达方式,只不过使用不够频繁没有拿出来讲。我们应该尽可能使用现有的规范来实现业务,可以 […]
微服务架构中的一些概念非常模糊,业界往往没有取得共识。对于应用来说,其原因是业务背景多种多样,往往单一的模式不能满足现实需要。个人认为这是架构意识形态之争的根本原因。 今天来辨析一下微服务架构中 BFF,其含义和两种架构形态。 胖瘦 BFF 之争 我自 2015 年开始参与的所有应用系统都是服务化的了,都算比较大型的系统,这可能是解决大型复杂应用的必然之路。 在服务化的系统 […]
企业在使用微服务架构时,虽然会获得微服务架构的一些便利,但是也需要付出一些基础设施成本,而集成和部署就是其中一部分。 持续的集成和部署通常被叫做 CI/CD,意思是通过一个工具平台,在代码被推送后自动构建、部署,以此提高软件研发和集成效率。 这一期的系统设计,就来聊聊如何搭建持续集成和部署流水线。 CD/CD 简介 CI/CD 是 Continuous integratio […]
虽然 RESTful API 已经成为业界对于 API 的共识,但是不得不说,但是不得不说它具有很多局限性。 RESTful API 和很多的技术流传的原因类似:始于一种非常理想化的愿景,但是在落地时却需要做出权衡和取舍。 它的流行开始于 Roy Fielding 的演讲,Roy Fielding 也是 HTTP 协议标准作者之一。 我猜测 Roy Fielding 的想法 […]
一般来说,有经验的程序员不会使用多对多关系。因为存在“多对多关系”说明领域模型在设计时丢失了一些重要概念,无法建立清晰的模型。 这篇文章整理了一些多对多关系拆解的案例,作为日常领域模型设计的参考资料。 为了让图更简洁,本文使用 E-R 图作为分析模式来描述,在实际工作中可以转换为类图。 订单和商品 订单和商品是最常见的多对多关系,一个订单中可以有多个产品构成的订单行,而商品 […]
CRUD (1)Event Sourcing (1)graphql (1)id (1)quarkus (1)rest (1)Spring Boot (1)商品 (1)多对多 (1)子域 (1)字符集 (1)客户端心跳 (1)并发 (1)应用架构图 (1)康威定律 (1)异步复制 (1)微服务架构 (1)技术方案 (2)技术架构 (1)技术架构图 (1)技能 (1)持续集成 (1)支撑域 (1)故障恢复 (1)数据架构图 (1)日记 (1)服务发现 (1)服务治理 (1)服务注册 (2)核心域 (1)泄漏 (1)洋葱架构 (1)深度 (1)源码剖析 (1)熔断 (1)状态 (1)生态 (1)画图工具 (1)研发团队 (1)线程 (2)组织架构 (1)编排 (1)编码 (1)耗时 (1)视频 (9)读写分离 (1)软件设计 (1)连接 (1)通用域 (1)集群化 (1)
COPYRIGHT © 2014-2024 verysu.com . ALL RIGHTS RESERVED.
Theme Kratos Made By Seaton Jiang