在微服务架构中请求 REST API 端点时如何计算端口号
how to calculate a port number when requesting a REST API endpoint in a microservice architecture
我在微服务方面经验不多,不太了解如何进行
在下面描述的情况下。
我有两个 Web 服务,一个生产者和一个消费者。他们通过Apache Kafka进行通信,生产者自己周期性地抛出带有随机id和score的消息,消费者计算每个id的平均分并存储在Map中。
所以,我需要实现一个 REST API 端点,当提供一个 id 时,returns 对应于这个 id 的平均分数。实际上,我在消费者控制器中为这种需要(GET 请求)做了一个常用的方法。我检查了 Postman,效果很好。
但是如果一组中有许多消费者实例,而不是只有一个,那么客户端不知道将请求发送到哪个端口呢?毕竟,每个实例都是在 OS (server.port = 0) 选择的端口上启动的。在这种情况下,为了让一切正常工作,我需要添加一些额外的服务,或者我可以在没有它们的情况下以其他方式做一些事情吗?
Just in case, I am adding the application.properties files if somebody needed for the answer:
Producer:
spring.cloud.stream.bindings.output.destination=customers
spring.cloud.stream.bindings.output.producer.partitionKeyExpression=payload.id
spring.cloud.stream.bindings.output.producer.partitionCount=10
Consumer:
spring.cloud.stream.bindings.input.destination=customers
spring.cloud.stream.bindings.input.group=customer_group
spring.cloud.stream.instanceCount=10
server.port=0
您必须对端口信息进行硬编码,或者使用 service discovery + load balancer service 跨服务实例路由请求。
例如,Consul + Fabio,或 Kubernetes 负载均衡器
我在微服务方面经验不多,不太了解如何进行 在下面描述的情况下。 我有两个 Web 服务,一个生产者和一个消费者。他们通过Apache Kafka进行通信,生产者自己周期性地抛出带有随机id和score的消息,消费者计算每个id的平均分并存储在Map中。
所以,我需要实现一个 REST API 端点,当提供一个 id 时,returns 对应于这个 id 的平均分数。实际上,我在消费者控制器中为这种需要(GET 请求)做了一个常用的方法。我检查了 Postman,效果很好。 但是如果一组中有许多消费者实例,而不是只有一个,那么客户端不知道将请求发送到哪个端口呢?毕竟,每个实例都是在 OS (server.port = 0) 选择的端口上启动的。在这种情况下,为了让一切正常工作,我需要添加一些额外的服务,或者我可以在没有它们的情况下以其他方式做一些事情吗?
Just in case, I am adding the application.properties files if somebody needed for the answer:
Producer:
spring.cloud.stream.bindings.output.destination=customers
spring.cloud.stream.bindings.output.producer.partitionKeyExpression=payload.id
spring.cloud.stream.bindings.output.producer.partitionCount=10
Consumer:
spring.cloud.stream.bindings.input.destination=customers
spring.cloud.stream.bindings.input.group=customer_group
spring.cloud.stream.instanceCount=10
server.port=0
您必须对端口信息进行硬编码,或者使用 service discovery + load balancer service 跨服务实例路由请求。
例如,Consul + Fabio,或 Kubernetes 负载均衡器