淦 Blog

我干了什么 究竟拿了时间换了什么

Redis

数据结构 String类型 当保存64位有符号整数时,String类型会把它保存为一个8字节的Long类型整数,这种保存方式通常也叫作int编码方式。 当保存的数据中包含字符时,String类型就会用简单动态字符串(Simple Dynamic String,SDS)结构体来保存。 buf:字节数组,保存实际数据。为了表示字节数组的结束,Redis会自动在数组最...

数据库基础

三大范式 第一范式(1NF):每一列都是不可分割的原子数据项。 第二范式(2NF)在1NF的基础上,非属性码的属性必须完全依赖于主码。 第三范式(3NF):在2NF基础上,消除传递依赖。 事务 概述 事务指的是逻辑上的一组操作,组成这组操作的各个单元要么全都成功,要么全都失败。 四大特性ACID 原子性(Atomicity):原子性是指事务是一个不可分割的工作单位,事...

Istio之架构

架构 Istio在架构上分为控制面和数据面两部分,控制面只有一个单体应用Istiod。在Istio 1.6中,上游为了简化控制面的部署和运维,将原来分离的Istio组件Pilot、Citadel、Mixer、Galley、Sidercar-Injector等组件合并为单体应用(Istiod),并且为了提升性能,又将Mixer彻底移除。数据面主要由伴随每个应用程序部署的代理Envoy组成,En...

Istio之流量治理原理

概念和原理 Istio流量治理的目标:以基础设施的方式向用户提供各种非侵入的流量治理能力,用户只需关注自己的业务逻辑开发,无须关注通用的服务治理能力。 在控制面会经过如下流程: (1)管理员通过命令行或者API创建流量规则; (2)Istio的控制面Pilot将流量规则转换为Envoy的标准格式; (3)Pilot通过xDS将规则下发给服务网格数据面Envoy。 在数据面会经过...

Istio之Sidecar流量拦截原理

在完成Sidecar自动注入后,业务在Pod运行期间收发的网络流量将被透明地拦截进Sidecar。其流量拦截基于iptables规则,拦截应用容器的Inbound流量或Outbound流量。Inbound流量简单理解为从Pod外部网口流入进来的流量,比如在一个微服务请求中进入目标服务的请求流量;Outbound流量简单理解为从本Pod内应用向目标微服务发起请求,并最终从本Pod 网口向外部网...

Istio之Sidecar透明注入原理

Sidecar的注入原理 在kubernetes中,Sidecar容器与应用容器共存于同一个Pod中,在Istio中进行Sidecar注入有两种方式: 通过 istioctl命令行工具手动注入; 通过sidecar-injector自动注入。 这两种方式的最终目的都是在应用的Pod中注入init容器及istio-proxy容器,这两个容器都使用...

Kubernetes核心数据结构

Group、Version、Resource 核心数据结构 在整个Kubernctes体系架构中,资源是 Kubernetcs最重要的概念。Kubernetes系统虽然有相当复杂和众多功能,但它本质上是一个资源控制系统——注册、管理、调度资源并维护资源的状态。 Kubcrnctes将资源再次分组和版本化,形成 Group(资源组)、Version(资源版本)、Resource(资源)。 ...

Kubernetes监控关键指标

工作负载节点 所有的 Kubernetes 组件,都提供了/metrics接口用来暴露监控数据。 Kube-Proxy Kube-Proxy 监听的端口10249用来暴露监控指标。 通用的 Go 程序相关的指标 通用的Go程序相关的指标 解释 go_gc_duration_seconds GC...

Kubernetes网络基础

网络基础 tun/tap设备 从Linux文件系统的角度看,tun/tap设备是用户可以用文件句柄操作的字符设备;从网络虚拟化角度看,它是虚拟网卡,一端连着网络协议栈,另一端连着用户态程序。tun表示虚拟的是点对点设备,tap表示虚拟的是以太网设备,这两种设备针对网络包实施不同的封装。 tun/tap设备可以将TCP/IP协议栈处理好的网络包发送给任何一个使用tun/tap驱动的进程,由进...

Kubernetes网络之DNS

通过域名访问服务 DNS服务基本框架 Kubernetes DNS服务是用来解析Kubernetes集群内的Pod和Service域名的,而且一般情况下只供集群内的容器使用。 当Kubernetes的DNS服务Cluster IP分配后,安装程序会给Kubelet配置–cluster-dns=启动参数,DNS服务的IP地址将在用户容器启动时传递,并写入每个容器的/etc/resolv.co...