8 快速入门 dubbo


8 快速入门 dubbo

所需资料
https://wwn.lanzoub.com/b01jp495e 密码:7plr

注册中心 Zookeeper

  • 官方推荐使用 zookeeper 注册中心;
  • 注册中心负责服务地址的注册与查找,相当于目录服务;
  • 服务提供者和消费者只在启动时与注册中心交互,注册中不转发请求,压力较小;
  • Zookeeper 是 apache hadoop 的子项目,是一个树形的目录服务,支持变更推送,适合作为
    dubbo 的服务注册中心,工业强度较高,可用于生产环境;

入门 demo 的架构

img

注意

如果在粘贴这些web.xml 或者pom.xml里面build里面的标签发送这样的报错提示,注意哦 这可能不是错误,不会影响到我们项目的运行。

img

服务提供者

1、一个空的maven项目
2、提供一个服务接口即可

项目目录结构

图中红框的需要我们创建

img

提供方的pom.xml

各种依赖请严格按照下面的版本

  • 记得要更新pom文件哦!
  • 当dependencies中出现依赖的版本信息 说明依赖引入成功了
  • img
    
        8
        8
        UTF-8
        5.0.6.RELEASE
    

    war

    
        
            org.springframework
            spring-webmvc
            ${spring.version}
        
        
            org.springframework
            spring-core
            ${spring.version}
        
        
            org.springframework
            spring-beans
            ${spring.version}
        
        
            org.springframework
            spring-context
            ${spring.version}
        
        
            org.springframework
            spring-context-support
            ${spring.version}
        
        
            org.springframework
            spring-tx
            ${spring.version}
        
        
        
            com.alibaba
            dubbo
            2.5.7
        
        
            org.apache.zookeeper
            zookeeper
            3.4.6
        
        
            com.github.sgroschupf
            zkclient
            0.1
        
        
            javassist
            javassist
            3.11.0.GA
        
    

    
        
            
                org.apache.tomcat.maven
                tomcat7-maven-plugin
                
                    8001
                    /
                
                
                    
                        
                        package
                        
                            run
                        
                    
                
            
        
    

提供方接口
public interface HelloService {
    String sayHello(String name);
}
暴露的提供方实现

@Service 这个注解不是spring的哦

@com.alibaba.dubbo.config.annotation.Service
public class HelloServiceImpl implements HelloService {
    @Override
    public String sayHello(String name) {
        return "Hello," + name + "!!!";
    }
}
服务提供方的配置文件spring.xml
<?xml version="1.0" encoding="UTF-8"?>

    
    
    
    
    
    
    
    

提供方的web.xml
<?xml version="1.0" encoding="UTF-8"?>


    
        org.springframework.web.context.ContextLoaderListener
    
    
        contextConfigLocation
        classpath:spring/spring.xml
    


服务消费方

项目目录结构

img

消费方的pom.xml

与服务方一致,只需要修改tomcat的端口为8002

消费方的Controller

因为我们是通过浏览器去访问的,所以要创建controller层,提供对外访问的接口

@RestController
public class HelloAction {
    @com.alibaba.dubbo.config.annotation.Reference
    private HelloService hs;

    @RequestMapping("hello/{name}")
    @ResponseBody
    public String hello(@PathVariable String name) {
        return hs.sayHello(name);
    }
}
消费方的接口

注意:

  • controller中要依赖HelloService,所以我们创建一个接口;
  • 这里是消费方,不需要实现,因为实现会让服务方为我们搞定!跟8001服务提供方的线程远程通信
public interface HelloService {
    String sayHello(String name);
}
消费方的springmvc.xml
<?xml version="1.0" encoding="UTF-8"?>

    
    
    
    
    
    
    
    

消费方的web.xml
<?xml version="1.0" encoding="UTF-8"?>

    
        springmvc
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            classpath:spring/spring.xml
        
    
    
        springmvc
        /
    

启动测试

还是跟是实现zookeeper实现分布式锁一样启动哦

  • 我们在这里配置了打包之后直接运行
  • 所以我们执行打包命令即可,如果出错,先执行clean在执行package

img

如果执行出错,或者访问失败可以去查找以下问题

  • @service注解是否是dubbo的
  • linux服务器的防火墙是否关闭
  • zookeeper的注册地址是否有误 linux查看本机ip 【ip address】
  • 如果想看到自己的服务,可以先搭建dubbo的可视化工具,文章地址

当出现端口地址 且上面没有报错信息时,说明启动成功

img

可以看到我们的请求成功了

img