20221116 Dubbo+Zookeeper

Dubbo+Zookeeper实现分布式布局

加入Zookeeper

在服务器端使用docker 下载Zookeeper镜像

docker pull ovfftd6p.mirror.aliyuncs.com/library/zookeeper

下载完成后启动Zookeeper

docker run -name zk01 --restart always -d -p 2181:2181 {IMAGE ID}

使用 docker ps 查看是否启动成功
在这里插入图片描述

Dubbo

官方文档:http://dubbo.apache.org/
github:
https://github.com/apache/dubbo

https://github.com/apache/dubbo-spring-boot-project

https://github.com/apache/dubbo-spring-boot-project/blob/0.2.x/README_CN.md

Dubbo是什么?

  • Dubbo是:
    • 一款分布式服务框架
    • 高性能和透明化的RPC远程服务调用方案
    • SOA服务治理方案
    • Dubbo每天为2千多个服务提供大于30亿次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点以及别的公司的业务中。
      在这里插入图片描述
      在这里插入图片描述

编写provider代码(简单示例)

添加依赖

<!-- Dubbo Spring Boot Starter -->
   <dependency>
      <groupId>com.alibaba.boot</groupId>
      <artifactId>dubbo-spring-boot-starter</artifactId>
      <version>0.2.1.RELEASE</version>
   </dependency>
   <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>dubbo</artifactId>
      <version>2.6.5</version>
   </dependency>

<!--Zookeeper客户端Curator-->
   <dependency>
      <groupId>org.apache.curator</groupId>
      <artifactId>curator-recipes</artifactId>
      <version>2.12.0</version>
   </dependency>

代码

实体类

public class User implements Serializable {
    private int id;
    private String name;
    private int age;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

服务接口

public interface UserService {
    public User getUserById(int id);
}

服务实现类

@Service
@com.alibaba.dubbo.config.annotation.Service
public class UserServiceImpl implements UserService {
    @Override
    public User getUserById(int id) {
        User user = new User();
        user.setId(id);
        user.setAge(20);
        user.setName("zzm");
        return user;
    }
}

application.properties

server.port=8081

spring.application.name=dubbo-provider-user

dubbo.application.name=dubbo-provider-user

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

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

springboot启动类

@SpringBootApplication
@EnableDubbo
public class DemoproviderApplication {

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

}

执行springboot启动类

编写consumer代码(简单示例)

加入依赖

<!-- Dubbo Spring Boot Starter -->
<dependency>
   <groupId>com.alibaba.boot</groupId>
   <artifactId>dubbo-spring-boot-starter</artifactId>
   <version>0.2.1.RELEASE</version>
</dependency>
<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>dubbo</artifactId>
   <version>2.6.5</version>
</dependency>

<dependency>
   <groupId>org.apache.curator</groupId>
   <artifactId>curator-recipes</artifactId>
   <version>2.12.0</version>
</dependency>

代码

实体类和服务接口 与provider一致
在这里插入图片描述
ConUserService

public interface ConUserService {
    public User getUserById(int id);
}

ConUserServiceImpl

@Service
public class ConUserServiceImpl implements ConUserService {

    @Reference
    private UserService userService;


    @Override
    public User getUserById(int id) {

        return userService.getUserById(1);
    }
}

UserController

@RestController
public class UserController {

    @Autowired
    private ConUserService service;

    @GetMapping("user/{id}")
    public User getById(@PathVariable("id") int id){
        User userById = service.getUserById(id);
        return userById;
    }
}

application.properties

server.port=8082

spring.application.name=dubbo-consumer-user

dubbo.application.name=dubbo-consumer-user

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

执行springboot启动类

加入Dubbo管理控制台

自己封装了一个jar 可以直接使用

需要修改的地方

在这里插入图片描述
在这里插入图片描述
修改完后打开cmd 使用java -jar jar包

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值