【微服务——远程调用&Eureka】简单调用及其相关问题

本文介绍如何使用RestTemplate实现微服务之间的远程调用,并探讨了在集群环境下如何利用Eureka进行服务发现与负载均衡。

微服务远程调用

背景:若服务1想调用服务2,为自己对应的dao1添加dao2的值,可通过RestTemplate实现远程服务调用

步骤

1.注册 RestTemplate

在服务1的启动类中注册RestTemplate

@MapperScan(...)
@SpringBootApplication
public class Application1{
    public static void main(){...}
    
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate;
    }
    
}

2.发起http请求

在service层利用RestTemplate发起http请求

@Service
public class service1{
    @Autowired
    private RestTemplate restTemplate;
    ....
    public Dao1 queryDao1ById(Long Dao1Id){
        ...
        String url = "http://127.0.0.1:8080/Application2/"+dao1.getDao2Id();
        //发起http请求,实现远程调用,可以自动将json反序列化为对象
        Dao2 dao2 = restTemplate.getForObject(url,Dao2.class);
        dao1.setDao2(dao2);
        return dao1;
    }
}

总结:想要通过服务间远程调用,需要通过restTemplate的getForObject方法即可发送http请求,返回自动处理后的对象数据。


提供者与消费者

服务提供者

一次业务中被其他微服务调用的服务

服务消费者

一次业务中,调用其他微服务的服务

特别的:一个服务既可以是提供者也可以是消费者 ,业务不同,角色不同


集群情况下

集群情况下无法采用硬编码,服务消费中怎么选择服务提供者,并判断提供者的状态是否正常?此时引入Eureka进行服务的状态记录,为消费者提供被消费者的信息,消费者在eureka-client上通过负载均衡选择合适的提供者服务器,实现远程调用

Eureka

1.eureka-server注册中心:保存服务提供者信息(服务器端口等),并动态刷新状态正常的服务提供者。

2.消费者根据服务名称向eureka拉取提供者信息后,利用负载均衡算法选择服务器,最后远程调用

3.服务提供者梅30秒向EurekaServer发送心跳请求,报告健康状态,心跳不正常会被删除信息,因此,消费者可以拉取到最新的信息

eurake的注册配置后续待更新。。。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值