美文网首页
微服务架构(六)客户端和服务端的连接建立

微服务架构(六)客户端和服务端的连接建立

作者: mafa1993 | 来源:发表于2022-10-17 16:29 被阅读0次

远程调用RPC

需要考虑的问题: 客户端和服务端什么时候建立连接, 服务端如何处理请求, 数据传输采用什么协议, 数据的序列化和反序列化

客户端和服务端如何建立网络连接

  1. http, http基于传输层tcp协议, 一次http请求就会建立一个tcp连接
  2. socket, socket基于tcp/ip协议进行封装, 一次连接需要一对套接字, socket通信分为四个步骤: 服务器监听 客户端请求 连接确认 数据传输
  • 服务器监听, 服务器绑定某个端口, 然后listen这个端口, 等待请求
  • 客户端请求:
  • 服务端连接确认: 当服务端监听到客户端请求后, 调用accept响应请求并建立连接
  • 数据传输: c端send, s端receive, 处理结束后s端send, 客户端receive
    由于网络是不可靠的, 连接建立后, 可能会中断, 需要做存活处理和断连重试, 即轮询查看是否连通, 连接断开的话进行重连

服务器如何处理请求

  1. 同步阻塞(BIO): 客户端每发送一个请求, 就创建一个线程去处理, 当到达线程瓶颈, 就不会再处理了,用于请求量较小的
  2. 同步非阻塞(NIO):客户端每发送一次请求,并不是创建一个新线程去处理,而是通过IO多路复用,将多个IO的阻塞服用到同一个阻塞上,系统在单线程情况下可以处理多个客户端请求,适用于连接数多并且消耗比较少的业务
  3. 异步非阻塞(AIO):客户端发出请求后立刻返回,然后轮询处理状态,等到完成后,在发出完成信号,适用于连接数比较多,并且消耗比较大的
    可以利用socket连接,建立连接,服务器端选择上述三种方式的一种。可以使用开源的通讯框架,如netty和MINA
io模型
阻塞i/o:老李去火车站买票,排队三天买到一张退票(耗费:三天吃喝睡,其他事没干)
非阻塞i/o:老李买票,每隔12小时去车站问有没有退票,3天后买到(耗费:往返6次,路上6小时,其他时间可以做很多事)
i/p多路复用:(有个第三方的中间件)
  select/poll 老李买票,委托黄牛,每隔6小时打电话问黄牛,三天后老李打电话时得到有票的消息,去火车站交钱领票(往返车站两次,路上2小时,打电话17次,黄牛加价100)
  epoll:委托黄牛,黄牛买到票后通知老李,三天后老李去领票(往返车站2次,路上2小时,黄牛加价100,无需打电话)
信号驱动:老李买票,给售票员留电话,有票后售票员通知其去取(往返车站2次,给你个信号,然后再去拉取)
异步i/o::老李买票,给售票员留电话,有票后售票员邮寄给老李(往返车站两次,服务器主动推送)

数据传输协议

  1. 开放协议:http协议等
  2. 私有协议:Dubbo协议等

数据的序列化和反序列化

  1. 文本类:xml和json
  2. 二进制类:PB/Thrift
    需要考虑的问题\
  • 支持数据结构的丰富度
  • 跨语言
  • 性能:序列化的压缩比以及序列化的速度,例如P8的压缩比更高,速度更快,但是json的可读性高

相关文章

  • HTTP协议三次握手

    当建立协议的时候,tcp进行了3次握手1、客户端-->服务端 请求和服务端建立连接2、服务端-->客户端 ...

  • HTTP原理

    1.客户端与服务端建立连接 2.连接建立起来后,客户端向服务端发送请求 3,服务端接收到请求后,做出相应并返回数据...

  • AFNetworking Nginx 实现 HTTPS

    HTTPS HTTPS 连接建立过程大致是,客户端和服务端建立一个连接,服务端返回一个证书,客户端里存有各个受信任...

  • Socket学习

    socket通过三次握手建立连接,通信完成时拆除连接四要素是:客户端地址,客户端端口,服务端地址,服务端端口客户端...

  • HTTP协议中的1xx,2xx,3xx,4xx,5xx状态码分别

    HTTP协议状态码,是指在HTTP协议运作中由客户端发出请求连接,服务端建立连接,客户端发出HTTP请求,服务端返...

  • 网络篇

    TCP建立连接的过程? TCP建立连接需要3次握手1,客户端发送带有SYN标志的TCP报文到服务端2,服务端回复带...

  • mysql通信协议 -- 语句执行

    在客户端和mysql服务端建立连接之后最主要的目的就是执行命令(建立连接过程详见mysql通信协议 -- 连接创建...

  • 3分钟理解mysql所有timeout的值

    1.客户端和服务端建立tcp连接超时:connect_timeout2.客户端的连接长期处于空闲连接(sleep)...

  • go tcp 编程

    打开链接 TCP Socket的连接的建立需要经历客户端和服务端的三次握手的过程。连接建立过程中,服务端是一个标准...

  • muduo网络库初识

    一、前言 关于网络编程的几个核心: 连接的建立:服务端的accept和客户端的connect 连接的断开:主动断开...

网友评论

      本文标题:微服务架构(六)客户端和服务端的连接建立

      本文链接:https://www.haomeiwen.com/subject/hxqszrtx.html