Kubernetes 核心组件(二)
0 参考资料课程:《云原生训练营》书籍:《Kubernetes源码剖析》
1 Kubernetes 核心数据结构1.1 Group、Version、Resource核心数据结构Kubernetes将资源再次分组和版本化,形成Group(资源组)、Version(资源版本)、Resource(资源)。Group、Version、Resource核心数据结构如图所示:
Group :被称为资源组,在Kubernetes API Server中也可称其为APIGroup。
Version :被称为资源版本,在Kubernetes API Server中也可称其为APIVersions。
Resource :被称为资源,在Kubernetes API Server中也可称其为APIResource。
Kind :资源种类,描述Resource的种类,与Resource为同一级别。
Kubernetes系统支持多个Group,每个Group支持多个Version,每个Version支持多个Resource,其中部分资源同时会拥有自己的子资源(即SubResource)。例如,Dep ...
Kuberbetes 核心组件(一)
0 参考资料课程:《云原生训练营》书籍:《Kubernetes源码剖析》、《深入浅出Kuberbetes》
Kubernetes官网文档:https://kubernetes.io/zh-cn/docs/home/
代码走读:https://cncamp.notion.site/kubernetes-8a9d48ee26284b3c8ddf9de4c62ea895
K8S源码分析-Informer机制
1 Kube-APIServer1.1 概述kube-apiserver是Kubernetes最重要的核心组件之一,主要提供以下的功能:
提供集群管理的REST API接口,包括 认证授权、数据校验、集群状态变更等
提供其他模块之间的数据交互和通信的枢纽(其他模块通过API Server查询或修改数据,只有API Server才直接操作etcd)
1.1.1 Kubernetes Pod资源创建流程
Kubernetes Pod资源对象创建流程介绍如下:
使用kubectl工具向Kubernetes API Server发起创建Pod资源对象的请求。
Kubernetes AP ...
Java--File类与IO流
1. java.io.File类的使用1.1 概述
File类及本章下的各种流,都定义在java.io包下。
一个File对象代表硬盘或网络中可能存在的一个文件或者文件目录(俗称文件夹),与平台无关。(体会万事万物皆对象)
File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。
File对象可以作为参数传递给流的构造器。
想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。
1.2 构造器
public File(String pathname)  :以pathname为路径创建File对象,可以是绝对路径或者相对路径,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。
public File(String parent, String child)  :以parent为父路径,child为子路径创建File对象。
public File(File parent, St ...
Java--常用类和基础API
1 不可变字符序列:String1.1 String的特性
java.lang.String 类代表字符串。Java程序中所有的字符串文字(例如"hello" )都可以看作是实现此类的实例。
字符串是常量,用双引号引起来表示。它们的值在创建之后不能更改。
字符串String类型本身是final声明的,意味着我们不能继承String。
String对象的字符内容是存储在一个字符数组value[]中的。"abc" 等效于 char[] data={'h','e','l','l','o'}。
123456789//jdk8中的String源码:public final class String    implements java.io.Serializable, Comparable<String>, CharSequence {    /** The value is used for character storage ...
Java--面向对象编程
1 类和对象1.1 类的定义
是用来描述同一类事物的
可以在内部定义任意数量的、不同类型的变量,作为这一类事物的属性。这种属性叫做成员变量 ( member variable )。
如果一个Java文件中定义了一个public类,则文件名必须与该类的名称相同,包括大小写。
如果一个Java文件中定义了多个类,则只能有一个public类,该类的名称必须与文件名相同。
就好像文件路径+文件名不能重复一样,一个Java程序中相同名字的类只能有一个
12345678910111213// >> TODO 一个类以public class开头,public class代表这个类是公共类,类名必须和文件名相同。// >> TODO public class后面紧跟类名,然后是一对打括号的类体public class Merchandise {    // >> TODO 类体中可以定义描述这个类的属性的变量。我们称之为成员变量(member variable)    // >> TODO 每个成员变量的定义以;结束    String n ...
Java--并发编程&网络编程
1 Java中的线程1.1 创建和启动线程1.1.1 概述
Java语言的JVM允许程序运行多个线程,使用java.lang.Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。
Thread类的特性
每个线程都是通过某个特定Thread对象的run()方法来完成操作的,因此把run()方法体称为线程执行体。
通过该Thread对象的start()方法来启动这个线程,而非直接调用run()
要想实现多线程,必须在主线程中创建新的线程对象。
1.1.2 方式1:继承Thread类Java通过继承Thread类来创建并启动多线程的步骤如下:
定义Thread类的子类,并重写该类的run()方法,该run()方法的方法体就代表了线程需要完成的任务
创建Thread子类的实例,即创建了线程对象
调用线程对象的start()方法来启动该线程
代码如下:
123456789101112131415161718package com.atguigu.thread;//自定义线程类public class MyThread extends Thread { ...
Java--反射机制
1. 反射(Reflection)的概念1.1 反射的出现背景Java程序中,所有的对象都有两种类型:编译时类型和运行时类型,而很多时候对象的编译时类型和运行时类型不一致。 Object obj = new String(“hello”);    obj.getClass()
例如:某些变量或形参的声明类型是Object类型,但是程序却需要调用该对象运行时类型的方法,该方法不是Object中的方法,那么如何解决呢?
解决这个问题,有两种方案:
方案1:在编译和运行时都完全知道类型的具体信息,在这种情况下,我们可以直接先使用instanceof运算符进行判断,再利用强制类型转换符将其转换成运行时类型的变量即可。
方案2:编译时根本无法预知该对象和类的真实信息,程序只能依靠运行时信息来发现该对象和类的真实信息,这就必须使用反射。
1.2 反射概述Reflection(反射)是被视为动态语言的关键,反射机制允许程序在运行期间借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。
加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象 ...
微服务架构
1 什么是微服务架构
一种架构风格,将单体应用划分为一组小的服务,服务之间相互协作,实现业务功能
每个服务运行在独立的进程中,服务间采用轻量级的通信机制协作(通常是HTTP/JSON)
每个服务围绕业务能力进行构建,并且能够通过自动化机制独立地部署
很少有集中式的服务管理,每个服务可以使用不同的语言开发,使用不同的存储技术
基于有界上下文的,松散耦合的面向服务的架构
2 微服务架构适用性2.1 什么时候开始考虑引入微服务并不是所有组织和软件都适用微服务架构,应该以单块优先,当系统足够复杂时,再考虑逐步使用微服务架构,关于微服务架构与单体架构的在复杂性和生产力的对比如下:刚开始就选择微服务架构,反而会导致生产力低于选择单体架构,随着系统的复杂度增加,可以选择微服务架构。
2.2 微服务组织架构
从传统职能型到跨职能产品型
微服务架构更适用于跨职能产品型组织,每个产品团队服务完整的产品开发周期,各产品间通过API统一调用。产品团队内负责整个产品的架构、设计、开发、Review、测试、部署、运行、支持。
3 中台战略大中台,小前台:中台作为基础,前台可以快速创新和迭代。
4 微 ...
03 - 数据库技术
1 数据库体系结构1.1 三级模式
视图
视图时保存在数据库中的SELECT查询,其内容由查询定义,因此,视图不是真实存在的表,而是一个或者多个导出的虚拟表。
内模式:管理如何存储物理的数据,对应具体物理文件。概念模式:通常使用的基本表,根据应用、需求将物理数据划分成一张张表。外模式:对应数据库中的视图这个级别,将表进行一定处理后再提供给用户使用。
1.2 两级映像逻辑独立性:外模式和概念模式之间的映射。表和视图之间的映射,应用程序与数据库的逻辑结构独立,当数据的逻辑结构改变时,应用程序不变。物理独立性:概念模式和内模式之间的映射,是表和数据的物理存储之间的映射,应用程序与磁盘中的数据相互独立。当数据的物理存储改变时,应用程序不变。
2 数据库设计
2.1 需求分析分析数据的存储要求,产出物有数据流图、数据字典、需求说明书。获得用户对系统的三个要求:信息要求、处理要求、系统要求。
2.2 概念结构设计就是设计E-R图,也叫实体-联系图。
2.2.1 属性冲突局部ER图转换成全局ER图时,需要消除冲突,冲突类型有:
2.3 逻辑结构设计其任务是将概念模型转换成关系模型,ER图向关系 ...
13 - 系统架构设计
1 软件架构概述1.1 基本概念软件架构设计主要关注软件构件的结构、属性和交互作用,并通过多种视图全面描述特定系统的架构。
软件架构设计是指通过一系列的设计活动,获得满足系统功能性需求,符合一定非功能性需求与质量属性有相似含义的软件系统框架模型。在软件体系结构设计过程中,主要考虑系统的非功能性需求。软件体系结构设计经验的总结与重用是软件工程的重要目标之一,所采用的手段主要包括体系结构风格、DSSA(特定领域的架构)等技术。
解决好软件的复用、质量和维护问题,是研究软件架构的根本目的。
1.2 架构设计与生命周期1.2.1 需求分析阶段需求和软件架构设计面临的是不同的对象:一个是问题空间;另一个是解空间。保持两者的可追踪性和转换,是软件工程领域追求的目标。从软件需求模型向软件架构模型转换主要关注:
如何根据需求模型构建软件架构模型
如何保证模型转换的可追踪性
1.2.2 设计阶段是关注最早和最多的阶段,这一阶段主要研究:软件架构模型的描述、软件架构模型的设计与分析方法,以及对软件架构设计经验的总结与复用等。有关软件架构模型描述的研究分为三个层次:
SA的基本概念:SA模型由哪些元素 ...
