1 常见英文简写含义

1.1 网络

  1. RT
    • Response Time 指的是一次请求开始到接收到服务器响应为止所消耗的时间
  2. RRT
    • Round-trip time 往返时延。在计算机网络中它是一个重要的性能指标,表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认),总共经历的时延。
    • RTT=传播时延(往返哒)+排队时延(路由器和交换机的)+数据处理时延(应用程序的)。
    • RTT是客户到服务器往返所花时间(round-trip time,简称RTT),TCP含有动态估算RTT的算法。TCP还持续估算一个给定连接的RTT,这是因为RTT受网络传输拥塞程序的变化而变化。
  3. MSL
    • MSL 是Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。因为tcp报文 (segment)是ip数据报(datagram)的数据部分,具体称谓请参见《数据在网络各层中的称呼》一文;
    • IP头中有一个TTL域,TTL是 time to live的缩写,中文可以译为“生存时间”,这个生存时间是由源主机设置初始值但不是存的具体时间,而是存储了一个ip数据报可以经过的最大路由数,每经 过一个处理他的路由器此值就减1,当此值为0则数据报将被丢弃,同时发送ICMP报文通知源主机。RFC 793中规定MSL为2分钟,实际应用中常用的是30秒,1分钟和2分钟等。
    • TTL与MSL是有关系的但不是简单的相等的关系,MSL要大于等于TTL。
    • 2MSL即两倍的MSL,TCP的TIME_WAIT状态也称为2MSL等待状态,当TCP的一端发起主动关闭,在发出最后一个ACK包后,即第3次握 手完成后发送了第四次握手的ACK包后就进入了TIME_WAIT状态,必须在此状态上停留两倍的MSL时间,等待2MSL时间主要目的是怕最后一个 ACK包对方没收到,那么对方在超时后将重发第三次握手的FIN包,主动关闭端接到重发的FIN包后可以再发一个ACK应答包。在TIME_WAIT状态 时两端的端口不能使用,要等到2MSL时间结束才可继续使用。当连接处于2MSL等待阶段时任何迟到的报文段都将被丢弃。不过在实际应用中可以通过设置 SO_REUSEADDR选项达到不必等待2MSL时间结束再使用此端口。
  4. 水平触发、边缘触发

