dubbo学习

All In One 架构
例如:service.java(数据访问代码,控制跳转代码,业务处理代码)
缺点:所有代码在一个类/模块中编写,容易造成代码混乱


MVC/三层架构
例如: View:视图层
       C: 控制层
       M:模型层 
缺点:虽将各个功能根据层次进行了划分,但是所有代码仍然在同一台计算机中编写,并发能力有限

RPC框架
客户端   - 服务端
优势:使用rpc,可以让一个项目部署在多个不同的计算机中
缺点:但是此种模式的ip+端口号比较分散,有一定的维护难度          
                
SOA:面向服务的架构
客户端  -  注册中心  - 服务端

             
dubbo(阿里巴巴产品)

开发dubbon程序
1.准备环境 
   (1)linux中安装注册中心zookeeper
      a.linux中安装jdk
        下载jdk.rpm
        安装:  rpm -ivh jdk.rpm,会自动安装到usr目录中的java中,
        通过pwd命令,查看jdk的安装路径
      
        配置环境变量:
        vi /etc/profile 在文件最后追加      
        export JAVA_HOME=/usr/java/jdk1.8.0_181-amd64
        export CLASSPATH=$JAVA_HOME$\lib:$CLASSPATH
        export PATH-$JAVA_HOME$\bin:$PATH
      
        刷新环境变量
        source /etc/profile
    
       b.安装zookeeper
         下载zookeeper解压,
         解压tar -zxvf zookeeper压缩文件名
         重命名zookeeper的配置文件:
         在conf目录中执行: mv zoo_sample.cfg zoo.cfg
         
         在zoo.cfg中:
         可以发现zookeeper的端口号是clientPort=2181
         设置zookeeper存放数据的目录:
         dataDir=/apps/zookeeper-3.4.12/data
         启动zookeeper:
         在zookeeper-3.4.12的根目录执行:bin/zkServer.sh start          
         了解:
              关闭zookeeper:
              在zookeeper-3.4.12的根目录执行:bin/zkServer.sh stop 
              查看zookeeper:
              在zookeeper-3.4.12的根目录执行:bin/zkServer.sh status 

    服务方代码:
    pom.xml文件
    服务方可以提供哪些服务:
    接口及实现类:(具体的服务)
    配置工作: 
        继承spring:web.xml 
        配置spring: applicationContext.xml
        
        
    消费方代码:
      a.引入依赖(jar)
         pom.xml(与服务器方pom.xml一致,改端口号;并设置客户端自己的gav)
      b.补齐web工程需要的WEB-INF/web.xml
      c.配置springmvc(通过springmvc来访问提供方)      
      编写控制器代码:
        用于访问服务方提供的服务代码

    
安装监听器(存在于dubbo-admin,而dubbo-admin又存在于incubator-dubbo-ops之中)
因此需要使用监听器,必须下载incubator-dubbo-ops,但是最新版的incubator-dubbo-ops是在spring boot中使用,
如果要使用旧的web版,则需要回退版本。但是旧版中,当前时间该版本不完整(没有提供完成的maven依赖),因此无法使用。
因此只能在历史提交记录中寻找一个可用的版本(Commints on May 18,2018),
将下载好的dubbo-admin源代码进行打包war,为了后续的运行。
执行打包好的dubbo-admin的war包;在linux中的tomcat中运行(将刚才的war包放入tomcat的webapps中即可)


在maven中引入一个 mvn仓库中不存在的jar:
将jar自己安装到本地mvn仓库:
mvn install:install-file DgroupId=com.oracle -DartifactId=ojdbc7 -Dversion=10.2.0.5.0 -Dpackaging=jar -Dfile=jar包的地址
配置
<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc7</artifactId>
    <version>10.2.0.5.0</version>
</dependency>

zookeeper+dubbo+ssm+maven架构、父工程
步骤:
1.创建父工程(students-parent)
   maven project:打包方式为pom
   
   1)在pom.xml配置所有需要的依赖jar包

2.创建实体类工程(students-pojo)
   maven project:打包方式为jar
   
   1)创建一个实体类(Student)
     如果一个对象需要从内存存到硬盘,或者需要网络传输,则必须序列化
     即public class Students implements Serializable
   2)在父工程pom.xm里面配置依赖实体类工程,
     
