BK-HCM 是基于微服务架构设计的,整体分为四层:
- 访问层:提供web服务界面;系统的API服务网关,外界API调用通过APIGateway访问接入层进行转发
- 服务层: 根据应用场景对资源管理层的原子接口进行封装提供服务
- 资源层: 对资源类型进行抽象和管理,提供原子接口服务
- 基础设施层: 提供系统所需的数据存储、第三方系统调用、服务发现等基础服务
为了加强系统的重用性,维护性,扩展性,按高内聚低耦合原则设计架构,按模块的功能和关联关系进行划分:
- 对外的web服务负责系统和用户的交互,不向系统其他服务提供功能,是一个独立的功能层级,属于访问层
- 系统需要对外提供API服务,涉及系统整体的负载均衡、限流、安全防护等功能,属于访问层
- 系统的内部服务划分为统一的服务层,实现业务逻辑并对外提供服务。按照功能划分为两层,底层是用于数据访问的资源管理层,实现资源自身管理相关的业务逻辑,不同资源之间区分清晰。上层是面向业务场景的应用场景层,聚合多个服务的功能实现复杂场景
- 系统使用的基础服务划分为统一的基础设施层,提供与业务逻辑无关的基础功能
设计 BK-HCM 微服务架构时充分考虑了以下原则:
- 单一职责原则:每个微服务应该只负责一项业务功能,并且将其拆分为更小、更独立的服务单元
- 微服务自治原则:每个微服务都应该是自治的,即它可以独立部署、扩展和升级,不依赖于其他服务的决策
- 水平扩展原则:微服务应该可以水平扩展,以应对不同规模和负载的需求
- 服务发现和注册:微服务应该使用服务发现和注册机制,以便其他服务可以找到它们所依赖的服务
- 隔离原则:微服务应该相互隔离,以保护系统在某些服务故障或耗费过多资源的情况下依然可靠
- 可观察性原则:微服务应该为其操作和性能提供可观察性,以便系统管理员和开发人员可以监视和诊断服务的运行情况