SpringBoot整合Dubbo分布式+zookeeper注册中心(菜鸟学习)

前言

自学多时,写一个demo做个总结。
从建项目开始,比较简单的实现springboot+dubbo+zookeeper,供初学者参考,更快的理解dubbo分布式。

环境

win10
Idea2018.1.2x64
jdk1.8.0_131
zookeeper-3.4.13
apache-tomcat-8.0.36
dubbo-admin-2.6.0.war(管理控制台,用来监控服务消费和注册情况的)

第一步:安装zookeeper和dubbo-admin

zookeeper

zookeeper自行安装,运行bin/zkServer.cmd,启动zookeeper注册中心
在这里插入图片描述

dubbo-admin

自行下载dubbo-admin-x.x.x.war放在tomcat/webapps下启动tomcat
http://localhost:8888/dubbo-admin-2.6.0/ 对应本机的tomcat端口号和aubbo-admin版本号,访问可以显示管理界面(默认账号密码都是root)
在这里插入图片描述
zookeeper,dubbo-admin的安装引用Honey_Badger大哥的帖子

https://www.cnblogs.com/tk55/p/10914326.html

第二步:创建项目

创建项目

在这里插入图片描述
Next > 给项目起名 > Finish
依次点击 Module > 绿色加号 > New Module > 新建一个springboot项目 > Next
在这里插入图片描述
起名
在这里插入图片描述
Next > 关联Web
在这里插入图片描述
Next > Finish
同理,新建api和consumer模块
在这里插入图片描述
OK,完成项目创建
在这里插入图片描述

导入依赖

api,consumer,provider都导入

      <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>
        <dependency>
            <groupId>com.sunc</groupId>
            <artifactId>api</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>

此处注意,第三个依赖是编译api用的,如果只写生产者和消费者不写api就不需要这个

项目结构

分别在consumer,api,provider中新建controller,service,serviceImpl
在这里插入图片描述

service

标准的service类

package com.sunc.api.service;

public interface HelloService {
    public String sayHello(String name);
}

controller

这里注意,没有使用自动注入注解

package com.sunc.consumer.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.sunc.api.service.HelloService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/hello")
public class HelloController {
    @Reference
    private HelloService helloService;

    @RequestMapping("/seyHello")
    public String sayHello(){
        String name = "sunc";
        return helloService.sayHello(name);
    }
}

service实现类

这里注意新增Component注解,Service注解用alibaba的

package com.sunc.provider.serviceImpl;

import com.alibaba.dubbo.config.annotation.Service;
import com.sunc.api.service.HelloService;
import org.springframework.stereotype.Component;

@Component
@Service
public class HelloServiceImpl implements HelloService {
    @Override
    public String sayHello(String name) {
        return "Hello!"+name;
    }
}

provider启动类

DubboComponentScan注解扫描serviceImpl包

package com.sunc.provider;

import com.alibaba.dubbo.config.spring.context.annotation.DubboComponentScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@DubboComponentScan("com.sunc.provider.serviceImpl")
@SpringBootApplication
public class ProviderApplication {

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

}

可以右键包,复制全路径
在这里插入图片描述

application.properties配置

consumer

server.port=8898
dubbo.application.name=consumer
dubbo.registry.address=zookeeper://127.0.0.1:2181

provider

server.port=8897
dubbo.application.name=provider
dubbo.registry.address=zookeeper://127.0.0.1:2181

启动项目

先启动provider

在这里插入图片描述

再启动consumer

在这里插入图片描述

访问controller

http://localhost:8898/hello/seyHello
在这里插入图片描述
返回hello,成功

查看dubbo-admin

可以看到一条提供者,一条消费者
在这里插入图片描述

成功

就这样简单的,在本地实现了分布式
如有偏颇敬请斧正,本厮邮箱:suncch@163.com

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值