3.创建公共接口工程(students-common-interface)
   maven project:打包方式为jar   

   1)创建业务逻辑层接口(StudentsService)   
   2)当前接口工程maven模块依赖于实体类pojo
     在student-common-interface工程pom.xm里面配置依赖实体类工程

4.创建数据访问层(dao/mybatis)接口工程(students-dao)
    Maven Model:选择依赖于父工程,打包方式为jar
   
    1)将连接数据库操作MyBatis的映射文件StudentMapper.xml写进去
    2)MyBitis的接口(StudentMapper)
    3)将applicationContext-dao.xml和db.properties导入
    4)i:在applicationContext-dao.xml配置加载db.properties文件(连接数据的信息)
      ii:配置数据库信息(替代mybatis的配置文件conf.xml)
      iii:配置MyBaties需要的核心类:SqlSessionFactory(1.加载数据源,2.扫描mapper.xml映射文件)
      iiii:将MyBatis的SqlSessionFactory交给spring(交mapper的接口包放进去)
      
5.创建业务逻辑层实现类工程(students-service)
    Maven Model:选择依赖于父工程,打包方式为war

    1)因为war打包方式的工程,所以需要目录补充结构,
      在webapp目录下创建WEB-INF文件,在WEB-INF里面创建web.xml
    2)因为是service逻辑层所以需要依赖:dao、pojo、父工程
      父工程在创建时建立,而父工程中又依赖于pojo
      所以只需要在students-service的pom.xml文件中配置依赖dao
    3)service是一个服务、发布、启动
      在students-service的pom.xml文件中配置内置tomcat
    4)在students-service的pom.xml文件中配置公共接口工程(students-common-interface)的依赖    
    5)创建业务逻辑接口的实现类
      //Service依赖Dao(MyBitis的Mapper)
      i:在web.xml中配置监听器,监听applicationContext*.xml文件
      ii:将spring的配置文件applicationContext-service.xml导入
         (配置dubbon的应用名称、配置注册中心、配置dubbon扫描包、配置spring扫描包)
      
6.创建显示层(包含控制层)工程(students-web)
   Maven Model:选择依赖于父工程,打包方式为war
   
   1)因为war打包方式的工程,所以需要补充目录结构,
      在webapp目录下创建WEB-INF文件,在WEB-INF里面创建web.xml
   2)在web工程引入springMVC.xml
     i.web.xml文件中配置乱码处理
     ii.web.xml文件中配置拦截器,将拦截到的所有请求交给springmvc.xml的DispatcherServlet处理
   3)将springmvc.xml文件引入  
     i.配置dubbon的应用名称、配置注册中心地址、配置dubbon扫描包、将控制器所在包加入IOC容器
   4)在pom.xml中
      i.配置内置tomcat,
      ii.配置公共接口工程(students-common-interface)的依赖
   5)创建控制层StudentController
     @AutoWire调用本计算机中的对象,实现DI注入
     @Reference调用远程对象

7.启动tomcat
  将除service工程和web工程(因为没有被任何依赖注入)外所有的工程在Run As中先Maven clean后Maven install(即在本地仓库先清理后注入)

  因为数据访问层(dao/mybatis)接口工程(students-dao)的配置文件applicationContext-dao.xml没有被启动,所以当tomcat启动时访问失败
  解决办法:在业务逻辑层实现类工程(students-service)的applicationContext-service.xml文件中配置<import resource="classpath:applicationContext-dao.xml"/>,使当启动service时候顺便把dao工程的配置文件applicationContext-dao.xml启动

  在显示层(包含控制层)工程(students-web)的springMVC.xml文件中配置视图解析器

  数据访问层(dao/mybatis)接口工程(students-dao)中因为mapper.xml文件所在的路径与tomcat打包存在一个bug(mapper.xml没有被打包),
  所以需要在父工程pom.xml的<project>元素中加入
  <build>
    <resources>
      <resource>
      <directory>srv/main/java</directory> 
      <includes>
      <include>**/*.xml</include>
      </includes>
      <filtering>false</filtering>      
      </resource>
      <resource>
      <directory>srv/main/resources</directory> 
      </resource>
    </resources>
  </build>
 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值