Kubernetes 稳定性保障手册:洞察,Java程序员面试笔试真题与解析

}

]

}




?



[](

)4\. 资源运行图

------------------------------------------------------------------------------



?  

资源使用过程中,也可以对资源及资源间的关系通过外部观测数据推测内部状态,如 log/metrics/event。与资源构成图结合,可以在静态资源的基础上叠加动态的洞察数据,直观把握集群资源的使用状态。  

?  

可通过形如下的数据结构描述:



{

"nodes": [

     {

        "_id": "35103ac62d4ef0a314e2a5128f44c684205bea2f",

        "id": "vpc",

        "insight": [

            {

                "source": {

                    "vendor": "cloud:aliyun:vpc",

                    "type": "OpenAPI"

                },

                "signal": {

                    "vpc/exist": "DescribeVpcs",

                    "vswitch/count": "DescribeVSwitches"

                }

            },

            {

                "source": {

                    "vendor": "cloud:aliyun:ecs",

                    "type": "OpenAPI"

                },

                "signal": {

                    "ecs/count": "DescribeInstances",

                    "securitygroup/count": "DescribeSecurityGroups"

                }

            }

        ]

    },

    {

        "_id": "6450e07dc67027f76f29fbfcb841e57200855196",

        "id": "ecs",

        "insight": [

            {

                "source": {

                    "vendor": "cloud:aliyun:ecs",

                    "type": "OpenAPI"

                },

                "signal": {

                    "ecs/exist": "DescribeInstances",

                    "ecs/count": "DescribeInstances",

                    "ecs/usage": "DescribeInstanceMonitorData"

                }

            },

            {

                "source": {

                    "vendor": "cloud:aliyun:ecs",

                    "type": "auto"

                },

                "signal": {

                    "ecs/state_change": ""

                }

            }

        ]

    }

],

"edges": [

    {

        "_id": "caa1e395c713f47766ca7bcfc20419c0be0f0803",

        "source": "i-xxx", "target": "sg-xxx",

        "insight": [

            {

                "source": {

                    "vendor": "cloud:aliyun:ecs",

                    "type": "OpenAPI"

                },

                "signal": {

                    "exist": "DescribeInstances"

                }

            }

        ]

    },

    {

        "_id": "537dc478d95714792b3694674d6164f72b361bb0",

        "source": "eip-xxx", "target": "ngw-xxx",

        "insight": [

            {

                "source": {

                    "vendor": "cloud:aliyun:vpc",

                    "type": "OpenAPI"

                },

                "signal": {

                    "exist": "DescribeEipAddresses"

                }

            }

        ]

    }

]

}




[](

)预案

=======================================================================



?  

集群出现异常是不可避免的,需要在出现异常时安全、有效处理。  

?  

异常可以通过事件来表征,安全、有效的操作是经过评审、演练过的操作,将异常与操作结合,由异常触发操作,形成经过评审、演练的预案,可以安全有效处理集群异常。  

?



[](

)1\. 事件列表

-----------------------------------------------------------------------------



?  

集群运行过程中会产生需要关注的事件,事件自身的格式可基于社区 CloudEvents标准来使用:_https://github.com/cloudevents/spec/blob/v1.0.1/spec.md_。  

?  

可通过形如下的数据结构描述:



{

"events": [

    {

        "_id": "a1ab5b61857be35a5c5b203dd84b49248161c823",

        "description": "restart workload manually",

        "event": {

            "id": "restart-workload",

            "source": "xxx",

            "specversion": "1.0",

            "type": "com.aliyun.trigger.manual",

            "datacontenttype": "application/json",

            "data": "{\"NAMESPACE\": \"\", \"NAME\": \"\", \"TYPE\": \"\"}"

        }

    }

]

}




?



[](

)2\. 操作列表

-----------------------------------------------------------------------------



?  

为了降低误操作的可能性,同时避免异常发生时执行未经审核、验证的操作,需要定义集群中可以进行的操作列表。  

?  

可通过形如下的数据结构描述:



{

"actions": [

    {

        "_id": "47abc5cd9d64018ebf96dc5b2d6a4fbd35a3cb6d",

        "name": "Action Restart Workload",

        "exec": "restart-workload",

        "env": [

            "NAMESPACE",

            "NAME",

            "TYPE"

        ]

    }

]

}




[](

)3\. 预案列表

-----------------------------------------------------------------------------



?  

在事件列表和操作列表基础上,可以将事件和操作关联起来,以事件驱动的方式处理异常,即预案。  

?  

可通过形如下的数据结构描述:



{

"plans": [

    {

        "_id": "29a091c48d8992991ed69e8694b017a11abe3eec",

        "name": "Plan Restart Workload",

        "description": "重启 workload",

        "event": "a1ab5b61857be35a5c5b203dd84b49248161c823",

        "actions": ["47abc5cd9d64018ebf96dc5b2d6a4fbd35a3cb6d"]

    }

]

}




[](

)全局可视化稳定性保障

===============================================================================



?  

基于上述**4 张图**和**3 张表**的数据模型,形成对集群稳定性保障的**洞察+预案**的内核,可以衍生出一种全局可视化的稳定性保障服务。  

?  

这样的服务具有如下关键点:  

?



*   全局视角

*   数字化

*   可视化



