我是微服务的新手,我遇到了一些概念,如服务注册和负载平衡。我有以下问题-
1.如何创建特定微服务的多个示例?
1.使用Eureka Server的Service Registry如何帮助将负载分布到微服务的多个示例上?
1.在我的场景中,我创建了3个不同的微服务,并将它们注册到服务注册中心-
服务注册表配置-
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false #this will ensure that this service
#is not itself registered as a client
fetch-registry: false
客户端配置-
eureka:
instance:
prefer-ip-address: true
client:
fetch-registry: true #true by default
register-with-eureka: true #true by default
service-url:
defaultZone: http://localhost:8761/eureka
当我停止服务时,我仍然看到服务在Eureka 上启动并运行,并收到警告-x1c 0d1xx 1c 1d 1x有人能帮我找到此问题的原因吗?
2条答案
按热度按时间icnyk63a1#
**1.**若要与另一个示例通讯,您可以使用Eureka 查找要与之通讯的服务的地址。Eureka将为您提供该服务的所有可用示例的列表,您可以选择要与之通讯的示例。
**2.**Eureka 服务器是跟踪同一系统中其他微服务的位置的微服务。这些其他微服务将自身注册到Eureka服务器,以便其他微服务在需要时可以找到它们并与其联系。Eureka服务器充当微服务的目录,允许它们查找并相互通信。(不确定这是否是您所要求的)。
**3.**要删除警告:
您可以在Eureka 服务器的属性文件中设置续订阈值限制。
d7v8vwbk2#
**1.**要在本地扩展微服务,您可以在不同的端口上运行Sping Boot 应用程序的多个示例。
首先,在application.yml文件中更新您希望缩放的微服务上的端口:
这将在每次运行应用程序时在随机端口上启动它。
如果您现在运行2个应用程序,您将在Eureka Jmeter 板上看到1个微服务示例。这是因为它们都具有相同的Eureka示例ID。要解决此问题,您需要生成一个新的示例ID,以便在同一个应用程序.yml中添加以下内容:
最后,只需多次运行同一个应用程序。您可以在InteliJ上右键单击主类并选择“运行”,然后再次运行。在IntelliJ上运行同一个应用程序的多个示例可能需要一些额外的设置,请参见链接:How do I run the same application twice in IntelliJ?
如果您使用的是Eclipse/STS,请右键单击project〉Run as〉Sping Boot App(重复两次或更多次)。
或者,如果您已经安装了maven,请打开一个终端并运行
mvn spring-boot:run
,然后打开一个新的终端并再次运行该命令。现在您应该在Eureka Jmeter 板上看到应用程序的多个示例。
注意:在生产中,微服务的扩展由Devops团队在上完成,例如,可以使用Kubernetes等容器编排平台来增加微服务的示例。
**2.**通常,API网关用于将进入的网络请求路由到微服务并进行负载平衡,而服务发现允许微服务发现并彼此通信。
使用Eureka 服务发现,微服务将在发现服务器上注册,API网关也将在Eureka服务器上注册并执行负载平衡。
负载平衡的一种方法是循环策略,其中负载平衡器将按顺序在可用示例之间轮换。这有助于在示例之间均匀地分配负载。还有其他负载平衡方法,如最小连接、基于资源(自适应)等。
**3.**您得到的错误是由于Eureka 服务器自带的自我保护模式。默认情况下,Eureka服务器期望每30秒从微服务接收一次心跳,如果在90秒内没有接收到心跳,它将注销微服务。在Eureka没有从许多服务接收到心跳信号的情况下,它将注销每个微服务直到某个限制,然后,它将进入自保存模式,并且将不再注销任何微服务,并且将尝试重新建立连接,这是因为网络问题可能导致Eureka 服务器不能接收心跳。
由于您是在本地开发并且停止运行微服务,您将看到Eureka 服务器进入自我保护模式的预期行为,您可以忽略它。