实现RPC的基本方法与步骤(SpringBoot)

提示:本文实现RPC的方法和具体步骤,注意,需要引入Dubbo2.7.7以上版本的依赖


前言

        笔者从入门Java后端至今,一直都在做笔记(电子笔记),但是始终没有动手写博客。如今笔者即将毕业,现阶段正处于实习期,虽然有了一定的Java后端基础,但仍然需快速的学习。本次起笔写博客,是想从此刻开始,对自己学到的东西进行纪录,以便日后遇到类似的问题时,能够方便快捷的解掉。本文主要记录今日在公司实习培训时,实现RPC的方法与步骤,具体如下:


一、实现RPC的思路

        由于笔者培训时,主管已经帮我配好了注册中心,所以这里先暂时忽略注册中心的配置,下文提到的Service模块和Web模块启动后,能够注册到注册中心,并且能够发现在注册中心注册的所有服务,并实现远程调用,这个过程大概如图1所示,最后在Service模块实现并暴露服务,在Web模块注入并调用服务。

       

二、具体步骤

1.在Service模块实现业务并暴露接口

        在配置好注册中心等环境后,在Service模块实现具体的业务逻辑,并且通过@DubboService注解把服务暴露,暴露的接口类需要实现远程服务接口RemoteService,代码如下所示:

// 实现并暴露接口
@DubboService(interfaceClass = RemoteService.class)
public class ServiceImpl implements RemoteService {
        // 实现 查询用户
        public AuthUser getUser(String id){
            User entity = new User();
            entity.setId(id);
            User user = userService.selectOne(id);
            return user;
        }
}

注意:RemoteService.class是一个接口,用来约束对外暴露的接口的行为,其定义如下:

/**
 * 该类定义在公共模块,comment中,提供给所有服务引用
 */
public interface RemoteService(){
    /**
     * 根据 id 查询用户信息
     * 
     */
    User getUser(Integer id);
    
    // ...其他行为(方法)
} 

2.在Web模块注入并调用接口

        使用@DubboReference在Web模块注入并调用远程接口,代码如下所示:


@RestController
@RequestMapping("/query")
public class MyController {
        // 注入远程服务,RemoteService 来自工共模块 comment 
        @DubboReference
        private RemoteService remoteService;
        
        @GetMapping("/user/{id}")
        @ApiOperation(valeu = "根据id查询用户")
        public User getUser(@PathVariable("id") Integer id){
            return remoteService.getUser(id);
        }
        
}

总结

        本文记录了在配置好注册中心等环境下,实现远程调用的思路和步骤,主要是创建和实现服务提供者Service模块 和 服务消耗者 Web模块。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值