00:02
Hello,大家好,我是班拍啊,今天给大家分享一下啊,GPC协议的啊开发测试。的Java版本啊,我们首先去看一下啊,GPC啊,协议的一些基础知识啊,这是一个开源中国上。的一个公开的GPC官方文档的中文版。嗯,我建议有兴趣去了解的话,还是先看一看这个教程,还是挺不错的。啊,就是。G2PC是一种。谷歌开发一款语言中立平台中立的远程的RPC调用系统啊,然后这个文档是介绍一下GPC各种语言版本的hello。然后还有快速开始,然后这里面如果是大家呃有一些基础的话,就可以直接去get up上把那个GRPC的示例代码给下下来。嗯,我是下载了之后,因为它需要配置安卓SDK,然后还有一堆乱七八糟的其他的,呃,DEMO的一些。
01:08
环境也好,依赖也好,所以我就放弃了这个事情,我就先看了他的一个hello word教程,然后自己去,呃,写一个比较简单的。我们首先看一下GBC,它是什么?在GP客户端可以像调用本地对象一样去调用另外一台服务器上应用的方法,可以更容易的创建分布式的应用和服务。啊,与许多G p2PC的系统类似啊,GPC也基于以下概念定义服务。指定能够被远程调用的方法啊,包含参数和返回值,然后在服务端实现这个接口并行一个G的服务来处理。客户端的调用,然后。在客户端能够有一个存根,能够像服务端一样的。
02:02
啊,方法。啊,这里面我也不知道他是怎么翻译的,反正读起来挺拗口的。这个乘客能够像服务端一样的方法没太懂,就是大概就是。啊,这是server,然后这是a client,然后他们分别通过一种呃,嗯,The pro的一种语法吧,然后定义好之后就是不管这是安卓,呃,Java的plant,然后那边是Ruby的plant,嗯,然后呃现在可能嗯,我下一步是要看一下购的贝的,可能用的会比较少。嗯,首先看一下,呃,我们这个它的服务调用吧,就是服务。啊,现用客户端啊,请求啊,服务响应,这跟那个HTTP是非常相似的啊,查资料中啊,它其实就是基于HTTP2.0的一个协议去做的这个事情,然后这个proto request呢,它就是呃,相比较之前我们常见的HTTP协议里面的呃,什么杰森啊表单啊这种。
03:12
啊,它的一个优势就是。啊,传输量会比较小啊,然后它不需要传很多的黑乱七八糟的东西,所以说它整体的request是它的,呃,体积要小,这也是它的一个性能的一个优势。啊,然后呃,这后面的就不用啊再多讲了,然后这个。呃,这是那个proTo Buffer的一个介绍啊,这个就就就差不多了,然后有兴趣的话记一下这个。有一个呃,私力的。在这啊,在这个地方啊,大家去看一下那个官方给的一个DEMO就可以了。然后我们现在进行一个。啊,Java版本DEMO的一个演示啊,首先呢,我们先建一个Java的一个项目,然后这个Java项里面是没有Java代码的啊,这是我们是通过一个。
04:04
呃的一个打包的一个插件,会自动的把这个。代码生成我们是不用管的,然后我们看大概的目录结构,然后是正常的,然后这个是加法的,然后我们在这建一个pro的。一个目录,然后我们写一个hello的一个pro的一个。呃。那个这叫什么来着,这叫文件嘛。那首先我们说明它的语法的版本,然后这里面有个选项是否是呃,MU这个fair,它这个呃这里是一个true,然后这个是生成那个打包成Java代码的时候,因为它可涉及到很多的加码对象。呃,什么request啊,Return啊,还有一些别的可能会有媒体类型么的啊,这个参数是控制,呃,是否将同一个功能的或者同一个server的相关对象写到一个类里面,就是内部类这种形式实现,然后如果选for的话。
05:02
就是每个对都会有一个自己的啊,每一个对象都会有一个自己的类这里。然后这个呃,Java拍就是要生成代码的一个。啊,报名。然后这就定义服务,然后定义服务这个相对来说是比较简单的,因为hello word吧,就是一个service,然后这service的名字,然后这个RPC,然后方法啊请求参数,然后啊return啊这个返回参数。然后就是。呃,大括号内容是空的。跟呃,Java里面写接口或者是虚拟类有点类似。然后这是message message相当于Java里面的一个对象,然后这个就是hello request,然后string,然后IN32啊,这里面又跟go有点相似啊。反正是感觉,呃,第一次写的话,可能有一点点熟悉又陌生啊,写多了啊也就还行了,就这语法需要大家慢慢去适应。
06:04
而且对于测试来说,这个是不用写的啊,就是我们直接去调,呃,使用开发定义好的SDK我们去调就可以了,然后直接朝他的DEMO,有DEMO应该呃开发会给出来一些啊DEMO出来我们直接去抄他的DEMO,然后把它。跟我们的需求结合在一起去写这个测试用例啊,这个就简单的了解一下,有兴趣的话可以搜一搜,然后我们通过打包插件呢,呃,这个也是。官方的一个示例吧。然后依赖的话就是这些啊,其实对于测试来讲也也不太用管。然后。我们看一下啊。这是打包的一个插件,它整体的一个情况,它叫pro buffer。然后他这个这个嗯,直接抄就行了,这个。没有什么特别多的。要讲的,然后我们打包的时候直接用拍。
07:03
哎,成功了之后,他这儿会有一个价包。然后加班的话,我们在另外一个项目里面。嗯,就可以去。呃,实现这个。然后这是我另外一个项目,然后我就没有单独写,然后给大家看一下,这是一个格的一个项目,然后我把刚才那个。啊,打好了架包通过,呃,这种叫做。就是本地下班这种方式把它依赖进来的。啊,OK,这个没什么问题啊。啊,然后呢,我们怎么去开发服务端呢。我们先去实现一个我们定义好的方法,就那个hello service。然后我们先建一个glass glass集成一下这个hello service g PC,然后。点啊,这个就是内部类的形式,我们可以看一下,其实他都在这个。
08:02
一个里边的。嗯,我们看这是一个标准的格式啊,大家如果是一般来说也不需要咱们去实现啊。如果是写的话,直接照照这个标准格式就行,然后再定义的一个,呃呃,日志的一个。对,记录对象,然后我们去实现一个这样的一个方法,然后我们先看一下这个倍数。它这里面其实已经实现了,大家看到没,已经实现了。这个。High。这这个方法。但是。是这个一,它这个可能是系统自带的,我们需要去重新把它重写,如果是不重写的话,会导致这个失败。嗯,我们看一下,我们是哈。不对,应该咱先看hello request。嗯,Hello request就接收请求参数,然后我们看一下这里那个呃响应就直接把他的拟好,然后把他名字打印出来,Build一下。
09:05
然后他这一个适用的这个标这种形式,其实嗯,用new什么的应该也是可以的,我没有太看它仔细生成的这个代码里面有没有。啊。啊,应该是没有这种构造方法的,嗯,属性的构造方法的。那就只能通过这个build。A new build啊,然后set什么什么。啊,我们打印一下这样,然后这个也是啊,Next on next,还有这个on complete,这是一个标准格式,这是服务端。一个处理下一个请求,一个是完成的。然后我们这是我们实现的这个service,然后我们看一下这个服务端。放一边可能有点小。啊,每一个卖方法,然后一个service service build,然后起一个端口啊,然后加上一个service,然后我们在一个build,然后service star,然后service waiting and。
10:07
那个等待终端啊,这也是一个标准的写法啊,服务端代码比较呃简单,然后正常测试也不会接触,我先把这个服务端提起来。啊,大家注意,这里面抛了两个异常。OK,这已经起了。然后呃,没有打日志。我们看一下客户端怎么写,客户端写的话就稍微麻烦一下,我把这个。最小。我们先新建一个。呃,Manage那个channel channel的话就是,嗯,用它这个build啊,他应该。可能这整个项目都是用build这种建叫什么构建的模式写的,然后for address lo,然后呃,Port,然后这些是一个正常的啊,这是。
11:01
呃,有不同的方法,有不同的含义啊,这里面是用这个use,这个text是从文本的,然后build完之后我们得到一个参数。然后我们通过这个channel啊,去获得一个new blocking stop啊这个一个对象,这个对象就是刚才我们在呃啊对在这个嘉宾是什么?是客户端拥有一个存根,能够向。服务端一样的方法,其实就是客户端拥有一个对象去可以去像服务端一样去调。直接调那个方法。那就我们看到。嗯,那个参照之后。然后service new block,然后我们就得到这个对象,那这个对象就可以直接去掉acu had这个方法了,就像我这次在客户端,客户端拥有了一个纯分叫star。Staff可以直接去调这个方法,OK,然后我们这里面去构建那个hello request,然后把这个啊,Set name fantastic给写好,然后build就对好之后客户端直接调这个方法,然后获得一个响应啊,关于这个new blocking stop的话,嗯,跟这个channel它之间的一个,呃,连接与线程的这个关系,我目前还在看啊,看完之后我在实践了之后。
12:22
再给大家做呃,性能测试这块的分享啊,这个block呢,就是。有,我记得应该有三种啊,一个是。他纯异步的,就是我发出请求之后,我不管它响应了,还有一个是义务,还有一个是呃,Call back的,就是我发出请求之后,我可以控制我什么时候等待它的响应结果啊,像我刚我写的这个new block的话就是block就是锁嘛啊,就是我等待响应结果。给我,我发出请求之后等待想要结果就是嗯,就是这个部过程。
13:01
先发最请求,然后客户端一直在等响应结果,然后是这样啊,然后等到他响应结果之后啊,我这打印一下,然后这个channel这个小道啊是这样的。啊,然后呢,我们去执行一下客端的方法。哎,呃,客户端收到了你好哈,啊这个,然后这个是。啊,这个是这个这一串是现成数啊,我这是那个配置文件里面打印的现成数,然后用户翻台子啊来了啊,这就是我们一个非常简单的那个。接口测试啊。啊,正常来说服务端代码对我们来说是不可见的啊,然后呢,我们最常用,诶不对,嗯,在这儿在客户端我们最常用的就写客户端的,客户端代码的话,呃,也比较简单,就是这些一般也都是固定的,像channel,还有这个star这种啊这种就比较从代码层面上比较好理解,就是官方文档上他说的在客户端拥有一个像服务端。
14:07
呃,对象那种存根啊这种。OK。OK,然后这里今天的关于g PC Java版本的分享就到这里啊,下期我们去分享啊,Go版本的,然后在后面等我把。呃,它这个channel,还有这个staff,他们之间的一个关系,还有就是GPC连接的创建的关系,这些搞懂了,我再给大家来分享一下GPC性能测试相关的。拜拜,我们下期再见。
我来说两句