我们团队的后端服务中,一开始只有一个大服务,所有的东西都往里面写,可以想象下,当这个服务变得不断的庞大,将会变得多么难以维护。后来逐渐把一些数据服务抽离成单独的 API 服务,在原有的服务里,就还剩一些模板渲染,数据聚合还有一些耦合的业务逻辑。目前来说拆的还不够干净,我们的目标其实是希望这个旧的服务充当一个 API Gateway,或者说一个给前端用的中间层。单一职责原则,其实是一个很重要的解耦方式,一个服务干好一件事就好了。偶然间看到下面的文章,虽然只是一些很简单的介绍,也让我了解到很多东西。也分享给 大家看看。
客户端一般都需要经过一些认证以及满足在数据传输时的安全要求,才能获得访问微服务架构中的服务的权利。不同的服务在认证上都会或多或少存在一些差异,API Gateway 就像一个集线器,用它来抹平各种服务协议之间的差异,并满足对特定客户端的特殊处理。他的存在,方便了客户端对各类服务的享用。
微服务和消费者
微服务适合用在团队可以独立设计、开发、运行服务的架构体系中。它允许系统中的各个服务存在技术多样性,团队可以在适合的场景使用合适的开发语言、数据库和网络协议。例如,一个团队中使用 JSON 和 HTTP REST,而另一个团队则可能使用 gRPC 和 HTTP/2 或者像 RabbitMQ 这样的消息代理。
有些场景中使用不同的数据序列化方式和协议可能收益巨大,但是需要使用我们服务的客户端可能会有不同的需求。由于存在各种各样的客户端,需要我们支持的数据格式也是多种多样,比如一个客户端可能希望拿到的数据是 XML 格式的,而另一个客户端则希望数据是 JSON。另一个你可能需要面对的问题是,可能不同服务之间存在着一些公共的逻辑(比如权限认证之类)