JAVA RPC学习

RPC(Remote Procedure Call Protocol)是远程过程调用的简称,广泛应用在大规模分布式应用中,作用是有助于系统的垂直拆分,使系统更易拓展。Java中的RPC框架比较多,各有特色,广泛使用的有RMI、Hessian、Dubbo等。RPC还有一个特点就是能够跨语言。
1、RMI(java自带)
2、WebService
3、一些开源框架如Dubbo、brpc等。

这里写图片描述
Client与Server位于不同的服务器,Client通过协议调用Server端的服务。这个图就是RPC的大概过程,当然不同的RPC框架实现细节差别比较大,接下来一个个介绍。

(self.model.predict(next_state[np.newaxis])) target_f = self.model.predict(state[np.newaxis]) target_f[0][np.argmax(action)] = target self.model.fit(state[np.newaxis], target_f, epochs=1, verbose=0) state = next_stateJavaRPC(远程过程调用)可以通过使用Java RMI或Apache Thrift框架来实现。这里 total_reward += reward self.epsilon = max(self.epsilon_min, self.epsilon * self.epsilon_decay) print('Episode {}:提供一个简单的Java RMI示例: 1. 定义接口 ``` public interface MyService extends Remote { total reward = {}, epsilon = {}'.format(episode, total_reward, self.epsilon)) if save_path is not None: self.model public String sayHello(String name) throws RemoteException; } ``` 2. 实现接口 ``` public class MyServiceImpl extends Unicast.save(save_path) def predict(self, state): return self.model.predict(state[np.newaxis])[0] ``` 在上面的RemoteObject implements MyService { public MyServiceImpl() throws RemoteException { super(); } public String sayHello(String name) throws代码中,我们定义了一个强化学习代理类StocksAgent,该类用于训练和保存模型。 RemoteException { return "Hello " + name; } } ``` 3. 启动服务 ``` public class Server { public在初始化方法中,我们传入股票环境和模型等参数,并定义了一个神经网络模型,用于 static void main(String[] args) throws RemoteException, MalformedURLException { MyService service = new MyServiceImpl(); Naming.rebind("r估计动作的价值。在act方法中,我们根据当前状态选择动作,有一定的随机性mi://localhost:1099/MyService", service); System.out.println("Server started"); } } ``` 4. 客户,即以epsilon的概率随机选择动作。在train方法中,我们训练模型,并记录每个episode的端调用 ``` public class Client { public static void main(String[] args) throws RemoteException, NotBoundException, MalformedURLException { MyService service = (MyService) Naming.lookup("rmi://localhost:1099/MyService"); String result = service总奖励和当前epsilon值。在predict方法中,我们根据当前状态预测动作的价值。 最后,.sayHello("World"); System.out.println(result); } } ``` 这个示例演示了如何使用Java RMI我们定义一个主函数,用于实例化股票环境和强化学习代理,并训练模型: ```框架实现RPC。当客户端调用远程方法时,底层框架会自动处理网络通信和python if __name__ == '__main__': stock_codes = ['sh600000', 'sh600519', 'sh601318',序列化等问题,使得远程调用看起来像是本地调用一样简单。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值