本期聊聊大多数架构师都会涉及的一个问题:对于一个新的系统,该选择自增 ID 还是 UUID? 我们常常会被这两种 ID 困惑,其实在和架构师交流过程中还有一些其他概念,例如数据库 ID、代理键等词汇。 我们从澄清相关概念开始本篇。 分类法和概念澄清 关于 ID 生成,我把常见的 ID 分为如下几类: 根据业务用途:数据库 ID(相当于小名)、业务编码(相当于大名)。 根据实 […]
本期聊聊大多数架构师都会涉及的一个问题:对于一个新的系统,该选择自增 ID 还是 UUID? 我们常常会被这两种 ID 困惑,其实在和架构师交流过程中还有一些其他概念,例如数据库 ID、代理键等词汇。 我们从澄清相关概念开始本篇。 分类法和概念澄清 关于 ID 生成,我把常见的 ID 分为如下几类: 根据业务用途:数据库 ID(相当于小名)、业务编码(相当于大名)。 根据实 […]
当一个应用系统演变的非常大时,配置会变得非常混乱。 有一些业务配置在数据库的配置表中,有一些又在配置中心,其它一些可能又在前端。 如何管理这些配置呢?我把项目上的一次技术例会整理出来如下。 首先配置管理需要考虑的一些问题和原则有: 安全:配置可靠,不容易丢失配置导致不同环境逻辑出现差异,进而造成线上事故。 透明:方便查找,当业务人员需要调查逻辑问题时,能快速找出配置。 成本 […]
在项目上我们经常会遇到一些导入导出的场景,常见的有 Excel 的导入导出,以及 PDF 的导出。 这一期的技术方案总结一下相关的技术方案和实现。 Excel 的导出和导入 我们先放开脑洞枚举一下有哪些导入导出的方案。 Excel 的导出方案有: 前端导出,直接在前端导出所有的数据,甚至后端可以复用分页的查询数据接口。 由具体的领域微服务实现同步导出。 由 BFF 通过领域 […]
单元测试推广的难题 前几天被一些朋友问到怎么提高测试覆盖率,并同时有人表示在国内推广单元测试几乎不可能。 诚然在国内的项目中,推广单元测试非常困难。 其实这里面有一个误区,如果单元测试不能起到助力开发团队作用,而是一种政治任务,那么很难推广。 我所在的海外和国内的项目都还保持不错的测试覆盖率,所以我是这样回复这个问题的: 提高测试覆盖率需要设计足够好的测试策略,让单元测试或 […]
问题分析 在应用项目中,我们总会遇到很多字典项的数据,比如类型、状态等。这些数据一般是有限个可选值,在前端可能作为 Select 控件存在,用于录入、搜索等场景。 这类数据的一般作为配置存在,怎么设计才能让前后端维护方式最低呢? 我们在团队上做了很多讨论,结合过完项目的经验把潜在方案整理如下。 方案枚举 假定我们经过简单的头脑风暴,可以枚举出下面的方案,再来分析其优缺点: […]
很多文章都在讨论认证和鉴权等相关话题,我自己几年前也写过几篇类似的文章,但在实际工作中,我们常常会忽略一部分设计。我们需要思考的是,用户在完成认证并获取访问凭证后,应该在哪里验证其访问权限。 这类问题尤其是在微服务场景下非常突出,如果没有统一的方案或者约定,会造成不同的开发人员在不同服务使用不同的策略实现。 微服务下有哪些鉴权类型? 权限检查点设计一个要点是,不能一刀切,需 […]
问题 假设,业务上需要生成订单编号,其要求为: 不能太长,固定 10 位。 生成规则为:“订单类型字母缩写” + “年月日” + 步长为 1 的递增序列。 单号每天重新开始。 性能要求一般,日均单量一万左右,订单均匀分布,并发不高。 经过分析,考虑如下特点: 不能使用 UUID,因为过长且有顺序问题。 不能直接使用数据库的自增 ID 主键,可以考虑通过自增主键进行复合处理。 […]
618 (1) Agent (2) chatglm (1) checkout (1) commit (2) Disruptor (1) Excel (1) FGC (3) G1 (1) G1GC (2) git (2) GLM (1) LangChain (1) LLM (3) OpenAI (2) ParNew (3) pull (1) push (1) solid (1) UUID (1) Vim (1) ygc (1) 业务编号 (1) 事务隔离级别 (1) 依赖注入原则 (1) 分布式ID (1) 分支 (1) 单一职责原则 (1) 大模型 (2) 大语言模型 (1) 开闭原则 (1) 微博 (1) 微服务 (1) 接口隔离原则 (1) 数据字典 (1) 数据导入 (1) 数据导出 (1) 方案设计 (7) 权限 (1) 架构师 (1) 死锁 (1) 测试策略 (1) 滴滴 (1) 版本控制 (2) 订单号 (1) 认证 (1) 配置 (1) 里氏替换原则 (1) 鉴权 (1) 降级 (1)
COPYRIGHT © 2014-2023 verysu.com . ALL RIGHTS RESERVED.
Theme Kratos Made By Seaton Jiang