<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[nswdiphone6的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/nswdiphone6</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; nswdiphone6]]></copyright><item><title><![CDATA[Kubernetes——使用副本机制和控制器部署托管Pod]]></title><link>https://blog.youkuaiyun.com/nswdiphone6/article/details/120749308</link><guid>https://blog.youkuaiyun.com/nswdiphone6/article/details/120749308</guid><author>nswdiphone6</author><pubDate>Wed, 13 Oct 2021 18:05:18 +0800</pubDate><description><![CDATA[2、副本机制和控制器部署托管Pod
当需要pod能够自动保持运行，并且保持健康时，通常会创建ReplicationController或Deployment这样的资源来托管Pod，接着由它们来创建并管理实际的pod。
当创建未托管的pod时 ，会选择一个集群节点来运行pod, 然后在该节点上运行容器。Kubemetes会监控这些容器， 并且在它们失败的时候自动重新启动它们。 **但是如果整个节点失败，那么节点上的pod会丢失，并且不会被新节点替换。**除非这些pod被控制器托管。
2.1 保持Pod健康
在]]></description><category></category></item><item><title><![CDATA[Kubernetes —— Pod]]></title><link>https://blog.youkuaiyun.com/nswdiphone6/article/details/120705766</link><guid>https://blog.youkuaiyun.com/nswdiphone6/article/details/120705766</guid><author>nswdiphone6</author><pubDate>Mon, 11 Oct 2021 16:25:10 +0800</pubDate><description><![CDATA[本章核心内容：
1、Kubernetes 核心模块Pod
2、如何决定是否将某些容器组合在一个pod中
3、pod可以运行多个进程，类似于物理机
4、如何编写Yaml或Json描述文件用于创建Pod，以及如何查看pod的规格和当前状态
5、如何使用标签来组织pod，并且同时在多个pod中执行操作
6、如何使用节点标签将pod只调度到提供某些特性的节点上
7、注解的作用，用法。
8、Kubernetes的命名空间。
1、介绍Pod
pod是一组并置的容器，代表了K8s中的基本构建模块。在实际应用中，我们并不会]]></description><category></category></item><item><title><![CDATA[Kubernetes集群搭建，基于kubeadm自动化脚本、内外网两种方式部署]]></title><link>https://blog.youkuaiyun.com/nswdiphone6/article/details/120067820</link><guid>https://blog.youkuaiyun.com/nswdiphone6/article/details/120067820</guid><author>nswdiphone6</author><pubDate>Thu, 02 Sep 2021 19:11:19 +0800</pubDate><description><![CDATA[1、自动化脚本
脚本内容：配置基础环境、安装docker、cni、kubelet、kubeadm、kubectl，主节点、工作节点都要执行。
# 重置kubeadm
echo "----------------重置系统环境--------------------"
sudo kubeadm reset

# 重置iptables
iptables -F &amp;&amp; iptables -t nat -F &amp;&amp; iptables -t mangle -F &amp;&amp; ipta]]></description><category></category></item><item><title><![CDATA[Kubernetes（三）如何管理、暴露服务]]></title><link>https://blog.youkuaiyun.com/nswdiphone6/article/details/119299405</link><guid>https://blog.youkuaiyun.com/nswdiphone6/article/details/119299405</guid><author>nswdiphone6</author><pubDate>Sun, 01 Aug 2021 16:13:50 +0800</pubDate><description><![CDATA[一、Pod概念
在一个集群中，K8S会为每个Pod都分配一个集群内唯一的IP地址。因为K8S要求底层网络支持集群内的任意节点之间的两个Pod能够直接通信。这些容器共享当前Pod的文件系统和网络，而这些容器之所以能够共享，是因为Pod中有一个叫Pause的根容器，其余的用户业务容器都是共享这个根容器的IP和Volume。所以这些容器之间都可以通过localhost进行通信。
1、为什么要引入根容器的概念？
那是因为如果没有根容器的话，当一个Pod中引入了多个容器的时候，我们应该用哪一个容器的状态来判断Pod的]]></description><category></category></item><item><title><![CDATA[Kubernetes（二）核心模块]]></title><link>https://blog.youkuaiyun.com/nswdiphone6/article/details/119087593</link><guid>https://blog.youkuaiyun.com/nswdiphone6/article/details/119087593</guid><author>nswdiphone6</author><pubDate>Sun, 25 Jul 2021 21:00:26 +0800</pubDate><description><![CDATA[k8s基础概念：

