微服务架构落地:用户服务怎么设计?兼容、扩展、多终端适配实战

供应链计划系统架构实战(四):架构蓝图--支持全球业务的微服务架构设计 上下游系统之间的交互如下图所示。 阅读详情

承接上文:大宗商品销采运储系统六层分层架构连载

在上一篇连载中,我们搭建好了大宗商品销采运储系统完整的六层分层架构。 架构骨架落地之后,公共服务层里的用户服务,往往是第一个踩坑的模块。

很多团队在初期做用户服务,只简单实现账号、密码、登录功能,当成一个单纯的账号工具。但面向供应链、销采运储这类企业级业务,用户服务远不止登录注册,它是整个系统的身份底座,一旦前期设计缺少扩展性,后续改造代价极高。

一、业务场景特点(大宗商品销采运储)

这套系统用户类型复杂,账号来源不统一:

  1. 内部员工:销售、采购、仓储、调度、财务,基于公司组织架构;

  2. 外部合作方:上游供应商、下游客户、物流承运商;

  3. 接入终端:Web 管理后台、移动端 APP、第三方对接接口;

  4. 后续扩展:未来需要对接单点登录、第三方系统账号互通。

如果账号、权限、身份信息混在业务服务中,会出现账号体系混乱、多端登录不一致、租户 / 数据隔离困难等问题。所以独立拆分用户服务,放在公共服务层是合理的选择。

二、用户服务在六层架构中的定位

回顾整体分层:

  • 展示层:Web、APP、其他客户端

  • 统一网关:鉴权、路由、限流

  • 业务服务层:采购、销售、仓储、运输等业务微服务

  • 公共服务层:用户服务、接口服务、日志服务、调度服务、报表服务
  • 公共中间件层:注册 / 配置中心、MQ、Redis、监控、链路追踪

  • 数据层:数据库集群、文件存储

用户服务归属【公共服务层】,职责:统一身份管理、账号维护、角色权限、组织管理、令牌发放。 网关只做鉴权放行,复杂权限判定交给用户服务。

三、用户服务核心模块设计

1. 账号管理模块

  • 账号基础信息:账号、姓名、手机号、邮箱、状态(启用 / 禁用 / 锁定)

  • 账号类型区分:内部账号、外部商户账号、API 对接账号

  • 密码策略:密码复杂度、过期策略、登录失败锁定、密码历史记录

扩展性预留:支持多登录方式(账号密码、短信验证码、单点登录),新增登录方式不改动原有业务代码。

2. 组织与角色模块

  • 组织架构:部门、分公司、合作商户组织,支持树形结构

  • 角色管理:角色定义、角色绑定资源

  • 权限模型:RBAC + 数据维度策略 + 条件表达式,支持复杂业务权限

    • 功能权限:页面、按钮、接口访问控制

    • 数据权限:采购只能看自己单据,仓储只能看所属仓库数据(销采储系统核心)

3. 身份认证与令牌模块

  • 登录接口:多终端统一登录入口

  • Token 管理:JWT + Redis 黑名单,支持主动登出、过期控制

  • 会话管理:多端在线控制、单点踢下线

4. 外部账号兼容模块(扩展性重点)

这是企业供应链系统最容易忽略的点:

  • 对接外部合作方账号同步;

  • 支持第三方系统单点登录;

  • API 应用账号管理,给外部对接系统分配独立应用身份,和人工账号隔离。

5. 用户审计模块

  • 登录日志、账号变更日志、权限变更记录

  • 与公共日志服务打通,统一日志上报,便于安全审计。

四、权限模型详细优化(支持复杂权限场景)

基础 RBAC 只能解决简单角色绑定资源,大宗商品销采运储业务存在大量动态、组合、多维度数据权限,单纯 RBAC 不足以支撑。 采用模型:RBAC (主体 - 角色 - 资源) + 数据策略策略集 + 条件表达式引擎

