Java基于Dubbox 的分布式服务的项目架构

来源:互联网 发布:ipad淘宝购物车打不开 编辑:程序博客网 时间:2024/06/08 18:42
  1. 结构

web: API项目
service: 后台服务
common: 工具类,通用的一些常量,设置等

  1. maven
pom.xmlsrc/    main        java        resources    test        java        resources

2.1 pom配置文件:
多module
profile: 一种设置
指定采用哪种设置: mvn xxxx xxxx -P {profileName} /online/dev/test
mvn xx -P [dev/test/online]
clean jetty:run -Djetty.port=8081

指定哪些文件会采用profile中设置的值

${xxxx}<resource>    <directory>${project.basedir}/src/main/resources</directory>    <filtering>true</filtering></resource>
  1. dubbo(x)
    dubbo是阿里的开源项目。 http://dubbo.io/
    dubbox是当当基于dubb的基础上继续维护开发。https://github.com/dangdangdotcom/dubbox

正常情况:
controller –>service–>dao(一个项目里面)
分布式:
serviceProvider(提供者) serviceConsumer(消费者) registion(注册中心)

UserController ->UserService

  1. service项目构成
    client 声明interface定义的接口,最终会结合web里面的配置一起配合达到和注册中心沟通的目的。
    interface 定义接口和module, 相当于定于契约的地方,服务的提供者和消费者都需要知道的东西。
    impl 接口的实现,和注册的配置(包括注册中心的地址,需要注册的接口等,把接口暴露给注册中心)。
    ——Main.java 继承 extends Bootstrap{

                            public static void main(String[] args) {                            boot(null);                        }                        使服务不死           
  2. web的构成:

    1. web.xml 需要包括service-client中的配置文件。
    2. controller->facade->facadeImpl
  3. cache(redis的实现)
    Redis是基于内存的KV数据库: String, Set, List, Map, zSet
    超时机制

  4. 部署

nginx->tomcat->service

  1. service的部署(或 用命令 Java -jar xxxxService.jar来启动 )
    start.sh stop.sh

  2. zookeeper
    复制zoo_sample.cfg,重新命名为zoo.cfg。
    linux运行命令: sh xxx.sh
    java命令: jps -lv
    redis

  3. dubboAdmin
    修改dubbox\dubbo-admin\src\main\webapp\WEB-INF\dubbo.properties
    dubbo.registry.address=zookeeper://127.0.0.1:2181 //地址
    dubbo.admin.root.password=root //root/root
    dubbo.admin.guest.password=guest //guest/guest