Cluster
Cluster 是计算、存储和网络资源的集合，Kubernetes 利用这些资源运行各种基于容器的应用。
Master

Kubernetes里的Master指的是集群控制节点，负责整个集群的管理和控制，基本上接收Kubernetes的所有控制命令，master负责具体的执行过程。master相当于Kubernetes集群的大脑，非常重要（高可用部署建议用3台服务器，推荐选举）。一旦master宕机或者不可用，那么对集群内容器应用的管理都将失效。
运行在master上的组]]></description><category></category></item><item><title><![CDATA[Kubernetes（一）全生命流程]]></title><link>https://blog.youkuaiyun.com/nswdiphone6/article/details/119087221</link><guid>https://blog.youkuaiyun.com/nswdiphone6/article/details/119087221</guid><author>nswdiphone6</author><pubDate>Sun, 25 Jul 2021 20:38:49 +0800</pubDate><description><![CDATA[作为实习生，整天听组里的大佬们谈一些kubectl、Pod等有关k8s的概念，听不懂很难受，于是下定决心学一下。K8s作为虚拟化容器的集大成者想要搞懂真的很难，看了很多概念仍然是一头雾水，感觉比较合适的学习路线是先搞懂它是用来干嘛的，然后弄清楚几个关键概念，比如Pod，再把集群搭起来，服务部署上去（怎么用），然后反过来看原理。

本篇将从整体上（全生命流程中）了解什么是kubernetes。
学习K8S前最好要了解一点云原生的相关内容。

1、k8s是什么？
kubernetes是一个基于容器技术的分布式架]]></description><category></category></item><item><title><![CDATA[Golang之ORM框架Gorm快速开始]]></title><link>https://blog.youkuaiyun.com/nswdiphone6/article/details/117932455</link><guid>https://blog.youkuaiyun.com/nswdiphone6/article/details/117932455</guid><author>nswdiphone6</author><pubDate>Tue, 15 Jun 2021 20:22:10 +0800</pubDate><description><![CDATA[Gorm快速入门
Gorm是Go语言的ORM框架，其特点有：

全特性 ORM (几乎包含所有特性)
模型关联 (一对一， 一对多，一对多（反向）， 多对多， 多态关联)
钩子 (Before/After Create/Save/Update/Delete/Find)
预加载
事务
复合主键
SQL 构造器
自动迁移
日志
基于GORM回调编写可扩展插件
全特性测试覆盖
开发者友好

快速开始：


安装
go get -u github.com/jinzhu/gorm



连接数据库：
   db, e]]></description><category></category></item><item><title><![CDATA[Golang之GoPath（工作目录）与Modules（包管理）的比较]]></title><link>https://blog.youkuaiyun.com/nswdiphone6/article/details/117930022</link><guid>https://blog.youkuaiyun.com/nswdiphone6/article/details/117930022</guid><author>nswdiphone6</author><pubDate>Tue, 15 Jun 2021 17:51:41 +0800</pubDate><description><![CDATA[GoPath
GOPATH 是 Go语言中使用的一个环境变量，它使用绝对路径提供项目的工作目录。
工作目录是一个工程开发的相对参考目录，好比当你要在公司编写一套服务器代码，你的工位所包含的桌面、计算机及椅子就是你的工作区。工作区的概念与工作目录的概念也是类似的。如果不使用工作目录的概念，在多人开发时，每个人有一套自己的目录结构，读取配置文件的位置不统一，输出的二进制运行文件也不统一，这样会导致开发的标准不统一，影响开发效率。
采用go env可以查看GoPath的路径， 在程序中import导的包 通过 g]]></description><category></category></item><item><title><![CDATA[Golang快速入门]]></title><link>https://blog.youkuaiyun.com/nswdiphone6/article/details/117825654</link><guid>https://blog.youkuaiyun.com/nswdiphone6/article/details/117825654</guid><author>nswdiphone6</author><pubDate>Fri, 11 Jun 2021 18:47:36 +0800</pubDate><description><![CDATA[一、Go语言基础：
1、定义包名 ，说明这个文件属于哪个包，main包表示是一个可独立执行的程序，每个Go程序都包含一个名为main的包。
package main