4.1 模型组成

  1. 主体(Subject)

    :用户 / 应用账号

  2. 角色(Role)

    :静态角色(采购专员、仓库管理员、财务、供应商账号);支持多角色叠加,一个用户可同时拥有多个角色,权限取并集。

  3. 资源(Resource)

    :接口、页面、按钮,以及业务数据对象(采购单、销售合同、入库单、运单)

  4. 权限策略(Policy)

    :核心扩展点,支持为【角色 / 用户】绑定多条独立数据策略

    • 策略生效范围:可绑定到角色,也可单独给某个用户单独配置策略(例外权限)

    • 策略维度:组织、仓库、客商、业务品类、单据时间区间、单据状态

    • 条件表达式:支持and/or/()组合条件,例如:

      (仓库 ID IN [A,B 仓])AND(单据创建时间 >= 本月初)AND(单据状态!= 作废)

  5. 决策引擎

    :接收入参(用户 ID、资源编码、业务上下文参数),输出是否允许访问;

    • 缓存策略结果到 Redis,减少重复计算;

    • 权限判定下沉到用户服务,业务服务只负责传入业务上下文,不写权限规则。

4.2 权限分类

  1. 操作权限(功能权限)

    控制页面、按钮、接口能否访问。例如:是否新增采购单、是否导出销售报表。

粒度到 API 资源编码,新增接口只需注册资源,无需修改权限引擎代码。

  1. 数据权限(核心复杂部分)

    支持多维度组合过滤,适配销采运储复杂隔离场景:

  • 按组织维度:只能查看本部门 / 下属分公司单据

  • 按归属维度:只能查看本人创建单据

  • 按业务对象维度:只能操作指定仓库、指定供应商、指定品类

  • 按单据状态 + 时间:仅可查看本年度已生效合同,不可查看草稿、作废单据

  • 支持排除策略:例如某采购主管拥有全部门权限,但排除某涉密大客户单据

实现思路:权限引擎返回过滤条件片段,业务服务结合条件拼装 SQL 过滤,或者在内存做数据过滤。

4.3 权限继承与优先级

  • 角色权限:通用基础权限

  • 用户独立策略:优先级高于角色策略,用于特殊例外场景

  • 支持白名单、黑名单:黑名单直接拦截,优先级最高

4.4 扩展性设计

  1. 新增业务维度(如货种、运输线路),不需要修改权限引擎核心代码,只需要新增维度参数和策略配置;

  2. 支持策略版本管理,策略变更可审计、可回滚;

  3. 支持租户隔离,内部用户、外部供应商两套主体隔离,互不干扰。

五、扩展性兼容设计要点

✅ 1. 账号模型预留扩展字段

不要硬编码字段,基础字段固定,扩展属性用 JSON / 扩展表存储。 新增用户属性(如供应商资质编号、承运商编码),不需要改表结构、不用改动核心登录逻辑。

✅ 2. 权限模型解耦

功能权限、数据权限分开。 业务服务只需要传入「当前用户 ID + 业务上下文参数」,向用户服务查询该用户可访问的数据范围,业务本身不维护权限规则。 后续新增业务模块,不需要修改用户服务核心代码,只需要注册资源和配置对应策略。

✅ 3. 多终端兼容

统一身份模型,Web/APP/ 第三方 API 使用同一套账号体系。 网关区分客户端类型,用户服务只负责身份,终端差异化逻辑放在网关或前端。

✅ 4. 水平扩容能力

用户服务是高频访问服务,设计为无状态服务,可多实例部署。 热点登录会话、权限缓存放入 Redis,减轻数据库压力。

✅ 5. 版本兼容策略

接口版本号管理(/api/v1/user),旧接口保留一段时间,平滑升级。 避免一次性全量切换导致上下游业务服务中断。

六、常见踩坑点

  1. ❌ 只用基础 RBAC:只能控制按钮,复杂多维度数据权限无法实现,大量权限逻辑散落在业务服务 SQL 里,难以维护;

  2. ❌ 内部用户和外部商户共用一张表,缺少类型隔离,后期数据混乱;

  3. ❌ 没有会话黑名单,token 无法主动失效,安全风险;

  4. ❌ 缺少扩展字段,新增业务属性就要 DDL 改表,线上发布风险大;

  5. ❌ 网关承担全部权限判断:网关太重,复杂数据权限、多条件表达式无法实现。

