您的位置:首页 > 其它

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

2016-12-22 16:33 477 查看

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  rpc