写点什么

精通 springcloud:服务发现,Eureka API,java 技术上难以解决的问题

用户头像
极客good
关注
发布于: 刚刚

client:



serviceUr1:



de faultZone:



http://localhost:8762/eureka/ , http://localhost:8763/eureka/



server:



port: ${PORT:8761}



---



spring:



profiles: peer2



eureka :



instance :



hos tname: peer2



metadataMap:



zone: zone2



client:



serviceUrl :



defaultZone:



http://localhost:8761/eureka/,http://localhost:8763/eureka/



server:



port: ${PORT:8762 }



spring:



profiles: peer3



eureka:



instance:



hostname: peer3



metadataMap :



zone: zone3



client:



serviceUrl:



de faultZone :



http://localhost:8761/eureka/ ,http://localhost:8762/eureka/



server:



port: ${PORT:8763}


在使用不同的配置文件名运行所有 3 个 Eureka 实例后,我们就已经创建了一个本地发现集群。如果在启动后查看任何实例的 Eureka 仪表板,那么它看起来始终是一样的,我们可以看到 3 个 DISCOVERY-SERVICE 实例,如图 4.8 所示。



下一步是运行客户端应用程序。项目中的配置设置与使用 Eureka Server 的应用程序的配置设置非常相似。defaultZone 字段中提供的地址顺序决定了对不同发现服务的连接尝试的顺序。如果无法建立与第一个服务器的连接,那么它将尝试从列表中连接第二个服务器,以此类推。与前文所述一 样, 开发人员应该设置 VM 参数 Dspring.profiles active =zone[n]来选择正确的配置文件。这里还建议设置-Xmx192m 参数。请记住,我们要在本地测试所有服务,如果没有为 Spring Cloud 应用程序设置任何内存限制,则启动后消耗大约 350MB 的堆,并且总的内存使用大约为 600MB。除非计算机上有大量内存,否则很难在本地机器上运行多个微服务实例。


spring:



profiles: zone1



eureka:



client:



serviceUrl:



defaultZone:



http://localhost:8761/eureka/. http://localhost:8762/eureka/ , http://1ocalhost:



8763/eureka/



server:



port: $(PORT:80817



spring:



profiles: zone2



eureka:



client:



serviceUrl:



defaultZone:



http://1ocalhost:8762/eureka/.http://localhost:8761/eureka/ , http://localhost:



8763/eureka/



server :



port: ${PORT:8082}



spring:



profiles: zone3



e


【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


ureka:



client:



serviceurl:



defaultZone:



http://localhost:8763/eureka/ , http://localhost: 8761/eureka/,http://localhost:



8762/eureka/



server:



port: ${PORT:8083}


现在再来看一下 Eureka 仪表板。尽管应用程序最初只连接到发现服务的一个实例,但我们在任何地方都注册了 3 个客户端服务实例。无论进入哪个发现服务实例的仪表板,结果都是相同的。这就是该练习的确切目的。现在可以创建一些额外的实现以证明一切都已如预期一样工作,如图 4.9 所示。



客户端应用程序除了将打印所选配置文件名称的 REST 端点公开之外并无其他操作。配置文件名称指向特定应用程序实例的主发现服务实例。以下 @RetController 实现非常简单,它将打印当前区域的名称。


eRestController



public class ClientController {



@Value ("S {spring.profiles}")



private String zone;



@GetMapping("/ping")



public String ping() {



return "I'm in zone”+ zone;


最后,开发人员可以继续实现 API 网关。当然,详细介绍 Zuul、Netlix 的 API 网关和路由器提供的功能超出了本章的范围( 后续章节将对此展开详细的讨论)。Zuul 现在将有助于测试我们的示例解决方案,因为它能够检索在发现服务器中注册的服务列表,并在客户端应用程序的所有正在运行的实例之间执行负载均衡。正如以下配置片段所示,开发人员可以使用侦听端口 8763 的发现服务器。所有包含/api/clien/**路径的传入请求都将路由到 client-service.

用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
精通springcloud:服务发现,Eureka API,java技术上难以解决的问题