表11:可用性百分比及对应服务宕机时间
图22提供了对这些技术隔离等级的概览
表21:函数即服务与服务容器化的对比
WebSockets
的握手过程从客户端向服务器发送一个常规HTTP请求开始,这个请求中包含一个Upgrade标头,该标头通知服务器客户端要建立WebSocket连接。当握手完成后,初始的HTTP连接被替换为使用相同的底层TCP/IP连接的WebSocket连接。WebSocket可以用来传输大量数据,而不会产生使用传统HTTP请求所需的额外开销。所以,WebSocket是一种非常低延迟的连接HTTP/2
的主要设计目的是实现通信的低延迟,并在单个TCP连接上通过流(stream)来实现多路复用请求,从而提高数据传输的效率。HTTP/2是二进制协议,而HTTP1.x是文本协议。二进制协议的解析效率更高,因为只有一个代码路径,这使得它们在网络上非常高效gRPC
是一个比较新的协议,其出色的性能和对开发人员的友好性使得它在微服务社区中迅速流行起来。gRPC是一个使用HTTP/2作为传输协议的高性能、轻量级的通信框架,它提供了诸如身份验证、双向通信、流控制、阻塞或非阻塞绑定以及取消和超时等功能。gRPC也使用了协议缓冲区(也称为protobuf),它提供了一种将结构化数据定义和序列化为高效的二进制格式的方法protobuf
使用的是二进制格式,因此,每种语言都需要有个生成器。这一点和JSON不同,JSON仅仅是一种字符串格式,每种现代语言中都可以理解。好消息是,几乎所有现代语言都有可用的protobuf格式的生成器。使用protobuf时,需要事先在proto文件中声明结构,而不是像JSON中那样将结构与消息体一起传递。每一个需要序列化和反序列化数据的服务都需要添加相应的proto文件,然后使用生成器生成一个包含数据的对象,不需要人为编写序列化代码表31:不同服务网格方案的比较
图418:有多个数据源和执行功能的GraphQL服务
数据湖通常用于存储原始数据和非结构化数据,而数据仓库中的数据已被处理并组织在定义良好的结构中。通常将数据写入数据湖,然后将其从数据湖处理后转存到数据仓库。数据科学家能够通过探索和分析数据来发现趋势,从而有助于业务人员决定将哪些内容放到数据仓库中
表51:不同类型测试的运行频率
图54:Skaffold开发工作流
图55:本地开发协同远程云端的集群
图510:CI/CD流程示意图