假如一个保险、CRM 系统,财务结算模块的结算方式有如下特点: 计算方式非常复杂 计算模式非常多 业务人员不希望把计算规则写到代码中,而是能保持业务可见性 当规则变化时不影响既往的业务单据 业务希望看到每类单据的计算方式和取值过程(计算透明化) 希望规则能版本化,比如保险政策变化时候能够提示用户使用了新的计算规则 某些计算需要一些准入条件,例如根据规模和用户评级采取不同的计 […]
假如一个保险、CRM 系统,财务结算模块的结算方式有如下特点: 计算方式非常复杂 计算模式非常多 业务人员不希望把计算规则写到代码中,而是能保持业务可见性 当规则变化时不影响既往的业务单据 业务希望看到每类单据的计算方式和取值过程(计算透明化) 希望规则能版本化,比如保险政策变化时候能够提示用户使用了新的计算规则 某些计算需要一些准入条件,例如根据规模和用户评级采取不同的计 […]
在计算机领域,有很多成熟的技术标准非常有价值,参考技术标准容易找到标准的开源实现,也可以自己参考其原理做出更可靠的方案。例如 IETF 的 RFC 文档是最权威的技术资料来源。查阅技术标准也是最快捷的学习方式,但是阅读门槛比较高,而且大多是英文资料。 这篇文章结合技术研讨会总结的内容,整理了在技术方案设计中可以参考和使用的技术标准。 为了更好的组织内容,先介绍一下常见的技术 […]
本期聊聊大多数架构师都会涉及的一个问题:对于一个新的系统,该选择自增 ID 还是 UUID? 我们常常会被这两种 ID 困惑,其实在和架构师交流过程中还有一些其他概念,例如数据库 ID、代理键等词汇。 我们从澄清相关概念开始本篇。 分类法和概念澄清 关于 ID 生成,我把常见的 ID 分为如下几类: 根据业务用途:数据库 ID(相当于小名)、业务编码(相当于大名)。 根据实 […]
当一个应用系统演变的非常大时,配置会变得非常混乱。 有一些业务配置在数据库的配置表中,有一些又在配置中心,其它一些可能又在前端。 如何管理这些配置呢?我把项目上的一次技术例会整理出来如下。 首先配置管理需要考虑的一些问题和原则有: 安全:配置可靠,不容易丢失配置导致不同环境逻辑出现差异,进而造成线上事故。 透明:方便查找,当业务人员需要调查逻辑问题时,能快速找出配置。 成本 […]
在项目上我们经常会遇到一些导入导出的场景,常见的有 Excel 的导入导出,以及 PDF 的导出。 这一期的技术方案总结一下相关的技术方案和实现。 Excel 的导出和导入 我们先放开脑洞枚举一下有哪些导入导出的方案。 Excel 的导出方案有: 前端导出,直接在前端导出所有的数据,甚至后端可以复用分页的查询数据接口。 由具体的领域微服务实现同步导出。 由 BFF 通过领域 […]
单元测试推广的难题 前几天被一些朋友问到怎么提高测试覆盖率,并同时有人表示在国内推广单元测试几乎不可能。 诚然在国内的项目中,推广单元测试非常困难。 其实这里面有一个误区,如果单元测试不能起到助力开发团队作用,而是一种政治任务,那么很难推广。 我所在的海外和国内的项目都还保持不错的测试覆盖率,所以我是这样回复这个问题的: 提高测试覆盖率需要设计足够好的测试策略,让单元测试或 […]
问题分析 在应用项目中,我们总会遇到很多字典项的数据,比如类型、状态等。这些数据一般是有限个可选值,在前端可能作为 Select 控件存在,用于录入、搜索等场景。 这类数据的一般作为配置存在,怎么设计才能让前后端维护方式最低呢? 我们在团队上做了很多讨论,结合过完项目的经验把潜在方案整理如下。 方案枚举 假定我们经过简单的头脑风暴,可以枚举出下面的方案,再来分析其优缺点: […]
很多文章都在讨论认证和鉴权等相关话题,我自己几年前也写过几篇类似的文章,但在实际工作中,我们常常会忽略一部分设计。我们需要思考的是,用户在完成认证并获取访问凭证后,应该在哪里验证其访问权限。 这类问题尤其是在微服务场景下非常突出,如果没有统一的方案或者约定,会造成不同的开发人员在不同服务使用不同的策略实现。 微服务下有哪些鉴权类型? 权限检查点设计一个要点是,不能一刀切,需 […]
问题 假设,业务上需要生成订单编号,其要求为: 不能太长,固定 10 位。 生成规则为:“订单类型字母缩写” + “年月日” + 步长为 1 的递增序列。 单号每天重新开始。 性能要求一般,日均单量一万左右,订单均匀分布,并发不高。 经过分析,考虑如下特点: 不能使用 UUID,因为过长且有顺序问题。 不能直接使用数据库的自增 ID 主键,可以考虑通过自增主键进行复合处理。 […]
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)微服务架构 (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)视频 (10)读写分离 (1)软件设计 (1)连接 (1)通用域 (1)集群化 (1)
COPYRIGHT © 2014-2024 verysu.com . ALL RIGHTS RESERVED.
Theme Kratos Made By Seaton Jiang