七、总结

在大宗商品销采运储微服务体系中,用户服务作为公共底座,核心目标不是实现登录,而是统一身份、权限隔离、预留长期扩展能力。 采用「RBAC + 策略引擎 + 条件表达式」的复合权限模型,既能满足简单按钮权限,又能支撑供应链场景下多维度、动态、可例外的复杂数据权限。把账号、组织、权限策略、审计收敛到公共服务层,业务服务只专注销、采、运、储本身业务逻辑,后续接入外部商户、多终端、第三方对接时,系统改动量最小。

下篇预告:基础服务 —— 日志服务架构设计,分布式日志采集、存储与检索落地。

.NET Core微服务企业级落地实战:从单体拆分到性能翻倍的分布式蜕变指南 在过去4年里,我主导了3个大型企业级应用的“单体转微服务”改造——从日均百万订单的电商平台,到支撑万人办公的ERP系统,再到高并发的物流调度平台。扩容难:单体应用只能整体扩容,哪怕只是支付模块压力大,也要给整个系统加服务器,资源浪费严重;迭代慢:代码耦合度高,修改一个小功能要回归测试整个系统,发布周期从“周级”拖到“月级”;故障影响大:一个模块崩溃导致整个系统宕机,电商场景下每宕机1分钟就损失数万元;技术栈僵化:.NET Framework对跨平台、容器化支持不足,无法对接云原生生态。 阅读详情

相关推荐

Microservices Patterns Thierry Legrand

微服务是一个非常热门的开发模式,它的出现使得应用变得更加灵活、可扩展,降低了单个应用的复杂性,但是同时也给系统的设计、开发和维护带来了新的复杂性。本书通过描述微服务架构的模式、原则、组件及其适用场景,阐述微服务架构在分布式系统中发挥重要作用,并总结实践经验,提升架构能力,提供指导性建议,将对微服务架构的学习和使用进行到底。本书面向开发人员和架构师,从微服务架构的历史、演化、原理、模式、原则、组件及适用场景等方面,详细地介绍微服务架构设计方法论。其中包括理论知识和实践案例。

AI天才研究院 2245

Spring Cloud微服务架构设计与实战:从组件落地到分布式事务解决

本文以电商平台为例,介绍了SpringCloud微服务架构的选型与实践。重点分析了SpringCloud的三大优势:完整生态组件、Java技术栈契合度和云原生适配性。详细讲解了Nacos服务注册、OpenFeign远程调用和Seata分布式事务等核心组件的实战应用,并提供了代码示例。文章还探讨了分布式系统监控(Prometheus+Grafana+Sleuth)和性能优化策略(缓存、线程池、分库分表)。最后指出未来可向云原生、服务网格和Serverless等方向演进,强调在微服务架构中需要平衡复杂度与可扩展

七夜zippoe的博客 1117

基于ServiceComb的天气预报微服务架构设计与实战

随着云计算与分布式架构的快速发展,微服务已成为现代软件系统构建的核心范式。Apache ServiceComb作为一款开源的微服务框架,支持多种编程语言和通信协议,具备高度可扩展性与灵活性,广泛应用于企业级分布式系统的开发中。本章将深入剖析ServiceComb的设计理念、核心组件及其在微服务生态中的定位,重点介绍其服务治理能力、多语言支持机制以及对云原生环境的良好适配性。通过理解ServiceComb的整体架构模型,读者将建立起对微服务运行机制的宏观认知,为后续实践打下坚实的理论基础。

weixin_42588877的博客 986

破解信创架构建设难点:打造兼容稳定、弹性可扩展的国产化系统架构体系

