small-rpc 框架(一)-项目结构

small-rpc 框架(一)-项目结构

项目结构

在这里插入图片描述

  • hello-api: 接口
  • urpc-example-client: 客户端
  • urpc-example-server: 服务端
  • urpc-frame-annotation: 注解依赖
  • urpc-frame-core: 核心包

流程

  • 注册中心启动
  • RPC服务注册
  • RPC客户端服务调用

目标

  • 注册中心使用 zookeeper 实现 RPC服务过程

urpc-frame 最外层

<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>

     <version>1.0-SNAPSHOT</version>
    <groupId>org.example.urpc</groupId>
    <artifactId>urpc-frame</artifactId>
    <packaging>pom</packaging>

    <name>urpc-frame</name>
    <url>http://maven.apache.org</url>
    <modules>
        <module>urpc-example-client</module>
        <module>urpc-example-server</module>
        <module>urpc-frame-core</module>
        <module>hello-api</module>
        <module>urpc-frame-annotation</module>
    </modules>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
</project>

hello-api

接口定义,这里比较简单

@URpcClient(value = "mic-hello")
public interface HelloService {
    String hello(Hello hello);

    Hello hello2(Hello hello);
}

@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Builder
@ToString
public class Hello implements Serializable {
    private String message;
    private String description;
}

maven的xml 配置

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <parent>
        <groupId>org.example.urpc</groupId>
        <artifactId>urpc-frame</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>hello-api</artifactId>
    <name>hello-api</name>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>org.example.urpc</groupId>
            <artifactId>urpc-frame-annotation</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>
</project>

urpc-frame-annotation

rpc 相关注解定义, 接口在定义的时候需要依赖这个包,比如hello-api

/**
 * @Date: 2024/8/23 16:01
 * rpc 服务依赖注入
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface URpcAutowired {

}

/**
 * @Date: 2024/8/23 16:01
 * 客户端获取服务名称
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface URpcClient {

    /**
     * 服务名称
     * @return
     */
    String value();
}

/**
 * @Date: 2024/8/23 16:01
 * 服务器端 rpc服务实现
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface URpcService {

}

maven 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>
    <parent>
        <groupId>org.example.urpc</groupId>
        <artifactId>urpc-frame</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>

    <groupId>org.example.urpc</groupId>
    <artifactId>urpc-frame-annotation</artifactId>
    <packaging>jar</packaging>

    <name>urpc-frame-annotation</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值