
1) 【一句话结论】采用微服务+云原生架构,通过API网关统一入口,业务拆分为用户、图书、借阅等独立服务,数据库分库分表提升性能,结合加密、RBAC访问控制等安全措施,提升系统性能并保障数据安全(假设消息队列可靠、数据库分片合理)。
2) 【原理/概念讲解】首先,微服务架构是将复杂系统拆分为多个独立、松耦合的服务,每个服务聚焦单一业务功能(如用户服务负责登录注册、图书服务负责图书搜索与展示、借阅服务负责预约与归还),通过API网关作为统一入口,处理认证(如JWT)、限流(防暴力破解)、日志等。类比:公司里每个部门(市场、技术、财务)各管一块业务,通过总办公室(API网关)协调,职责清晰且扩展灵活。分库分表为解决单数据库性能瓶颈,将数据按业务或范围拆分到多个数据库实例:用户数据按ID分库,因用户查询多且关联强,减少跨库查询;图书数据按分类分表,热门书籍分类查询多,分表后单表数据量减少,查询效率提升。数据安全方面,传输用TLS1.3加密,防止中间人攻击;存储敏感字段(如密码、身份证号)用AES-256加密,密钥通过KMS集中管理,避免密钥泄露。借阅这类涉及多服务的操作,采用Saga模式保证数据一致性,将操作拆成步骤,通过消息队列确认,若某步失败则触发补偿步骤(如借阅失败后恢复库存,补偿操作可能需要额外数据库事务,增加系统负载)。另外,用户只能查看自身借阅记录,通过RBAC(基于角色的访问控制)实现,比如用户服务在查询借阅记录时校验当前用户ID与记录归属用户ID一致,仅返回该用户的信息。
3) 【对比与适用场景】
| 特性 | 微服务架构 | 传统单体架构 |
|---|---|---|
| 定义 | 应用拆分为独立服务,技术异构、独立部署 | 整个应用作为一个单体部署,模块耦合紧密 |
| 特性 | 服务间松耦合,独立扩展,职责单一 | 模块耦合紧密,技术统一,扩展困难 |
| 使用场景 | 复杂业务、高并发、高扩展需求(如图书馆APP,需支持多用户并发搜索、借阅) | 小型应用、业务简单、团队小 |
| 注意点 | 服务间通信成本高,分布式事务复杂 | 维护成本高,难以应对业务变化 |
(数据库选型对比)
| 数据库类型 | 关系型(如MySQL) | NoSQL(如MongoDB) |
|---|---|---|
| 定义 | 结构化数据,强一致性,事务ACID | 非结构化/半结构化数据,高扩展性 |
| 特性 | 强一致性,事务支持 | 最终一致性,高可扩展 |
| 使用场景 | 用户信息(结构化)、图书信息(结构化) | 借阅记录(半结构化,如借阅备注)、用户行为日志 |
| 注意点 | 写入性能,分库分表复杂 | 查询复杂,事务支持弱 |
4) 【示例】以用户登录流程为例,展示权限校验与加密过程:
POST /api/auth/login,body:{ "username": "user1", "password": "encrypted_password" }{
"status": "success",
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": { "id": 1, "username": "user1", "role": "user" }
}
}
以借阅操作(Saga模式)为例,展示核心步骤及补偿成本分析:
5) 【面试口播版答案】面试官您好,针对图书馆移动端APP后端架构,我设计的是微服务+云原生方案。核心是通过API网关统一入口,把业务拆成用户、图书、借阅等独立服务,每个服务只管单一功能(比如用户服务负责登录,图书服务负责搜索)。数据库分库分表,用户数据按ID分库,图书按分类分表,这样查询快。安全方面,传输用TLS1.3加密,存储敏感信息(如密码、身份证)用AES-256加密,密钥用KMS管理。用户只能查自己的借阅记录,借阅操作用Saga模式保证数据一致。这样既能支持登录、搜索、预约等核心功能,又能保障数据安全。
6) 【追问清单】
7) 【常见坑/雷区】