面试题答案
一键面试模块划分原则
- 单一职责原则:每个模块应该只负责一项明确的功能。例如,在一个用户管理微服务中,用户注册、登录功能可分别放在不同模块。
userRegistration.js
模块专门处理用户注册逻辑,userLogin.js
模块专注于登录逻辑。 - 高内聚低耦合:模块内部紧密关联实现单一功能(高内聚),模块之间尽量减少依赖(低耦合)。比如,数据访问层模块(如
userDB.js
)与业务逻辑模块(如userService.js
)之间,业务逻辑模块调用数据访问层获取或存储数据,但两者职责明确,数据访问层只关心数据库操作,业务逻辑层处理业务规则,减少不必要依赖。 - 可复用性:设计模块时考虑通用性,使其能在不同场景复用。例如一个通用的日志记录模块
logger.js
,在多个微服务中都可引入使用。
组织模块方法
- 按功能划分:以功能为导向进行模块划分。在一个电商微服务架构中,可分为产品模块(
product.js
)、订单模块(order.js
)、支付模块(payment.js
)等。每个模块管理自身相关的路由、业务逻辑和数据模型。 - 分层架构:分为数据访问层(DAL)、业务逻辑层(BLL)和表示层(如 API 接口层)。如在一个博客微服务中,
articleDB.js
负责数据库操作(DAL),articleService.js
处理文章相关业务逻辑(BLL),articleRouter.js
定义 API 接口(表示层)。 - 使用文件夹结构:通过合理的文件夹层级来组织模块。例如在项目根目录下,创建
services
文件夹存放所有微服务相关模块,每个微服务再创建自己的文件夹,如user-service
文件夹下包含controllers
、models
、routes
等子文件夹分别存放控制器、数据模型、路由相关模块。