2、引用包，这点与Java等面向对象的语言类似，引用后可直接调用（不过不需要再次声明对象），如下说明该程序需要使用fmt包中的某些函数或者是元素，那fmt就是一个非常常用的包，实现了格式化IO的函数，比如fmt.Println输出到console。
import "fmt"

3、函数声明， main函数是每个可执行的程序必须包含的，一般来说]]></description><category></category></item><item><title><![CDATA[Docker的简单应用—＞使用Docker安装Mysql8.0]]></title><link>https://blog.youkuaiyun.com/nswdiphone6/article/details/117820687</link><guid>https://blog.youkuaiyun.com/nswdiphone6/article/details/117820687</guid><author>nswdiphone6</author><pubDate>Fri, 11 Jun 2021 16:13:45 +0800</pubDate><description><![CDATA[Docker应用之安装Mysql
1、安装前确保本机已经安装docker，可以使用docker version来查看docker是否安装。
2、下载镜像：
docker pull mysql:8.0.16

3、执行命令：
docker run -p 3306:3306 --name mysql8.0 -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0

设置端口，实例名，密码，MYSQL_ROOT_PASSWORD 为密码。
4、查看实例运行情况：
docker ps

5、]]></description><category></category></item><item><title><![CDATA[Docker和K8S的比较（初探）]]></title><link>https://blog.youkuaiyun.com/nswdiphone6/article/details/117820481</link><guid>https://blog.youkuaiyun.com/nswdiphone6/article/details/117820481</guid><author>nswdiphone6</author><pubDate>Fri, 11 Jun 2021 16:08:42 +0800</pubDate><description><![CDATA[1、Docker和K8S
Docker 是一个开源的、轻量级的容器引擎，和 VMware 虚拟机相比，Docker 使用容器承载应用程序，而不使用操作系统，所以它的开销很少，性能很高。但是，Docker 对应用程序的隔离不如虚拟机彻底，所以它并不能完全取代 VMware。
在传统的开发过程中（我之前的开发过程），以Java为例，一般都是本地（开发机）开发运行然后打成jar、war包放到服务器上，然后在服务器上部署相关环境（JDK、Redis、Mysql、Nginx等），非常麻烦。一款产品开发–上线是两套不同]]></description><category></category></item><item><title><![CDATA[鹅厂入职满月的碎碎念]]></title><link>https://blog.youkuaiyun.com/nswdiphone6/article/details/117819803</link><guid>https://blog.youkuaiyun.com/nswdiphone6/article/details/117819803</guid><author>nswdiphone6</author><pubDate>Fri, 11 Jun 2021 15:58:04 +0800</pubDate><description><![CDATA[不知不觉已经来鹅厂一月了，前几天翻看自己QQ空间的时候很庆幸自己很多东西都没删，可以看到自己的成长过程，昨天翻看学姐博客的时候突然发现自己已经很久没有写点什么了，于是就有了记录技术&amp;生活的念头。
今天是入职腾讯的第一个月整，也恰好是周五，手头上的工作都已经处理完毕，上午汇报时leader说了一句不错让我心情好了一天，周围同事对我都很好，尤其是我的导师，给我讲解方案时常常蹲在地上，带我去逛公园，告诉我一些职场上的道理，让我意识到不能只是闷头写代码， 要经常停下来思考总结一下自己，只有抬起头来才会看到前]]></description><category></category></item><item><title><![CDATA[TCP断开连接的过程及状态变迁]]></title><link>https://blog.youkuaiyun.com/nswdiphone6/article/details/115697312</link><guid>https://blog.youkuaiyun.com/nswdiphone6/article/details/115697312</guid><author>nswdiphone6</author><pubDate>Wed, 14 Apr 2021 14:07:13 +0800</pubDate><description><![CDATA[TCP断开连接
TCP的四次挥手
TCP 断开连接是通过四次挥手方式。
双方都可以主动断开连接，断开连接后主机中的「资源」将被释放。



