网络编程和并发2--【python】面试题汇总

1.路由器和交换机的区别

 路由器可以为局域网自动分配IP和虚拟拨号
    交换机只是用来分配网络数据
    路由器在网络层,根据IP地址寻址
    路由器可以处理TCP/IP协议,交换机不行
    交换机在中继层,根基MAC地址寻址
    路由器可以吧一个IP分给多个主机使用,对外IP相同
    交换机可以把很多主机连接起来,对外IP不同
    路由器可以提供防火墙,交换机不能
    交互机是扩大局域网接入点的,可以让局域网连接更多的电脑
    路由器是用来做网间连接的

2.什么是域名解析

  域名解析就是域名到IP地址的转换过程

3.生产者消费者模型应用场景及优势

 解耦
    支持并发
    支持闲忙不均

    使用多线程,在做爬虫的时候,生产者用着产生url链接,消费者用于获取url数据,在队列的帮助下可以使用多线程加快爬虫速度。

4.什么是cdn

cdn:内容分发网络
    缓存算法
        缓存算法决定命中率,源服务器压力,pop节点存储能力

    分发能力
        分发能力取决于IDC能力和IDC策略性分布
    负载均衡
        智能调度决定最佳路由,响应时间,可用性,服务质量
    基于DNS
        基于DNS的负载均衡智取最优节点服务
    支持协议
        静动态加速,下载加速,流媒体加速,企业应用加速,手机应用加速

    负载均衡软件nginx

5.nginx是什么以及作用

  nginx是一个高性能的HTTP和反向代理服务器,特点是占用内存少,并发能力强
    代理服务器就是代理网络用户去取得网络信息
    主要作用
        1.突破自身IP访问限制,访问国外站点
        2.访问一些单位或团体内部资源
        3.突破中国电信的IP封锁
        4.提高访问速度
        5.隐藏真实IP,免受网络攻击

    Nginx支持的负载均衡算法如下:
        1.weight轮询
            默认算法,接收到的请求按顺序逐一分配,可以给每台后端服务器配置不同的权重值(weight),用于调整不同服务器的分配率
        2.ip_hash
            每个请求按照发起客户端的IP的hash结果进行匹配,这样每次分配的后端服务器都是同一个
        3.fair
            智能调整调度算法,结合前两种模式动态分配,需要额外安装upstream_fair模块
        4.url_hash
            按照访问url的hash结果分配请求,nginx作为静态服务器的情况下可以提高缓存效率

    优势:
        1.作为Web服务器,Nginx处理静态文件,索引文件,自动索引的效率高
        2.作为代理服务器,Nginx可以实现无缓存的反向代理加速,提高网站的运行速度
        3.作为负载均衡服务器,Nginx可以在内部直接支持Rails和PHP,也可以支持HTTP代理服务器对外进行服务,同时还支持简单的容错和利用算法进行负载均衡
        4.在性能方面,Nginx支持高并发
        5.在稳定性方面,占用内存低
        6.在高可用方面,Nginx支持热部署

6.lvs是什么及作用

  lvs:Linux Virtual Server,Linux虚拟服务器,是一个虚拟的服务器集群系统
    lvs主要用于多服务器的负载均衡
        1.工作在网络层,可以实现高性能,高可用的服务器集群技术
        2.可以把许多低性能的服务器组合在一起形成一个超级服务器
        3.易用,配置简单,且有多种负载均衡的方法
        4.稳定,即使在集群中的某台服务器无法正常工作,也不影响整体效果
        5.可扩展性很好

7.keepalived是什么及作用

 Keepalived是Linux下一个轻量级的高可用解决方案
    起初为lvs设计,专门用来监控集群系统中各个服务节点的状态
    VRRP协议

8.haproxy是什么及作用

  haproxy是一款提供高可用性,负载均衡以及基于TCP和HTTP应用的代理软件,支持虚拟主机,免费快速且可靠

    特别适宜用在负载特大的web站点,这些站点通常又需要会话保持或七层处理

    作用:高可用性,负载均衡和用于TCP和基于http的应用程序的代理

9.什么是负载均衡

  1.将大量的并发处理转发给后端多个节点处理,减少工作响应时间;
    2.将单个繁重的工作转发给后端多个节点处理,处理完再返回给负载均衡中心,再返回给用户
    四层负载均衡
        从第四层传输层开始,使用ip+port接收请求,再转发到对应的机器
        F5:硬件负载均衡器,功能好,成本高
        lvs:重量级的四层负载软件
        nginx:轻量级的四层负载软件,带缓存功能,正则表达式灵活
        haproxy:模拟四层转发,较灵活
    七层负载均衡
        从第七层应用层开始,根据虚拟的url或ip,主机名接收请求,再转向相应的处理服务器
        haproxy:天生负载均衡技能,全面支持七层代理,会话保持,标记,路径转移
        nginx:只在http协议和mail协议上功能比较好
        apache:功能较差
        mysql proxy:功能尚可    

    一般是lvs做四层负载,nginx做七层负载

10.简述asynio模块的作用和应用场景

  asyncio是python3.4版本引入的标准库,直接内置了对异步IO的支持
    asyncio的编程模型就是一个消息循环,我们从asyncio模块中直接获取一个EventLoop的引用,然后把需要执行的协程扔到EventLoop中执行,就实现了异步IO

11.简述genent模块的作用和应用场景

  当一个greenlet遇到IO操作时,比如访问网络,就自动切换到其他的greenlet,等到IO操作完成,再在适当的时候切换回来继续执行。由于IO操作非常耗时,经常使程序处于等待状态,有了greenlet自动切换协程,就保证总有greenlet在运行,而不是等待IO

12.twisted框架的使用和应用

  twisted是一个单线程异步框架,可以并发处理多个任务
    单线程和多线程用来处理多个任务
    用循环来驱动任务处理--reactor模型

    用Application类来解决Reactor Loop的管理,用户只需要引入该类并声明即可
    用service类来管理用户的业务逻辑,用户只需将该service注册到Application中即可
    用defferred类来管理回调,该类对象可以帮助用户处理异常问题

原文地址:https://www.cnblogs.com/bk770466199/p/12671898.html