如何创建微服务的多个示例:SpringBoot和Spring云

whhtz7ly  于 2022-12-29  发布在  Spring
关注(0)|答案(2)|浏览(158)

我是微服务的新手,我遇到了一些概念,如服务注册和负载平衡。我有以下问题-
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有人能帮我找到此问题的原因吗?

icnyk63a

icnyk63a1#

**1.**若要与另一个示例通讯,您可以使用Eureka 查找要与之通讯的服务的地址。Eureka将为您提供该服务的所有可用示例的列表,您可以选择要与之通讯的示例。
**2.**Eureka 服务器是跟踪同一系统中其他微服务的位置的微服务。这些其他微服务将自身注册到Eureka服务器,以便其他微服务在需要时可以找到它们并与其联系。Eureka服务器充当微服务的目录,允许它们查找并相互通信。(不确定这是否是您所要求的)。
**3.**要删除警告:

您可以在Eureka 服务器的属性文件中设置续订阈值限制。

eureka.renewalPercentThreshold=0.85
d7v8vwbk

d7v8vwbk2#

**1.**要在本地扩展微服务,您可以在不同的端口上运行Sping Boot 应用程序的多个示例。

首先,在application.yml文件中更新您希望缩放的微服务上的端口:

server:
   port: 0

这将在每次运行应用程序时在随机端口上启动它。
如果您现在运行2个应用程序,您将在Eureka Jmeter 板上看到1个微服务示例。这是因为它们都具有相同的Eureka示例ID。要解决此问题,您需要生成一个新的示例ID,以便在同一个应用程序.yml中添加以下内容:

spring:
   application:
       name: "hotel-service"
eureka:
   instance:
       instance-id: "${spring.application.name}:${random.value}"

最后,只需多次运行同一个应用程序。您可以在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 服务器进入自我保护模式的预期行为,您可以忽略它。

相关问题