第一次挥手（FIN=1，seq=x）：
假设客户端想要关闭连接，客户端发送一个FIN标志位置为1的包，表示自己已经没有数据可以发送了，但是仍然可以接收数据。发送完毕之后，客户端进入FIN_WAIT_1状态。


第二次挥手（ACK=1，ACKnum=x+1）：
服务器端确认客户端的FIN包，发送一个确认包，表明自己接收到了客户端关闭连接的请求，但还没有准备好关闭连接。发]]></description><category></category></item><item><title><![CDATA[TCP的分片]]></title><link>https://blog.youkuaiyun.com/nswdiphone6/article/details/115695003</link><guid>https://blog.youkuaiyun.com/nswdiphone6/article/details/115695003</guid><author>nswdiphone6</author><pubDate>Wed, 14 Apr 2021 11:45:38 +0800</pubDate><description><![CDATA[TCP的分片
先来认识下 MTU 和 MSS


MTU：一个网络包的最大长度，以太网中一般为 1500 字节；
MSS：除去 IP 和 TCP 头部之后，一个网络包所能容纳的 TCP 数据的最大长度；

既然 IP 层会分片，为什么 TCP 层还需要 MSS呢？
如果在 TCP 的整个报文（头部 + 数据）交给 IP 层进行分片，会有什么异常呢？
当 IP 层有一个超过 MTU 大小的数据（TCP 头部 + TCP 数据）要发送，那么 IP 层就要进行分片，把数据分片成若干片，保证每一个分片都小于 MTU]]></description><category></category></item><item><title><![CDATA[TCP三次握手过程及状态变迁]]></title><link>https://blog.youkuaiyun.com/nswdiphone6/article/details/115694659</link><guid>https://blog.youkuaiyun.com/nswdiphone6/article/details/115694659</guid><author>nswdiphone6</author><pubDate>Wed, 14 Apr 2021 11:34:34 +0800</pubDate><description><![CDATA[TCP的连接建立：
1、TCP三次握手过程和状态变迁

TCP 是面向连接的协议，所以使用 TCP 前必须先建立连接，而建立连接是通过三次握手来进行的。


一开始，客户端和服务端都处于 CLOSED 状态。先是服务端主动监听某个端口，处于 LISTEN 状态

第一次握手：


客户端会随机初始化序号（client_isn），将此序号置于 TCP 首部的「序号」字段中，同时把 SYN 标志位置为 1 ，表示 SYN 报文。接着把第一个 SYN 报文发送给服务端，表示向服务端发起连接，该报文不包含应用层数据]]></description><category></category></item><item><title><![CDATA[重学TCP之TCP的基本认识]]></title><link>https://blog.youkuaiyun.com/nswdiphone6/article/details/115693914</link><guid>https://blog.youkuaiyun.com/nswdiphone6/article/details/115693914</guid><author>nswdiphone6</author><pubDate>Wed, 14 Apr 2021 11:10:38 +0800</pubDate><description><![CDATA[TCP的基本认识

什么是 TCP ？

TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。

**面向连接：**一定是「一对一」才能连接，不能像 UDP 协议可以一个主机同时向多个主机发送消息，也就是一对多是无法做到的；
**可靠的：**无论的网络链路中出现了怎样的链路变化，TCP 都可以保证一个报文一定能够到达接收端；
**字节流：**消息是「没有边界」的，所以无论我们消息有多大都可以进行传输。并且消息是「有序的」，当「前一个」消息没有收到的时候，即使它先收到了后面的字节，那么也不能扔给应用层去]]></description><category></category></item><item><title><![CDATA[Redis应用之实现延迟队列以及限流]]></title><link>https://blog.youkuaiyun.com/nswdiphone6/article/details/115691048</link><guid>https://blog.youkuaiyun.com/nswdiphone6/article/details/115691048</guid><author>nswdiphone6</author><pubDate>Wed, 14 Apr 2021 09:57:51 +0800</pubDate><description><![CDATA[1、延迟队列实现
延迟队列的应用场景：

