gydtep
发表于 2020-12-26 15:51:17
衡量一个系统成功的一个重要指标是使用量。随着使用量的增加和业务复杂度的增加,大部分系统最终都会碰到性能问题。 性能优化能力是一个综合能力。
gydtep
发表于 2020-12-26 16:03:38
影响系统性能的因素众多,包括:数据结构、操作系统、虚拟机、CPU、存储、网络等。为了对系统性能进行调优,架构师需要掌握所有相关的技术。
gydtep
发表于 2020-12-26 16:27:24
性能优化与业务强耦合,最终所采取的手段是往往折衷的结果。所以,性能优化要深谙妥协的艺术。
gydtep
发表于 2020-12-27 12:45:02
工作负载通过Service绑定了一个虚拟IP以及端口,对于Pod分配的节点资源并不敏感,解耦了Service与节点网络资源,使得整个集群具备负载迁移,故障自愈的能力。
gydtep
发表于 2020-12-27 12:46:28
Ingress与Service对象不同,是K8S对集群外部提供服务的一种资源对象。在K8S出现之前,我们对于负载与流量控制,多是采用Nginx反向代理和负载均衡,横向扩展服务端处理负载的能力。
gydtep
发表于 2020-12-27 12:55:51
Ingress本质上就是一个NginxPod,这个Pod也是通过Service对象暴露出来,基于LoadBalancer模式对外提供反向代理与负载均衡。Ingress很像一个集群的路由器和访问入口,通过在ingress配置路由规则绑定工作负载与对应域名解析路径,达到只使用一个外部IP就能将多个集群内部的服务暴露出来,从而节省IP资源。
gydtep
发表于 2020-12-27 13:11:34
K8S做为当前最流行的容器编排平台,提供了平台级别的弹性伸缩以及故障自愈等解决方案。K8S集群基于C/S架构,由Master统一控制管理集群资源与负载均衡。Pod是K8S调度的最小单元,我们要掌握集群资源管理与调度就要从Pod调度与管理开始。
gydtep
发表于 2020-12-27 13:27:11
K8S要掌握应用服务运行状态,才有可能进行平台级别的弹性伸缩和故障自愈。最简单的做法就是不断检查容器进程是否处于Running状态。如果检查到容器进程失败,就不断自动尝试重启进程。很多情况下,重启进程就能解决问题,所以这种健康检查虽然简单,但是十分有效和必要。
gydtep
发表于 2020-12-27 13:34:45
,如果一个java应用运行时抛出了OOM异常或者死锁了,但JVM进程仍然在运行中;Pod仍处于Running状态,但应用进程已经无法提供服务了。这种情况,上述健康检查就无法处理了,K8S提供的
livenessProbe可以捕获到应用服务级别的异常状态,全面掌握应用服务运行是否健康。
gydtep
发表于 2020-12-27 13:50:01
livenessProbe类似进程健康检查,都是对容器进程进行健康检查,当检测到失败时,就重启该进程,以达到自动修复。