随着信创产业的持续成熟,国产化生态逐步完善,信创架构建设的难点将逐步破解,未来将呈现“兼容标准化、稳定精细化、弹性智能化”的发展趋势,逐步实现“自主可控、安全高效、弹性适配”的全栈价值。

weixin_37579147的博客 640

华为C语言笔试题(附答案)

华为C语言笔试题(附答案)     1、局部变量能否和全局变量重名?   答:能,局部会屏蔽全局。要用全局变量,需要使用 ":: "   局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。  

峰云四起 3035

永磁同步电机功率计算实战:从公式到避坑指南(附Excel计算模板)

本文详细解析永磁同步电机(PMSM)功率计算的实战技巧,涵盖三维参数体系、三相与单相系统差异、动态工况补偿及常见计算陷阱。特别提供Excel计算模板,帮助工程师快速准确完成功率计算,避免工业应用中的常见错误,提升工作效率。

x8y9z0的博客 807

信创架构建设:兼容性设计与弹性扩展实践

信创架构作为国家信息技术应用创新的关键基础设施,其核心在于解决异构技术栈的兼容性问题与系统弹性扩展需求。从技术原理看,通过硬件抽象层和适配中间件的分层解耦设计,可实现x86与ARM/LoongArch等指令集的转换,以及外设驱动的兼容性适配。在工程实践中,采用TiDB、OceanBase等兼容传统协议的数据库,结合超融合架构构建统一资源池,能显著提升系统扩展性和资源利用率。典型应用场景如金融、政务等领域,常面临Oracle迁移性能损耗、中间件版本冲突等挑战,需通过全链路压测和微服务化改造来保障稳定性。随着信

weixin_28630185的博客 155

使用Typora时LaTeX内联公式简单汇总

0、前言 在使用Typora写笔记时,有时候需要添加上LaTeX排版的公式。以下是整理出的一份简单笔记,方便记忆不清楚时查阅。笔记暂时不够完善,之后再补充。 注:有些公式语法KateX不能解析,但在Typora中可以使用(不用在意) 1、一些基本内联公式 位置关系 展示 LaTeX 说明 x2x^{2}x2 x^{2} 右上标 x2x_{2}x2​ x_{2} 右下标 2x{}^{2}x2x {}^{2}x 左上标 2x{}_{2}x2​x {}_{2}x 左下标

白白旧维的博客 4444

PostgreSQL 微服务架构开发实战:数据一致性、多租户设计与框架集成

这篇文章聚焦开发程序员视角,围绕微服务架构下 PostgreSQL 的实战落地展开,核心解决微服务拆分后的数据孤岛、分布式事务、多租户隔离、跨服务查询四大痛点,提炼出一套可直接复用的技术方案与避坑指南。

lamehsl的专栏 966

双向全桥隔离DC-DC变换器(DAB)的调制优化与挑战解析

本文深入解析了双向全桥隔离DC-DC变换器(DAB)的核心调制技术及其面临的挑战。文章从基础的相移调制(SPS)入手,逐步探讨了扩展相移(EPS)、双重相移(DPS)等进阶策略,并重点分析了电流优化与零电压开通(ZVS)等硬核优化技巧。针对DAB在实际应用中存在的建模困难、多模块并联及数字实现等挑战,提供了实用的应对策略与设计思路,旨在帮助工程师在性能、复杂度与成本之间找到最佳平衡。

weixin_29271053的博客 572

碳酸钙岩石酸蚀酸溶COMSOL建模:非均质对酸蚀通道的影响

多孔介质中的流动与化学反应耦合是石油工程和地下资源开发中的核心问题,酸液与岩石矿物的溶蚀过程直接关系到酸化增产效果。在碳酸盐岩储层中,盐酸与方解石的反应速率极快,酸液会优先沿高渗透区域推进,形成指状酸蚀通道,即wormhole。传统均质模型难以描述这种局部溶蚀行为,而数值模拟工具COMSOL通过耦合达西定律、稀物质传递与孔隙度演化方程,能够定量刻画酸蚀路径与渗透率的变化规律。工程实践中,模拟结果可用于预测酸液突破体积、优化注入排量,并为基质酸化方案设计提供依据。本文围绕碳酸钙岩石酸蚀酸溶COMSOL模型,探

