RPC(二)

简介: RPC(二)

每日分享

If you fear failure, you will never go anywhere.

如果你害怕失败,你将无法到达任何地方。

小闫语录

一件事情的难与易,除了事情本身涉及知识复杂与否外,最大程度取决于对待它的态度。如果心生胆怯,必定失败。


RPC

1.消息协议实现思路与divide调用参数确定

为了填上篇文章的坑,我们来实现一个二进制消息协议的小案例。这个案例要实现的是一个RPC的服务接口定义,这个RPC调用可以完成除法的操作。

首先我们看一下本地调用,这个大家都明白,所以直接上代码。

1.写一个除法的函数:

def divide(num1,num2):
    """
    除法
    :param num1: int
    :param num2: int
    :return: float
    """
    val = num1 / num2
    return val

2.在进行除法运算的时候,有可能会有异常情况,所以我们将异常定义一下。

考虑到num2可能为0的情况,我们此处自己定义异常。

class InvalidOpreation(Exception):
    def __init__(self, message=None):
        self.message = message or 'invalid operation'

整体代码实现:


    注意:此代码只作为说明。

1. class InvalidOpreation(Exception):
2.     def __init__(self, message=None):
3.         # 异常信息如果有指定则按指定输出,没有的话则输出`invalid operation`
4.         self.message = message or 'invalid operation'
5. 
6. 
7. def divide(num1, num2=1):
8.     """
9.     除法
10.     :param num1: int
11.     :param num2: int
12.     :return: float
13.     """
14.     # 增加判断操作,抛出自定义异常
15.     if num2 == 0:
16.         raise InvalidOpreation()
17.     val = num1 / num2
18.     return val
19. 
20. try:
21.     a = divide(200,0)
22. except InvalidOpreation as e:
23.     print(e.message)
24. else:
25.     print(a)
divide消息协议:divide方法中,第一个参数为int类型num1,第二个参数为int类型num2,以一种伪代码的形式描述一下:
1. float <= divide(1: int num1, 2: int num2=1) => InvalidOpreation
2. # 执行成功为左边float类型,执行失败为右边InvalidOpreation
相关文章
|
网络协议 网络架构
01RPC - RPC介绍
01RPC - RPC介绍
64 0
|
网络协议
|
网络协议
|
3月前
|
负载均衡 Java API
什么是RPC
【9月更文挑战第8天】什么是RPC
142 3
|
7月前
关于RPC
关于RPC
|
Dubbo Java 应用服务中间件
为什么大厂用的都是RPC服务
在很久以前,笔者刚毕业开始工作那会儿,对于企业开发的模式一直以为HTTP接口开发,也就是我们常说的RESTful风格的服务接口。的确,对于在接口不多、系统与系统交互较少的情况下,解决信息孤岛初期常使用的一种通信手段;优点就是简单、直接、开发方便。
218 1
|
JSON 移动开发 网络协议
|
负载均衡
为什么使用RPC
Remote Process Call 远程过程调用。 你对rpc的理解是什么?客户端调用服务端时,就像调用本地函数一样,直接使用并得到结果。
112 0