自定义基于netty的rpc框架(1)

来源:互联网 发布:windows 下载 编辑:程序博客网 时间:2024/04/29 22:01

1、简介

长话短说,首先来看下这个简单demo的架构图:
这里写图片描述
这里写图片描述
demo用的是maven的聚合模式:
这里写图片描述
看下整体pom.xml的依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>tj.cmcc.org</groupId>  <artifactId>rpc.demo</artifactId>  <version>1.0-SNAPSHOT</version>  <!-- 导入了七个模块,把这七个模块聚合在一起 -->  <!-- 聚合是模块的位置 -->  <modules>    <!-- 服务端框架的实现 -->    <module>rpc-server-demo</module>    <!-- 服务器端业务的实现 -->    <module>rpc-server-impl-demo</module>    <!-- 工具类 -->    <module>rpc-utils-demo</module>    <!-- zk,服务器端注册,客户端获取服务器地址,可以做业务上的负载均衡 -->    <module>rpc-zk-demo</module>    <!-- 服务器端和客户端共同制定的接口协议 -->    <module>rpc-protocol-demo</module>    <!-- 客户端框架的实现(反向代理等)-->    <module>rpc-client-demo</module>    <!-- 客户端业务的实现 -->    <module>rpc-client-impl-demo</module>  </modules>  <packaging>pom</packaging>  <dependencyManagement>    <dependencies>      <!-- ############################################### -->      <!--rpc-server-demo-->      <!-- SLF4J -->      <dependency>        <groupId>org.slf4j</groupId>        <artifactId>slf4j-log4j12</artifactId>        <version>1.7.7</version>      </dependency>      <!-- Spring -->      <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-context</artifactId>        <version>3.2.12.RELEASE</version>      </dependency>      <!-- Apache Commons Collections -->      <dependency>        <groupId>org.apache.commons</groupId>        <artifactId>commons-collections4</artifactId>        <version>4.0</version>      </dependency>      <!-- CGLib -->      <dependency>        <groupId>cglib</groupId>        <artifactId>cglib</artifactId>        <version>3.1</version>      </dependency>      <!-- ############################################### -->      <!--rpc-server-impl-demo-->      <!-- JUnit -->      <dependency>        <groupId>junit</groupId>        <artifactId>junit</artifactId>        <version>4.11</version>        <scope>test</scope>      </dependency>      <!-- ############################################### -->      <!--rpc-utils-demo-->      <!-- SLF4J -->      <!--<dependency>-->      <!--<groupId>org.slf4j</groupId>-->      <!--<artifactId>slf4j-log4j12</artifactId>-->      <!--<version>1.7.7</version>-->      <!--</dependency>-->      <!-- Netty -->      <dependency>        <groupId>io.netty</groupId>        <artifactId>netty-all</artifactId>        <version>4.0.24.Final</version>      </dependency>      <!-- Protostuff -->      <dependency>        <groupId>com.dyuproject.protostuff</groupId>        <artifactId>protostuff-core</artifactId>        <version>1.0.8</version>      </dependency>      <dependency>        <groupId>com.dyuproject.protostuff</groupId>        <artifactId>protostuff-runtime</artifactId>        <version>1.0.8</version>      </dependency>      <!-- Objenesis -->      <dependency>        <groupId>org.objenesis</groupId>        <artifactId>objenesis</artifactId>        <version>2.1</version>      </dependency>      <!-- ############################################### -->      <!--rpc-zk-demo-->      <!-- SLF4J -->      <!--<dependency>-->      <!--<groupId>org.slf4j</groupId>-->      <!--<artifactId>slf4j-log4j12</artifactId>-->      <!--<version>1.7.7</version>-->      <!--</dependency>-->      <!-- ZooKeeper -->      <dependency>        <groupId>org.apache.zookeeper</groupId>        <artifactId>zookeeper</artifactId>        <version>3.4.5</version>      </dependency>      <!-- ############################################### -->      <!--rpc-protocol-demo-->      <!-- ############################################### -->      <!--rpc-client-demo-->      <!-- SLF4J -->      <!--<dependency>-->      <!--<groupId>org.slf4j</groupId>-->      <!--<artifactId>slf4j-log4j12</artifactId>-->      <!--<version>1.7.7</version>-->      <!--</dependency>-->      <!-- Netty -->      <!--<dependency>-->      <!--<groupId>io.netty</groupId>-->      <!--<artifactId>netty-all</artifactId>-->      <!--<version>4.0.24.Final</version>-->      <!--</dependency>-->      <!-- RPC Common -->      <!-- ############################################### -->      <!--rpc-client-impl-demo-->      <!-- JUnit -->      <!--<dependency>-->      <!--<groupId>junit</groupId>-->      <!--<artifactId>junit</artifactId>-->      <!--<version>4.11</version>-->      <!--<scope>test</scope>-->      <!--</dependency>-->      <!-- Spring -->      <!--<dependency>-->      <!--<groupId>org.springframework</groupId>-->      <!--<artifactId>spring-context</artifactId>-->      <!--<version>3.2.12.RELEASE</version>-->      <!--</dependency>-->      <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-test</artifactId>        <version>3.2.12.RELEASE</version>        <scope>test</scope>      </dependency>    <!-- ************************************************* -->      <!--需要被其他子模块引用的模块-->      <dependency>        <groupId>${project.groupId}</groupId>        <artifactId>rpc-client</artifactId>        <version>${project.version}</version>      </dependency>      <dependency>        <groupId>${project.groupId}</groupId>        <artifactId>rpc-protocol</artifactId>        <version>${project.version}</version>      </dependency>      <dependency>        <groupId>${project.groupId}</groupId>        <artifactId>rpc-server</artifactId>        <version>${project.version}</version>      </dependency>      <dependency>        <groupId>${project.groupId}</groupId>        <artifactId>rpc-utils</artifactId>        <version>${project.version}</version>      </dependency>      <dependency>        <groupId>${project.groupId}</groupId>        <artifactId>rpc-zk</artifactId>        <version>${project.version}</version>      </dependency>    </dependencies>  </dependencyManagement>  <distributionManagement>    <site>      <id>website</id>      <url>scp://webhost.company.com/www/website</url>    </site>  </distributionManagement>  <properties>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  </properties></project>
0 0