weixin_29009401的博客 329

信创架构设计:兼容性与弹性扩展的实践路径

信创架构作为国家信息技术应用创新的关键基础设施,其核心在于解决国产化组件生态与系统稳定性之间的矛盾。通过硬件抽象层、中间件适配层和应用兼容性沙箱的三层解耦模型,实现对不同芯片架构和操作系统的统一支持。在金融、政务等关键场景中,弹性扩展架构通过混合调度引擎和分布式存储优化,显著提升系统可靠性和性能。本文结合ARM架构服务器和国产操作系统的实战案例,详细解析如何构建高兼容性、高可扩展的信创体系,为行业数字化转型提供可复用的技术方案。

weixin_42522009的博客 203

AudioTrack音频播放流程深度解析

深入解析Android AudioTrack音频播放的完整链路:从Java API到Native层,从共享内存Ring Buffer机制到FAST Track低延迟优化,配合源码分析带你彻底搞懂Android音频播放的底层原理

Cheson的专栏 940

云原生架构实战:10个Java设计模式赋能微服务弹性伸缩

在云原生环境中,微服务架构需要应对高并发、分布式事务和动态扩展等挑战。Java设计模式为构建弹性微服务提供了经过验证的解决方案。本文将深入解析10个关键设计模式,帮助开发者在云原生环境中实现微服务的弹性伸缩与高可用架构。 ## 1. 熔断器模式(Circuit Breaker):防止级联故障 当微服务调用出现故障时,熔断器模式能快速失败并防止故障扩散。通过监控服务调用状态,熔断器会在故障阈值达

gitblog_00057的博客 857

Java高频面试基础问题与知识点整理

Java高频面试知识点总结:覆盖高频基础知识考点+高频集合知识点深入分析+高频多线程与并发编程面试题汇总+其他扩展考察等。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 172万+

硬件测试实战笔记:SI/PI 到底测什么,怎么测?一文讲清

点选错了,数据越精确越误导。

qq_52293640的博客 259

高并发的微服务架构如何设计

作为架构师设计高并发微服务架构,落地前必须量化业务指标,作为架构设计的依据,核心思路是围绕流量管控、服务解耦、弹性伸缩、数据分层、高可用保障五大维度展开,从架构分层、组件选型、设计原则到落地实践全链路规划,同时兼顾性能、稳定性、可扩展性与运维成本。

qq_39239864的博客 713

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

API 设计实战指南:从规范到落地,打造易用、可扩展的接口体系

摘要: API设计是系统交互的关键,需兼顾易用性、一致性、可扩展性与安全性。常见误区包括命名混乱、参数不合理、版本管理缺失等,易导致维护成本高或故障。高质量API需遵循六大原则:一致性、易用性、可扩展性、兼容性、安全性与可观测性。设计环节涵盖语义化命名、HTTP方法匹配、参数校验、标准化返回、版本管理及安全防护。落地需分阶段推进规范制定、评审、开发测试及运维,并避免兼容性破坏、参数校验缺失等常见问题。最终目标是打造简洁、稳定、易维护的接口体系,支撑业务高效迭代。(149字)

2503_94434664的博客 847

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

东方通 | TongWeb中间件在微服务架构中的适配实践

本文详细介绍了东方通TongWeb中间件在微服务架构中的适配实践。文章阐述了微服务架构下中间件选型的重要性,并重点讲解了如何将Spring Boot应用平滑迁移至TongWeb,包括依赖调整、配置优化以及与微服务生态的集成。同时,深入探讨了TongWeb在会话共享、线程池调优、生产部署及监控诊断等方面的高级特性,为企业在国产化与微服务转型中提供关键的技术支撑和实战指南。

rr23456的博客 626

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

技术人互助:城市级充电系统(Java 微服务)的落地细节,含 demo 和设备适配经验

