微服务实战 原生态实现服务的发现与调用_如何发现应用的服务调用问题

news/2025/2/1 6:59:29 标签: 微服务, 架构, 云原生

总结


相关推荐

上一篇 Eureka注册中心及集群搭建

前言

上一章中,我们介绍了Eureka注册中心及集群的搭建,这一节将介绍服务的发现和调用。注意,这个时候我们只有注册中心,并没有引入其他的组件,所以需要使用SpringCloud原生态的服务发现和调用的方式实现,循序渐进的带你走入微服务的世界。

上篇文章我们已经创建好了注册中心,这次我们需要创建一个服务提供者(provider)和一个服务消费者(consumer)两个项目。


一、服务提供者

  • 新建Maven项目provider
  • 引入项目依赖
    <parent>
        <groupId>com.cxy965</groupId>
        <artifactId>parent</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../parent/pom.xml</relativePath>
    </parent>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>
  • 新建配置文件application.yml
server:
  port: 8002
spring:
  application:
    name: provider

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8001/eureka/
    fetch-registry: true
  • 创建启动类和服务接口,为了简便,暂时将服务接口放在了启动类,实际项目中,最好还是要放在controller中。
/**
 * @Author:公众号:程序员965
 * @create 2022-06-06
 **/
@EnableEurekaClient
@SpringBootApplication
@RestController
public class ProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class, args);
    }

    @GetMapping("/hello")
    public String hello(String name) {
       return "Hello "+name;
    }
}
  • 启动验证一下,可以正常返回。


二、服务消费者

  • 参考provider项目创建consumer项目
  • 修改配置文件中的端口和应用名称为8003、consumer
  • 创建启动类和服务消费代码
/**
 * @Author:公众号:程序员965
 * @create 2022-06-06
 **/
@EnableEurekaClient
@SpringBootApplication
@RestController
public class ConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }

    @Bean
    RestTemplate restTemplate() {
        return new RestTemplate();
    }

    @Autowired
    DiscoveryClient discoveryClient;
    @Autowired
    RestTemplate restTemplate;

    @GetMapping("/hello")

http://www.niftyadmin.cn/n/5839107.html

相关文章

从训练到生产:AI 模型如何突破困境实现高效部署?

随着人工智能的发展&#xff0c;模型变得越来越复杂&#xff0c;导致规模增大和延迟增加&#xff0c;这给模型部署到生产环境带来了困难。在性能和效率之间保持平衡往往是一项具有挑战性的任务&#xff0c;模型越快、越轻量化&#xff0c;就越容易部署到生产环境中。在包含超过…

强化学习笔记——4策略迭代、值迭代、TD算法

基于策略迭代的贝尔曼方程和基于值迭代的贝尔曼方程&#xff0c;关系还是不太理解 首先梳理一下&#xff1a; 通过贝尔曼方程将强化学习转化为值迭代和策略迭代两种问题 求解上述两种贝尔曼方程有三种方法&#xff1a;DP&#xff08;有模型&#xff09;&#xff0c;MC&#xff…

DeepSeek 遭 DDoS 攻击背后:DDoS 攻击的 “千层套路” 与安全防御 “金钟罩”

当算力博弈升级为网络战争&#xff1a;拆解DDoS攻击背后的技术攻防战——从DeepSeek遇袭看全球网络安全新趋势 在数字化浪潮席卷全球的当下&#xff0c;网络已然成为人类社会运转的关键基础设施&#xff0c;深刻融入经济、生活、政务等各个领域。从金融交易的实时清算&#xf…

具身智能体空间感知基础!ROBOSPATIAL:评测并增强2D和3D视觉语言模型空间理解水平

作者&#xff1a;Chan Hee Song, Valts Blukis,Jonathan Tremblay, Stephen Tyree, Yu Su, Stan Birchfield 单位&#xff1a;俄亥俄州立大学&#xff0c;NVIDIA 论文标题&#xff1a;ROBOSPATIAL: Teaching Spatial Understanding to 2D and 3D Vision-Language Models for …

Web 视频播放前前后后那些事

所有这些网站实际上仍然使用video标签。但是&#xff0c;它们不只是在src属性中设置视频文件&#xff0c;而是使用功能更强大的Web API&#xff08;Media Source Extensions&#xff09;。 Media Source Extensions “Media Source Extensions”&#xff08;通常简称为“ MSE…

WPS怎么使用latex公式?

1、下载并安装mathtype https://blog.csdn.net/weixin_43135178/article/details/125143654?sharetypeblogdetail&sharerId125143654&sharereferPC&sharesourceweixin_43135178&spm1011.2480.3001.8118 2、将mathtype嵌入在WPS MathType面板嵌入器,免费工具…

玄机靶场--第二章 日志分析-apache日志分析

文章目录 第二章 日志分析-apache日志分析1、提交当天访问次数最多的IP&#xff0c;即黑客IP&#xff1a;2、黑客使用的浏览器指纹是什么&#xff0c;提交指纹的md5&#xff1a;3、查看包含index.php页面被访问的次数&#xff0c;提交次数&#xff1a;4、查看黑客IP访问了多少次…

ESP32-S3模组上跑通esp32-camera(39)

接前一篇文章:ESP32-S3模组上跑通esp32-camera(38) 一、OV5640初始化 2. 相机初始化及图像传感器配置 上一回继续对reset函数的后一段代码进行解析。为了便于理解和回顾,再次贴出reset函数源码,在components\esp32-camera\sensors\ov5640.c中,如下: static int reset…