1 Star 0 Fork 1

徐龙 / krpc

forked from smile杨 / krpc 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

Build Status

Logo

如何使用

编译好的环境 https://github.com/yangzhenkun/krpc/blob/master/krpc.rar

1.服务端

解压后server文件夹中就是服务端环境,如demo所示,server/service中有一个user文件,就是我们部署的user服务,下面有两个必须的文件夹conf(配置文件)

log4j.xml是该服务日志的标准的log4j配置文件,如果想修改日志路径

<!-- 输出日志到文件  每天一个文件 -->
  	<appender name="dailyRollingFile"
  		class="org.apache.log4j.DailyRollingFileAppender">
  		<param name="Threshold" value="info"></param>
  		<param name="ImmediateFlush" value="true"></param>
  		<param name="File" value="D:/opt/krpc/log/user/krpc.log"></param>
  		<param name="DatePattern" value="'.'yyyy-MM-dd'.log'"></param>
  		<layout class="org.apache.log4j.PatternLayout">
  			<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss\} %-5p] [%t] {%c:%L}-%m%n"></param>
  		</layout>
  	</appender> 

修改值即可

server.xml文件为服务的配置文件

<configuration>


<!-- 连接相关参数 -->
	<property>
		<!-- 该服务监听的本机IP和tcp端口 -->
		<connection ip="127.0.0.1" port="17999" timeout="3000"/>
		<netty workerCount="1"/>
	</property>
	
	
	<!-- 所有能提供服务的接口 -->
	<services>
		<!-- name的值为接口名字,客户端通过代理工程生成接口时需要, impl值为具体实现类全路径  -->
		<service name="userService" impl="com.a123.service.user.impl.UserServiceImpl"/>
	</services>
	
	
	
	</configuration>

一个服务中所有对外的接口必须在services中配置,规则如上注释所示。

编写服务端代码会需要一个接口包和一个实现包,将源码生成jar包后,放在server/service/user/lib中,这里以user服务为例,你可以自己定义这个文件名的名字来标识这个服务。

启动 启动在server/bin里面,执行

java -jar com.krpc.server-0.0.1.jar 服务名

命令,查看日志,如果看到 启动成功,监听端口*** 的日志,恭喜你,服务端启动成功。

2.客户端

需要引入KRPC客户端,由于项目还没有发布到maven中央仓库,用户可以将client包发布到自己本地,或者直接将该com.krpc.client-0.0.1.jar包加入项目。

使用需要先调用KRPC.init("client配置文件")进行初始化 配置在client/client.xml中


	<Service name="user" id="1" maxThreadCount="50">
		<Commmunication>
            <SocketPool bufferSize="4096" minPoolSize="1" maxPoolSize="5" nagle="true" autoShrink="00:00:20" sendTimeout="00:00:10" receiveTimeout="00:00:10" waitTimeout="00:00:01" maxPakageSize="102400" protected="true"/>
            <Protocol  encoder="UTF-8" compressType="UnCompress"/>
        </Commmunication>
		
        <Loadbalance>
            <Server deadTimeout="00:00:10">
                <addr name="user1" host="127.0.0.1" port="17999" maxCurrentUser="50"/>
            </Server>
        </Loadbalance>
    </Service>

sercie的name的值必须

 
	UserService service = ProxyFactory.create(UserService.class, "user", "userService");

跟create中第二个参数一直。第三个参数为服务端实现的名字,需要跟服务端的配置文件一直。

3.要注意的事情

3.1 接口包参数中目前不支持基本类型,必须使用其包装类:

例如:int必须使用Integer等

3.2 krpc.rar中的krpc相关包均为上面源码中生成

配置文件模板:https://github.com/yangzhenkun/krpc/tree/master/config_file_template

这个RPC框架是我自己造轮子学习的,并没有真实在生产环境中使用,所以看到这个项目,希望大家可以交流学习技术,提交pr,issue,完善其性能及功能,争取让它可以用于生产环境

我个人博客中关于RPC及这个KRPC的源码原理解析会在这个专栏中写道 https://blog.csdn.net/column/details/22012.html

MIT License Copyright (c) 2018 Yasin Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

My RPC FrameWork(自己写的RPC框架) 展开 收起
Java
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/xulong2005/krpc.git
git@gitee.com:xulong2005/krpc.git
xulong2005
krpc
krpc
master

搜索帮助