本文介绍了低价提供城市级充电系统源码及配套设备的合作方案。采用Java微服务架构,支持单车桩和汽车充电桩,源码价格仅为行业平均的1/3,包含设备通信、支付对账等核心模块。方案已落地30+国家200+城市,提供Nacos服务注册、Sentinel流量控制等技术文档。合作即赠送4G单车桩或60kW汽车充电桩,设备经宁德时代等厂商认证。提供3步快速部署指南,承诺24小时技术响应,旨在通过规模化合作降低开发成本,助力城市充电项目快速落地。

香蕉土匪的专栏 1188

中台架构设计

中台架构的主要目标是通过业务领域边界划分和微服务拆分,建立稳定的、单一职责的领域模型,让业务和应用具有更强的扩展和复用能力。

wuzhengfei1112的博客 1万+

终极指南:三大Python微服务架构框架深度对比与选择策略

Python微服务架构已成为现代应用开发的主流选择,其灵活性和可扩展性深受开发者青睐。GitHub推荐项目精选(awesome-python-applications)中收录了众多基于Django、FastAPI等框架构建的企业级应用,为微服务开发提供了丰富参考。本文将深入对比Spring Cloud、Django Microservices和FastAPI三大架构方案,帮助开发者根据项目需求做出

gitblog_00247的博客 1273

Spring AI 应用落地实战:基于 Nacos 给 Spring Boot 2 老微服务扩展 AI 能力

生产环境里还有大量基于 Spring Boot 2 + Spring Cloud Alibaba + Nacos 的老微服务。Spring AI 1.0 官方只支持 Spring Boot 3.x,老项目无法直接引入 Spring AI 的能力。本文以一个 **Spring Boot 3 + Spring AI + MyBatis-Plus 的落地项目** 为参考实现。

心若有所向往,何惧道阻且长。 596

agents24 后端系统架构 Agent 全解析:backend-architect 的可扩展 API 设计与微服务架构能力手册

> 本文深度剖析多 Harness Agent 插件市场中 `backend-development` 插件内置的 **backend-architect** 专用 Agent:从其在 [plugins/backend-development/agents/backend-architect.md](https://link.gitcode.com/i/777cf8087cc82b29695731

gitblog_00992的博客 611

Java微服务实战:基于Spring Cloud Alibaba的全链路架构搭建

本文介绍了SpringCloudAlibaba微服务架构的优势和全链路搭建方法。文章首先分析了传统单体架构的弊端,指出微服务架构已成为企业主流方案。SpringCloudAlibaba凭借开箱即用、生态完整等优势成为首选,其核心组件包括Nacos、Sentinel、Gateway等,各司其职构建完整分布式体系。随后详细讲解了从父工程创建到服务拆分、组件整合的完整搭建流程,并总结了版本匹配、服务调用等常见问题。最后强调微服务架构的扩展性和灵活性优势,建议开发者掌握这一必备技能以提升竞争力。。

2604_96749383的博客 536

低代码破局智能EPG开发困局:从技术落地到体验重构的实践路径

低代码落地智能EPG的核心价值,不在于"减少编码量",而在于重构了开发范式——将技术人员从重复编码中解放出来,聚焦核心业务逻辑与用户体验优化;将运营人员纳入开发流程,实现业务需求的快速响应。这种范式重构,不仅解决了传统开发模式的效率与成本问题,更让智能EPG的"智能化"与"个性化"特性得以快速落地。未来,随着低代码技术与AI、大数据的深度融合,智能EPG系统将具备更强的自主学习与自适应能力。例如,通过AI驱动的低代码平台,可自动分析用户行为并优化页面布局,自动适配新的终端设备,进一步降低开发与运营成本。

kfashfasf的博客 789
上一篇: 别再乱拆微服务!大宗商品进销储运系统,标准分层架构落地实战
下一篇: 微服务架构落地:日志服务怎么设计?分布式日志采集、存储与检索实战
code_slave(码畜)
博客等级 码龄10年 31粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值