订单超过 30 分钟未支付，则自动取消。
外卖商家超时未接单，则自动取消。
医生抢单电话点诊，超过 30 分钟未打电话，则自动退款。
等等场景都可以用定时任务去轮询实现，但是当数据量过大的时候，高频轮询数据库会消耗大量的资源，此时用延迟队列来应对这类场景比较好。

延迟队列可以通过Redis的ZSet数据结构实现，可以将消息序列化成为一个字符串作为zset的value，这个消息的到期处理时间作为score，然后用多线程轮询zset的到期的任务进行处理。多个线程轮询保]]></description><category></category></item><item><title><![CDATA[基于NIO的网络通信框架——Netty]]></title><link>https://blog.youkuaiyun.com/nswdiphone6/article/details/115281855</link><guid>https://blog.youkuaiyun.com/nswdiphone6/article/details/115281855</guid><author>nswdiphone6</author><pubDate>Sun, 28 Mar 2021 15:39:55 +0800</pubDate><description><![CDATA[6、Netty
什么是Netty？

Netty 是一个利用 Java 的高级网络的能力，隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架。
1）本质：JBoss做的一个Jar包
2）目的：快速开发高性能、高可靠性的网络服务器和客户端程序
3）优点：提供异步的、事件驱动的网络应用程序框架和工具
通俗的说：一个好使的处理Socket的框架

Netty是一款基于NIO（Nonblocking I/O，非阻塞IO）开发的网络通信框架，对比于BIO（Blocking I/O，阻塞IO），他的并]]></description><category></category></item><item><title><![CDATA[零拷贝简介]]></title><link>https://blog.youkuaiyun.com/nswdiphone6/article/details/115281361</link><guid>https://blog.youkuaiyun.com/nswdiphone6/article/details/115281361</guid><author>nswdiphone6</author><pubDate>Sun, 28 Mar 2021 15:14:48 +0800</pubDate><description><![CDATA[零拷贝
零拷贝主要的任务就是避免CPU将数据从一块存储拷贝到另外一块存储，主要就是利用各种零拷贝技术，避免让CPU做大量的数据拷贝任务，减少不必要的拷贝，或者让别的组件来做这一类简单的数据传输任务，让CPU解脱出来专注于别的任务。这样就可以让系统资源的利用更加有效。
零拷贝给我们带来的好处：

减少甚至完全避免不必要的CPU拷贝，从而让CPU解脱出来去执行其他的任务
减少内存带宽的占用
通常零拷贝技术还能够减少用户空间和操作系统内核空间之间的上下文切换。

Linux 中零拷贝技术的实现方向
① 直接 I/]]></description><category></category></item><item><title><![CDATA[IO多路复用之select、poll、epoll]]></title><link>https://blog.youkuaiyun.com/nswdiphone6/article/details/115280861</link><guid>https://blog.youkuaiyun.com/nswdiphone6/article/details/115280861</guid><author>nswdiphone6</author><pubDate>Sun, 28 Mar 2021 14:48:06 +0800</pubDate><description><![CDATA[IO多路复用之select、poll、epoll
**IO多路复用是指内核一旦发现线程指定的一个或者多个IO条件准备读取，它就通知该进程。**当客户处理多个描述符时（一般是交互式输入和网络套接口），必须使用I/O复用。
与多进程和多线程技术相比，I/O多路复用技术的最大优势是系统开销小，系统不必创建进程/线程，也不必维护这些进程/线程，从而大大减小了系统的开销。
目前支持I/O多路复用的系统调用有 select，pselect，poll，epoll，I/O多路复用就是通过一种机制，一个进程可以监视多个描述符]]></description><category></category></item></channel></rss>