Springboot+dubbo+zookeeper实现简单RPC调用

前提准备:

安装zookeer:https://blog.csdn.net/chengweimam/article/details/105032158
搭建dubbo-admin控制台(非必须,但是为了更加直观观测系统,以及更易维护,最好进行搭建):https://blog.csdn.net/chengweimam/article/details/105034201

需要的maven依赖

       
            org.springframework.boot
            spring-boot-starter-web
        

        
        
            org.apache.dubbo
            dubbo-spring-boot-starter
            2.7.3
        
        
        
            com.github.sgroschupf
            zkclient
            0.1
        
        
        
            org.apache.curator
            curator-framework
            2.13.0
        
        
        
            org.apache.curator
            curator-recipes
            2.13.0
        
        
        
            org.apache.zookeeper
            zookeeper
            3.4.14
            
                
                
                    org.slf4j
                    slf4j-log4j12
                
            
        

在开始编写代码前,要先确认开启zookeeper注册中心服务。

1.创建服务端

我们首先创建一个服务端项目provider-server模拟售票系统。
Springboot+dubbo+zookeeper实现简单RPC调用_第1张图片
在pom文件中导入上述所有依赖,并编写配置文件application.properties。

server.port=8081

#服务应用名称
dubbo.application.name=provider-server
#服务应用id
dubbo.application.id=provider-server
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#表明这是一个server
dubbo.protocol.status=server
#手动配置服务端口
#dubbo.protocol.port=12345
#哪些包的服务要被注册
dubbo.scan.base-packages=cn.kgc.zhx.service

创建服务接口TicketService

public interface TicketService {
    String getTicket();
}

创建服务实现类TicketServiceImpl

//注意!这里的@Service注解是dubbo包下的,不是Spring包下的,千万不要导错,这里是将此服务放到dubbo服务运行容器
@Service 
@Component("ticketService")
public class TicketServiceImpl implements TicketService {
    @Override
    public String getTicket() {
        return "一张票";
    }
}

编写完成后我们启动项目。然后去dubbo-admin管理控制台看一下服务是否注册成功;
Springboot+dubbo+zookeeper实现简单RPC调用_第2张图片这里显示我们的服务已经注册成功了。

2.创建消费端

再创建一个消费端项目consumer-server模拟消费系统。
Springboot+dubbo+zookeeper实现简单RPC调用_第3张图片

同样在pom文件中导入上述所有依赖,并编写配置文件application.properties。

server.port=8082

#消费者去拿服务,需要暴露自己的名字
dubbo.application.name=consumer-server
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181

这里需要服务端像消费端提供接口,因此我们需要编写与服务端包名,接口名完全相同的接口
TicketService:

@Component("ticketService")
public interface TicketService {
    String getTicket();
}

消费者自己的实现类:UserServiceImpl

@Component("userService")
public class UserServiceImpl {
    //这个注解是dubbo下的,这里的ticketService是在zookeeper注册中心取到的
    @Reference
    TicketService ticketService;
    public void getTicket(){
        String ticket = ticketService.getTicket();
        System.out.println(ticket);
    }
}

编写完成后启动消费者项目,进入dubbo-admin管理控制台查看。

Springboot+dubbo+zookeeper实现简单RPC调用_第4张图片消费者注册完成。

最后编写测试类,测试一下是否获取成功。


@SpringBootTest
class ConsumerServerApplicationTests {
    @Autowired
    UserServiceImpl userService;
    @Test
    void contextLoads() {
        userService.getTicket();
    }
}

Springboot+dubbo+zookeeper实现简单RPC调用_第5张图片
输出成功,最简单的分布式系统搭建和测试完成!

你可能感兴趣的:(springboot,分布式)