实现面向微服务的架构
1. 微服务封装后的调用问题
在将系统封装为微服务架构(MSA)后,调用者(如 DisplayManager
)无法通过所需接口直接访问被调用类(如 ContentProvider
)。因为微服务之间仅通过轻量级机制(如 RPC 或事件)进行通信,所以必须实现一个技术层。具体做法是,在包含被调用类的微服务中,将提供的接口实现或暴露为 Web 服务。
例如,生成一个 WebService
类来暴露 ContentProvider
的方法。为 ContentProvider
的每个公共方法在 WebService
中创建一个对应的方法,作为代理接收请求。代理方法调用相应的方法并返回结果。从调用微服务的角度,生成一个 WebConsumer
类来实现所需接口,并处理与对应 WebService
类的网络调用。
2. 实例处理
在多个微服务之间创建和共享类的实例时,会面临一些问题。这里提出了一种结合设计模式的方法来解决这些问题。
- 工厂模式 :用于解耦不同集群中类的实例创建。例如,使用一个接口作为对象工厂,替代 DisplayManager
对 ContentProvider
的实例化。为了解耦微服务之间的方法调用,使用相同的提供/所需接口来定义这些对象工厂方法。具体来说,在所需/提供的接口中添加一