
1) 【一句话结论】采用业务能力边界(ABC)原则拆分服务(模型管理、造价计算、协作审批为独立服务),通过RESTful(轻量)或GRPC(高性能)通信,结合Consul/Eureka实现服务注册发现,确保服务间动态通信与解耦。
2) 【原理/概念讲解】微服务拆分需遵循“业务能力边界”原则——每个服务对应一个独立业务能力(如模型管理服务负责模型全生命周期,造价计算服务负责造价计算逻辑),类比“公司部门”:模型管理是“模型部”,造价计算是“造价部”,协作审批是“审批部”,部门间通过接口协作。通信协议选择:RESTful基于HTTP,适合跨语言、轻量场景(如模型上传用POST /models/upload);GRPC基于gRPC,二进制协议,性能高(如造价计算实时计算用GRPC减少延迟)。服务注册发现:服务启动时注册自身信息(IP、端口、健康检查)到注册中心(如Consul),其他服务通过注册中心获取服务地址,实现动态发现(如协作审批服务通过Consul发现模型管理服务地址)。
3) 【对比与适用场景】以服务拆分原则为例:
| 拆分原则 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 业务能力边界(ABC) | 按业务能力拆分(如模型管理、造价计算) | 独立业务能力,跨服务协作 | BIM协同平台(模型、造价、审批是独立业务) | 避免拆分过细(如模型管理拆成“模型上传”“模型下载”导致服务过多) |
| 数据驱动 | 按数据访问模式拆分(如所有访问模型数据的操作在一个服务) | 数据一致性强 | 数据密集型应用(如数据库服务) | 可能导致服务粒度过粗(如模型管理包含上传、下载、版本控制) |
4) 【示例】模型管理服务(ModelService):
POST /api/v1/models/upload
Content-Type: application/json
{
"modelId": "model-001",
"file": "base64编码的模型文件",
"version": "1.0"
}
协作审批服务(ApprovalService)通过Consul发现ModelService地址(如192.168.1.100:8081),调用其上传接口。5) 【面试口播版答案】(约90秒)
“面试官您好,针对BIM协同平台,我会按业务能力边界(ABC)原则拆分服务:模型管理、造价计算、协作审批各为独立服务。通信上,模型管理、协作审批等轻量场景用RESTful(HTTP),造价计算等高并发实时计算用GRPC(gRPC)。服务注册发现用Consul,服务启动时注册自身信息,其他服务通过Consul动态发现地址。比如模型管理服务负责模型上传、下载,通过RESTful API暴露接口,协作审批服务通过Consul找到其地址后调用,实现解耦。”
6) 【追问清单】
7) 【常见坑/雷区】