Eureka服务注册与发现
一、服务注册
注册Eureka的服务非常的简单,只需要引入spring-cloud-starter-netflix-eureka-client
的jar包即可。
1 2 3 4 | <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> |
当然,我们要在配置文件中指明注册中心的地址:
1 2 3 4 5 6 7 8 9 | server: port: 8100 spring: application: name: service-order eureka: client: service-url: defaultZone: http: //localhost:8761/eureka/ |
我们为了简单,注册中心用的是单机,大家也可以使用集群方式。
我们启动这个应用,它就是将自己的ip地址、端口、应用名称等信息向注册中心注册。我们可以打开注册中心的管理后台看到:
我们service-user服务已经注册成功了。
只要我们引入了spring-cloud-starter-netflix-eureka-client
的jar包,它就使得我们的应用即是 Eureka实例(instance,是服务的提供者)又是Eureka的客户端(client,可以注册中心发现其他的服务地址)。 Spring Cloud的服务提供和发现是在一起的,这有别于我们认识的其他的服务框架(如:dubbo)。既然服务的提供 和发现是在一起的,我们来看一看怎么发现其他服务,并完成调用。
二、服务的调用
我们已经引入了spring-cloud-starter-netflix-eureka-client
的jar包,就可以从注册中心找到其他的服务。 我们这里写个远程调用的例子供大家参考:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | @RequestMapping ( "remote" ) public class RemoteController { @Autowired private DiscoveryClient discoveryClient; @RequestMapping ( "order" ) public Order remoteOrder(){ List<ServiceInstance> instances = discoveryClient.getInstances( "SERVICE-ORDER" ); String url = instances.get( 0 ).getUri()+ "/order/detail" ; RestTemplate restTemplate = new RestTemplateBuilder().build(); Order order = restTemplate.getForObject(url, Order. class ); return order; } } |
其中,“SERVICE-ORDER”是我们order服务中的spring.application.name
的名字,discoveryClient
通过服务的名称找到对应的地址。 我们可以看到它返回的是一个List,这说明我们的服务可以搭建集群,我们取服务中的第一个地址,并通过RestTemplate
进行调用。 这种方法是比较原始的方法,Spring Cloud给我们封装更简便的Feign,它可以更方便的调用服务,并提供了负载均衡策略,这是我们下一张要讲的内容。
至此,Eureka服务注册与发现就介绍完了,示例地址:https://github.com/liubo-tech/spring-cloud-eureka。
*如果您觉得对您有帮助,请关注+推荐
*您的支持就是我继续下去的动力
*承接项目+V:ronaldoliubo
***************************************
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端