什么是上下文映射(Context Mapping)?如何设计上下文映射?

  • Post category:Python

什么是上下文映射(ContextMapping)?

上下文映射是将不同的业务领域上下文(BC,Business Context)之间的函数调用关系及数据交互关系进行建模的过程。

在微服务架构中,每一个服务都具有自己的业务上下文,例如:订单服务、用户服务、商品服务等,这些服务会协同完成复杂的业务场景。而上下文映射的目的就是为了建立不同上下文之间的依赖关系及访问方式,确保微服务之间能够良好的协同工作。

如何设计上下文映射?

  1. 识别业务上下文(Business Context)

在进行上下文映射的设计前,首先要明确每一个微服务的业务上下文。业务上下文需要包含服务所需的领域模型、充血模型及持久化模型等。

  1. 明确上下文交互方式

在设计上下文映射时,需要准确的描述每一个上下文之间的交互方式,主要分为同步调用和异步消息两种方式。

同步调用:服务间进行同步调用,一般是通过服务发现、负载均衡等技术,将请求分发到可用服务的实例上。

异步消息:服务之间通过消息队列进行交互,服务发现后向消息队列发送消息,消息队列将消息发送给消费者服务,消费者再进行业务处理。

  1. 确定上下文映射类型

上下文映射分为三种类型,分别为共享内核、开放主机和防腐层。需要根据业务特点设定映射类型。

共享内核:将多个子域合并到一个上下文中,以共享代码库和数据库的方式进行交互。

开放主机:通过一个服务网关将不同的业务服务暴露给其他的服务,其他服务通过服务网关进行访问。

防腐层:将其他外部服务或来自不同技术平台的不同模块的API包装成内部服务,以提升服务的可维护性和独立性。

示例1:开放主机

假设订单服务需要访问用户服务,用户服务需要获取用户基本信息、用户地址等信息,此时可以通过开放主机的方式解决。

订单服务通过服务网关访问用户服务时,使用OAuth2进行身份验证,用户服务通过后向订单服务返回用户的个人信息。

示例2:防腐层

假设订单服务需要访问库存服务,但库存服务是由另一个供应商提供的,且使用的技术和编程语言都不同,此时可以使用防腐层。

订单服务通过防腐层访问库存服务,防腐层对库存服务提供的接口进行包装,使其符合订单服务要求的接口,并且维护自己的领域模型,以便订单服务顺利进行调用,增强服务的可维护性和独立性。

总之,上下文映射是微服务架构中非常重要的设计模式之一,良好的上下文映射能够保证微服务间的正常协同工作,并且提高了服务的可维护性和独立性。