springBoot+dubbo+zookeeper实现分布式开发应用的项目实践

网友投稿 312 2022-08-21


springBoot+dubbo+zookeeper实现分布式开发应用的项目实践

目录环境搭建1.我们首先做好服务端2.启动服务端3.我们再来做客户端4.总结

环境搭建

项目结构图:

1.我们首先做好服务端

pom.xml

org.apache.dubbo

dubbo-spring-boot-starter

2.7.3

com.github.sgroschupf

zkclient

0.1

org.apache.curator

curator-framework

2.12.0

org.apache.curator

curator-recipes

2.12.0

org.apache.zookeeper

zookeeper

3.4.14

org.slf4j

slf4j-log4j12

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-test

test

application.properties

server.port=8001

# 服务应用名字

dubbo.application.name=provider-server

# 注册中心地址

dubbo.registry.address=zookeeper://127.0.0.1:2181

# 哪些服务要被注册

dubbo.scan.base-packages=com.wlm.service

TicketService

package com.wlm.service;

public interface TicketService {

public String getTicket();

}

TicketServiceImpl.java

package com.wlm.service;

import org.apache.dubbo.config.annotation.Service;

import org.springframework.stereotype.Component;

//zookeeper:服务注册与发现

@Service //可以被扫描到,在项目一启动就自动注册到注册中心

@Component //使用了Dubbo后尽量不要用Service注解

public class TicketServiceImpl implements TicketService {

@Override

public String getTicket() {

return "咸鱼_翻身";

}

}

2.启动服务端

打开服务端,开启之后不要点掉,让他在后台运行:

执行服务端的jar包,待会我们要监控服务端:

运行上面的服务端代码,然后去游览器中查看http://localhost:7001/

3.我们再来做客户端

pom.xml

org.apache.dubbo

dubbo-spring-boot-starter

2.7.3

com.github.sgroschupf

zkclient

0.1

org.apache.curator

curator-framework

2.12.0

org.apache.curator

curator-recipes

2.12.0

org.apache.zookeeper

zookeeper

3.4.14

org.slf4j

slf4j-log4j12

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-test

test

application.properties

server.port=8002

# 消费者去哪里拿服务,需要暴露自己的名字

dubbo.application.name=consumer-server

# 注册中心的地址,可以在任何电脑上!

dubbo.registry.address=zookeeper://127.0.0.1:2181

TicketService

package com.wlm.service;

public interface TicketService {

public String getTicket();

}

UserService.java

package com.wlm.service;

import org.apache.dubbo.config.annotation.Reference;

import org.springframework.stereotype.Service;

@Service //放到容器中,注意区分

public class UserService {

//想拿到provider-server提供的票,要去注册中心拿到服务

@Reference //引用, pom坐标,可以定义路径相同的接口名

TicketService ticketService;

public void buyTicket(){

String ticket = ticketService.getTicket();

System.out.println("在注册中心拿到=>"+ticket);

}

}

ConsumerServerApplicationTests.java

package com.wlm;

import com.wlm.service.UserService;

import org.junit.jupiter.api.Test;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest

class ConsumerServerApplicationTests {

@Autowired

UserService userService;

@Test

void contextLoads() {

userService.buyTicket();

}

}

运行ConsumerServerApplicationTests.java结果:拿到服务端的”咸鱼_翻身“

4.总结

前提:zookeeper服务已经开启

1.首先提供者提供服务

导入依赖配置注册中心的地址,以及服务发现名,和要扫描的包在想要被注册的服务上面增加一个注解@Service

2.消费者如何消费

导入依赖配置注册中心的地址,配置自己的服务名从远程注入服务 @Reference


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java使用System.currentTimeMillis()方法计算程序运行时间的示例代码
下一篇:使用Mybatis如何实现删除多个数据
相关文章

 发表评论

暂时没有评论,来抢沙发吧~