这种服务基于两种原理实现:  

?



*   人们对图像的处理效率远高于文字

*   全局视角可以提供「端到端理解系统」「精准定位问题」「安全处理问题」的能力



以日常生活中的交通图为例:  

?  

![4.png](https://img-blog.csdnimg.cn/img_convert/e0b83ca27c167410fc2e744bf67155ae.png)



通过交通图,可以快速了解到一个区域的道路分布和关键节点,约定俗成的红黄绿颜色可以直观表达道路的拥堵状况。在更丰富的交通图上,还会观察到诸如修路、封路等重要事件。  

?  

这样,基于可视化的方式,就可以迅速理解一个区域的交通和地理情况。  

?  

底层的数据模型是基础,应用可视化的手段,使得数据的价值更易被发挥。  

?



[](

)一种实现

-------------------------------------------------------------------------



?  

![5.png](https://img-blog.csdnimg.cn/img_convert/d125ecf5e57271b43b4dfaa40a76e436.png)



### [](

)1)部署形态



?



*   Region 化部署

*   面向 Region 内单集群或多集群提供服务



### [](

)**2)使用体感**



?  

**根据稳定性保障的最佳实践,将稳定性保障分为如下几个栏目**:



*   运行链路图:

    *   该栏目是日常稳定性保障高频使用的区域,通过可视化的能力,直观感知异常的发生、异常范围和影响程度、白屏化+可视化方式处理异常

*   部署架构图

    *   该栏目用于理解集群的部署架构,感知和处理部署维度的问题

    *   容量管理 (包括节点管理、容量规划等) 在此栏目进行

*   业务流程图

    *   该栏目沉淀业务的功能流程图,一方面协助业务控制功能复杂度,一方面协助业务理解业务功能现状,共同助力业务迭代

    *   业务相关的数据分析可放在该栏目

*   数据分析:该栏目服务两方面的数据需求

    *   业务需求

        *   查看类:集群规模等 SLI 信息、集群稳定性等 SLO 信息

        *   查询类:根据特征查询统计信息 (如根据 label 查询资源申请等)

    *   稳定性保障需求

        *   查看类:集群水位等 SLI 信息,集群稳定性保障效果等 SLO 信息

        *   查询类:根据特征查询统计信息 (如根据 label 查询关联的所有资源信息、资源泄露信息等)

*   可观测性管理

    *   该栏目用管理可观测性相关事宜,包括:

        *   观测数据生成

        *   观测数据采集

        *   观测数据处理

        *   观测数据消费

*   可控性管理

    *   该栏目用于管理与控制相关的操作,包括:

        *   发布管理

        *   灾备管理

        *   预案管理

        *   资源管理

        *   混沌工程

        *   安全管理

        *   定期体检



**系统正常运行期间**:  

?



*   通过「数据分析」栏目,确认集群在「可观测性」「可控性」方面的覆盖面和精确性

*   在「可观测性管理」栏目,进行可观测维度的管理,包括 数据源/监控/告警补齐、治理等

*   在「可控性管理」栏目:

    *   根据观测数据发现的问题,进行预案配置、issue 管理等

    *   根据混沌工程或演练发现的问题,进行预案配置等

*   在「运行链路图」「部署架构图」中,通过可视化方式,将已经配置的监控、告警、预案与组件或链路结合



**系统异常及恢复期间,在「运行链路图」中**:  

?



*   通过集群运行链路图或告警,感知异常的发生

*   自动或手动触发问题跟踪

*   通过集群运行链路图中组件及交互的颜色,感知异常的组件、异常的链路和严重程度

*   点击集群运行链路图中组件的异常数字,获取关联的异常详情,或跳转到日志、tracing 系统等进行手动查询

*   根据异常详情或平台提示,确定待执行的预案和关联的组件

*   在集群运行链路图中执行预案 (阻断问题或恢复服务)

*   通过集群运行链路图中组件及交互的颜色,确认预案执行效果

*   自动或手动结束问题跟踪



问题跟踪过程中记录的主要内容有:  

?



*   issue

*   异常发生的时刻

*   异常处理期间执行的动作

*   运行链路图 snapshot

*   异常恢复的时刻



[](

)数据模型及竞争力分析

===============================================================================



?  

数据模型是稳定性保障最佳实践进行迭代、分享和应用的媒介,通用的洞察和预案可以形成标准化的服务,个性化的洞察和预案可通过固定的结构来描述,然后使用通用的控制器来落地。  

?  

以数据模型形成**洞察+预案**的稳定性保障服务,技术核心为:  

?



*   洞察模型


## 总结

这个月马上就又要过去了,还在找工作的小伙伴要做好准备了,小编整理了大厂java程序员面试涉及到的绝大部分**面试题及答案**,希望能帮助到大家

> **[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](https://ali1024.coding.net/public/P7/Java/git)**

![在这里插入图片描述](https://upload-images.jianshu.io/upload_images/24616006-e7ca8ab15c0bd265?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![在这里插入图片描述](https://upload-images.jianshu.io/upload_images/24616006-20f0db24d2ae9c00?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

Kubernetes 稳定性保障手册:洞察,Java程序员面试笔试真题与解析

上一篇:C语言中动态内存分配的本质是什么?


下一篇:DAY 205 python使用ftplib模块实现FTP文件的上传下载