灵魂拷问

灰度发布如何实现?

个人觉得: 灰度发布只升级部分服务,即让一部分用户继续用老版本,一部分用户开始用新版本,如果用户对新版本没什么意见,那么逐步扩大范围,把所有用户都迁移到新版本上面来。

用 jenkins 如何实现发布和回滚?

发布: jenkins 配置好代码路径(SVN或GIT),然后拉取代码,打上tag, 需要编译就编译,编译之后推送打发布服务器(jenkins里面有调用脚本),然后再从分发服务器往下分发打服务器上 回滚: 按照版本号到发布服务器找到对应的代码推送

LVS有哪些负载均衡技术和调度算法? 与Ningx 不同?

LVS 是基于IP负载均衡技术的IPVS来实现, IPVS实现负载均衡机制有三种,NAT、TUN、DR

  • VS/NAT 用户请求和响应报文都会地址重新,当用户请求越来越多,调度器会到到瓶颈

  • VS/TUN 俗称IP隧道技术,调度器将只处理用户的报文请求,集群系统的吞吐量大大提高

  • VS/DR 调度机制中性能最高最好,必须在同一物理网段中

调度算法: 八种负载调度算法,常用(轮询、加权、最小连接数、加权最少连接数) LVS优点: 工作在四层,抗负载强,无流量,保证均衡器IO性能不会受到大流量影响,稳定,具有完整双击热备方案,可对所有应用做负载 LVS缺点: 不支持正则,不支持动静分离

Nginx优点: 工作在7层,可对http请求(如域名、目录)应用分流,网络依赖小,ping通即可负载, 可动静分离,可缓存 Nginx缺点: 不支持url检测,仅支持http 和Email

假如有人反应,调取后端接口时特别慢,你会如何排查?

问清楚哪个服务应用或者页面调用哪个接口慢,把相关信息给你,首先,最直观的是用浏览器F2,看哪块内容慢(DNS解析、网络加载、大图片、某个文件),如果图片,就优化图片,网络慢查看内网情况。 其次是看后端服务日志,跟踪一下日志。 最后,排除sql,找到sql去mysql执行,看是否sql问题,,如果数据大就分表,分开,如果sql没问题,那就是代码逻辑问题

给你一套环境,你会如何设计高可用、高并发的架构?

方案一: 上云,不需要考虑硬件设计,SLB+ECS+RDS高可用架构 方案二: 托管在IDC,那么就在硬件,软件上双面考虑,网络设计上,必须有双线连接。应用服务软件方面,LVS+Keepalived或者Nginx+Keepalived,缓存层可以考虑redis集群及Mongodb集群,中间件等其它服务可以用kafka、zookeeper。后端数据库可采用 “主从+MHA”。这样一套环境下来是绝对满足高可用、高并发的架构。

简述DNS进行域名解析的过程?

查找本机的 host 文件 ---> 再找本地dns服务器,检查 dns 服务器缓存,若存在,则返回应答信息 若没有查到,则请求根域DNS服务器, 并依次从根域查找顶级,由顶级查找二级域,二级域查找三级,直到找到解析的地址和名字,向客户机所在网络的DNS服务器发送应答信息,DNS服务器收到应答后在缓存中存储,并将解析结果发给客户机。 若没有查找,则返回错误信息

Last updated