合理设计的微服务应遵循单一职责原则,因此分离应该被架构中的其他服务重用的通用功能很重要。Sidecar模式提倡通过识别每个服务中的通用功能来增强模块性,将它们组合到库中,或将它们移到单独的服务中。
顾名思义,Sidecar模式提倡分离横切关注点(cross-cutting concern),将横切关注点从实际服务中移除,推送到单独的模块、库或服务,然后这些功能可被架构中的其他服务重用。
本文讨论了微服务架构中哪种功能可以作为候选功能或可以被视为Sidecar,以及Sidecar的实现方法和优缺点。
Sidecar候选功能
面向切面编程带来了分离横切关注点这个值得关注的概念;简而言之,从代码中移除通用功能,只关注业务逻辑,这就是在服务内的每个方法/函数中重复相同代码的意义所在。
Sidecar模式本质上相似;唯一的区别是,Sidecar模式从微服务方面进行对话。将代码的通用部分抽象出来变得更重要了。
一些最重要的候选功能包括如下:
•日志聚合
•安全
•错误处理,并在发布错误日志或将错误事件推送到Kafka主题或监控队列之后采取必要的动作。
•项目中的通用功能类似于实体(数据库模型)或其他服务也使用的特定业务逻辑。
•其他服务正常运行所需要的服务或数据库配置、Kafka配置、队列配置等方面的配置更改。
•缓存需求(如果有这种需求的话)。