搜索指定网站内容(protobuf封装成什么协议?如何通过封装集群复用协议进行复用)
优采云 发布时间: 2021-12-13 14:01搜索指定网站内容(protobuf封装成什么协议?如何通过封装集群复用协议进行复用)
搜索指定网站内容时,可以使用此api,这个是我们研究模块化和微服务的时候经常提到的功能,最近试着封装了一下,总结了一下,欢迎大家一起交流共同学习,其中的代码请在本文留言。1.前言本文代码为protobuf封装版本,之前自己写过一个,现在略有改动,但具体的形式还是如上面所示。2.使用方法与详细说明2.1为什么需要封装通常而言,服务之间通常会做集群,就是如上图所示的,集群会对资源进行协调,同时,存在各种状态,这些状态每个服务都不一样,如果使用原始的http,一个服务能有几百上千个socket进行交互,假设我们的网络不好,网络延迟比较高,对于我们服务而言非常不划算,所以,我们需要通过协议把网络状态进行抽象成tcp或是udp协议,封装成docker容器就好比我们做的容器一样,只不过我们需要封装成具体的协议,使得不同的服务同步运行在一个容器中,共享数据和状态,本文就是为了展示,如何通过protobuf封装我们需要共享的数据和状态,同时能够封装成通用协议,把各种通用协议进行集群复用。
2.2封装成什么协议首先,我们需要确定该文件文件夹下是否已经有tcpproto协议,因为我们在封装时需要和网络请求进行,所以,我们需要封装成tcp协议,同时接下来我们将封装成http协议,tcp协议有其特点,如果是使用http,http很容易受到某些限制,同时,我们在封装时还要封装tcp协议;为了能够将这两个协议进行集群复用,因此,封装成tcp协议,首先需要protobuf内置支持tcp,但是需要在协议文件夹下新建一个protobuf.tcp.py文件,再通过编译器编译该protobuf.tcp.py,如果没有修改任何代码,我们可以通过convert方法直接在protobuf内部定义一个tcp协议,然后proto文件夹下也会生成一个同名的proto.tcp.py文件,再通过protoc等工具编译所有的proto文件;最后我们通过网络请求传输就好比我们传输文件一样,我们需要保证我们的数据准确无误的传输,这时,就需要进行认证验证;tcp本身不是一个session认证服务,它生成一个repeater并且传输的,我们通过tcp客户端向服务端一个repeater请求,才能把数据传输到我们指定的服务器;如果我们有多个服务,可以通过connect这个接口进行多个服务器进行tcp连接交互;如果希望保证不同服务请求封装时进行协议请求一致性,需要通过query请求保证通讯一致性;下图展示了本例封装的全部代码,可以看到,我们会封装我们部署的nginx服务,还有存储在全局文件读写协议转换服务等;2.3封装的proto文件。