在IO多路复用情况下

  • 水平触发
    • 只要文件描述符关联的读内核缓冲区非空,有数据可以读取,就一直发出可读信号进行通知
    • 当文件描述符关联的内核写缓冲区不满,有空间可以写入,就一直发出可写信号进行通知
  • 边缘触发
    • 当文件描述符关联的读内核缓冲区由空转化为非空的时候,则发出可读信号进行通知
    • 当文件描述符关联的内核写缓冲区由满转化为不满的时候,则发出可写信号进行通知
  • 水平触发是只要读缓冲区有数据,就会一直触发可读信号,而边缘触发仅仅在空变为非空的时候通知一次,举个例子:
    1. 读缓冲区刚开始是空的
    2. 读缓冲区写入2KB数据
    3. 水平触发和边缘触发模式此时都会发出可读信号
    4. 收到信号通知后,读取了1kb的数据,读缓冲区还剩余1KB数据
    5. 水平触发会再次进行通知,而边缘触发不会再进行通知
  • 更多资料,详见https://www.jianshu.com/p/dfd940e7fca2
    1. 惊群效应
  • 简单来说就是多个进程或者线程在等待同一个事件,当事件发生时,所有线程和进程都会被内核唤醒。唤醒后通常只有一个进程获得了该事件并进行处理,其他进程发现获取事件失败后又继续进入了等待状态,在一定程度上降低了系统性能。
  • Neety的EventLoopGroup中的Boos只能有一个线程,就是为了避免惊群效应。
    1. 拥塞控制
    2. MTU
    3. 轻量级的通信机制
  • 采用Socket通信:TCP/UDP/KQUIC协议
  • 传输的数据不与某个编程语言或者平台进行绑定,是跨语言的,平台无关的,例如JSON格式的数据。

    1.2 职务

  1. PM – 项目经理( Project Manager )
  2. RD – Research and Development engineer,研发工程师
  3. FE – 前端开发工程师(Front-End);前端开发(Front-End Development
  4. UE – 用户体验师(User Experience,简称UX或 UE)
  5. UI – 用户界面设计师(User Interface)
  6. QA – 测试(QUALITY ASSURANCE,中文意思是“质量保证”)
  7. OP – 运维(Operations)
  8. DBA – 数据库管理员(Database Administrator,简称DBA)
  9. PO – 产品或业务负责人的意思,全称是Product Owner,即熟悉该产品所有业务相关的逻辑、流程、设置等方面事宜的人员,一般可由项目经理担任,也可由熟悉业务的开发人员担任。
  10. TS – Technology Support 技术支持

    2 认知

    传统单体项目或者分模块项目与微服务
    分模块可以分块打包分块部署
    微服务也可以分开打包部署
    最大区别:
    微服务各个模块可以采用不同的技术栈和语言,相互之间只需要依靠轻量级的通信机制(HTTP+JSON)调用即可,极大的提升的各个服务的灵活性。

    2.1 微服务的特性

  11. 微服务的特性

    • 不主动
    • 不拒绝
    • 不负责
  12. 接口的幂等性
    • 工作中遇到这种情况,a服务需要取消订单,但是需要调用b服务的第三方取消订单接口。所以这就需要a服务先调用b服务,如果成功,才修改自己本地的订单状态为取消。如果b服务取消成功,但是a服务在更新本地的订单状态出现异常了,这样更新操作失败。所以a服务下次可能还会继续调用b服务来取消这个相同的订单,这就需要b服务的取消订单接口保证幂等性,这样能确保a服务对该订单的任何时刻的取消操作都成功,从而正确地更新a服务本地的订单状态
  13. 微服务中的熔断、降级的作用
    • 个人觉得是为了提升单个微服务的内聚性,降低对依的赖服务的耦合性
    • 当对依赖的微服务的调用出现异常情况,如果没有降级、熔断可能会导致当前的微服务发生异常,而导致请求失败,加上降级熔断操作后可以保证当前的微服务的响应不会出错,只是与依赖的微服务相关的数据出现部分异常,限制事故的范围。
  14. 背压
    • 背压(back pressure),也叫“反压”,指的是下游系统处理过慢,导致上游系统阻塞的现象。

线程池的拒绝策略:ThreadPoolExecutor.CallerRunsPolicy(调用者处理)就是背压的例子。

  • 常见的控制策略控制(Control)。
    • 降低生产速率,从源头减少流量
    • 缓冲(Buffer)。管道将多余的流量存储起来
    • 丢弃(Drop)。消费者将无暇处理的流量丢弃
  • 更多资料,参见:https://lotabout.me/2020/Back-Pressure/

    2.2 基础知识

  1. 线程安全的单例Bean

    • 不存在竞态变量的单例bean是线程安全的
    • 什么是竞态变量,可以被多个线程访问的且会被修改的变量成为竞态变量

      2.3 Spring

  2. Spring中的BPP和BFPP

    • 下面的Bean定义信息包括Spring的容器Bean信息
    • BFPP
      • BeanFactoryPostProcessor 在容器实例化bean之前调用,可以增加、修改、覆盖bean属性信息
    • BPP
      • BeanFactoryProcessor 在bean被实例化后调用,可以对bean进行其他处理,包括修改属性信息,代理,注入等操作
    • BDRPP
      • BeanDefinitionRegistryPostProcessor,这个接口是BeanFactoryPostProcessor接口的扩展接口。Mybatis与Spring的整合点就在这里,见MapperScannerConfigurer类,实现了BeanDefinitionRegistryPostProcessor接口,BeanDefinitionRegistryPostProcessor允许增加bean定义信息。

        2.4 Netty

  3. Netty中Channel和Pipeline的区别

    • channel是一个通道,也就是一个Socket连接
    • Pipeline是一个容器,所有的对这个Socket连接的一次数据的处理的Handler都会放到Pipeline中,挨个有序地对这次的数据进行处理

      2.5 线程计算公式

  • 线程数量=CPU核数 使用率 (1 + 等待时间/计算时间)

    常见问题

    1. SpringCloud

    1.1.1 zuul转发服务

    1.调用某个服务,响应信息是
    1. {
    2. "data":null,
    3. "success":false,
    4. "messageCode":"No message available",
    5. "message":"No message available",
    6. "timestamp":"2020-11-13 14:37:03"
    7. }
    最终通过核查发现该服务注册的节点有两个,其中一个节点没有相应的api导致的