springboot+dubbo+zookeeper

栏目: Java · 发布时间: 6年前

内容简介:1、在docker环境下安装zookeeper1、pom文件添加dubbo依赖2、application.properties 配置

一、环境准备

1、在 docker 环境下安装zookeeper

# ##安装zookeeper
# docker pull zookeeper
# ##启动zookeeper
# docker run --name zookeeper-01 --restart always -d -p 2181:2181 zookeeper
# ##部署dubbo-admin服务监控平台
# ## 下载dubbo-admin-2.6.0.war包,并在docker环境下部署tomcat容器
# docker pull tomcat
# ## 从docker hub 拉取Tomcat,并将打好的war包上传之宿主机器一个目录下如:/home/dubbo-admin-2.6.0.war
#  ##  启动tomcat,并用浏览器访问http://host_path:8080查看tomcat启动情况,记得将dubbo-admin配置文件中的zk ip 修改为zk容器的ip而不是宿主机器的ip(天坑)
# ## 查看docker 容器ip 
# docker inspect 364c77111927| grep IPAddress
# docker run -it --name dubbo-admin -d --rm -p 8080:8080 tomcat  
# ## 进入docker容器中,并查看tomcat容器路径
# docker exec -i -t <docker_name>  bash
# ## 将宿主机器的war包复制到docker容器中:
#从主机复制到容器 
sudo docker cp host_path(宿主机器路径) containerID:container_path(容器路径)
# ## 从容器复制到主机 
# docker cp containerID:container_path host_path
# ## 例如:复制及自动部署完成之后访问dubbo-admin服务管理平台http://host_path:8080/dubbo-admin-2.6.0
# docker cp /home/dubbo-admin-2.6.0.war 603140acbd3c:/usr/local/tomcat/webapps
# ## 镜像打包 否则下次启动还需重新部署
docker commit -m "message" -a  "author" ${CONTAINER_ID}  ${NEW_IMAGE_NAME}
复制代码

二、项目配置

服务端配置

1、pom文件添加dubbo依赖

<!-- Spring Boot Dubbo 依赖 -->
        <dependency>
            <groupId>io.dubbo.springboot</groupId>
            <artifactId>spring-boot-starter-dubbo</artifactId>
            <version>${dubbo-spring-boot}</version>
        </dependency>
复制代码

2、application.properties 配置

## Dubbo 服务提供者配置
spring.dubbo.application.name=provider
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
spring.dubbo.scan=com.wxx.demo.dubbo
复制代码

这里 ZK 配置的地址和端口,就是上面本机搭建的 ZK 。如果有自己的 ZK 可以修改下面的配置。配置解释如下:

spring.dubbo.application.name 应用名称

spring.dubbo.registry.address 注册中心地址

spring.dubbo.protocol.name 协议名称

spring.dubbo.protocol.port 协议端口

spring.dubbo.scan dubbo 服务类包目录

3、服务提供者代码

@Component//将该服务纳入spring容器中
@Service(version = "1.0.0")//使用dubbo提供的service注解,通过version提供版本号
public class MallOrderServiceImpl implements MallOrderService {

    @Autowired
    private MallOrderMapper orderMapper;

    @Override
    public MallOrder getOrderById(String orderId) {
        return orderMapper.selectByPrimaryKey(orderId);
    }

    @Override
    public Integer saveOrder(MallOrder order) {
        return orderMapper.insert(order);
    }
}

复制代码

4、MallOrder 实体要实现序列化接口

客户端配置

1、添加依赖同上

2、application.properties 配置

## 避免和 server 工程端口冲突
server.port=8081
 
## Dubbo 服务消费者配置
spring.dubbo.application.name=consumer
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
spring.dubbo.scan=com.wxx.demo.dubbo
复制代码

3、消费者代码

@Component
public class DubboConsumerService {
 
    @Reference(version = "1.0.0")//@Reference(version = “1.0.0”) 通过该注解,订阅该接口版本为 1.0.0 的 Dubbo 服务。
    MallOrderService mallOrderService ;
 
    public void printCity() {
        String orderId="TD106986521";
        MallOrder order = mallOrderService .getOrderById(orderId);
        System.out.println(order .toString());
    }
}
复制代码

总结踩过的坑

1、使用dubbo注解开发,一定要注意使用

spring.dubbo.scan=com.wxx.demo.dubbo//扫描服务实现的包,否则注册不到服务
复制代码

2、dubbo-admin看不到注册的服务除了网上常规的group配置外,要检查dubbo-admin启动日志是不是有连接zk超时报错提示,解决此类问题是设置zk连接超时时长,再就是dubbo-admin配置文件配置的是否是zk容器的ip而不是宿主机器的ip


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Pro CSS Techniques

Pro CSS Techniques

Jeff Croft、Ian Lloyd、Dan Rubin / Apress / 2009-5-4 / GBP 31.49

Web Standards Creativity: Innovations in Web Design with CSS, DOM Scripting, and XHTML一起来看看 《Pro CSS Techniques》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具