git rebase 是什么?
以前经常用
git-flow
或者cherry-pick
, 会产生很多分支merge的历史,如果要避免这些,可以考虑采用git rebase
.
假设你现在基于远程分支origin
,创建一个叫mywork
的分支。
1 | $ git checkout -b mywork origin |
以前经常用
git-flow
或者cherry-pick
, 会产生很多分支merge的历史,如果要避免这些,可以考虑采用git rebase
.
假设你现在基于远程分支origin
,创建一个叫mywork
的分支。
1 | $ git checkout -b mywork origin |
bridge是一种技术,可以把一个linux设备上的两块网卡桥接在一起,如何对外表现为一个大的网卡接口,这样做有很多用途
比如你有两台设备,但是又没有路由器,那么把他们桥接在一起,可以共享其中一台的网络,这样两台都可以上网,这两台设备也可以是vm,不一定是物理设备
还有一种用途,就是监控两个设备的网络流量,比如用wireshark来监控他们间的流量
总的来讲,桥接就是将一台计算机插入到已经与较大网络(例如Internet)建立连接的另一台计算机上,然后让这台桥接上去的计算机可以使用联网计算机的连接。
bridge在vm(virtual machine)的领域非常有用,比如docker, k8s, multipass等。
docker可以帮忙创建很多独立的虚拟容器,那这些容器怎么上网,相互之间怎么通信呢,docker提供多种途径,其中一种就是bridge。
查看设备上有哪些bridge,可以用brctl命令,如果你的没有这个命令,可用apt或者yum安装** sudo apt install bridge-utils**
k3s之前的multi-master的支持 Mysql, PostgreSql, etcd 这3个方案,现在正在实验一个内嵌的multi-master方案,使用一个sqlite的HA版本-dqlite,dqlite-顾名思义,distibution sqlite,以后稳定的话,可能会成为官方推荐的HA方案。
Dqlite用主要做了几个事情:
提供一个基于raft的解决方案,基于一个叫 c-raft 的 raft轻量级实现,
把sqlite封装起来,给它存储层注册一个定制driver来操作数据
CAP理论里,和绝大多分布式数据库一样,dqlite选择了(CP without A), 就是选择了Consistency(一致性)、Partition tolerance(分区容错性),而不保证 Availability(可用性),也即是:
保证了数据一致性
保持强一致性,用户请求需要在服务器中所有的分区里面完成了一致性才返回
但是,不保证每个请求都能得到没有报错的响应
nc是网络调试的一款强大的工具,是用于处理TCP或UDP数据的通用实用程序,是黑客界的瑞士军刀
看看的常规用法:
1 | > tldr nc |
nc对于网络的操作可以分为接受和发送这两种操作
区别是参数 -l, -l 是监听端口的参数,有这个参数,说明启动的是一个服务端
其他没有-l的操作,则是向其他网络端发起网络操作,是一个客户端
此文始发于我的简书博客: k8s的Flannel网络,特此声明
引: 之前写过一篇文章介绍如何管理linux设备上的bridge(网桥)和docker bridge, 今天我们来看看k8s的网络模型。
我们先来看图示例,下面则个是k8s的网络模型图。
我们知道,在k8s里面最小的管理单元是pod,一个主机可以跑多个pod,一个pod里面可以跑多个容器。
如上面所示,一个pod里面所有的容器共享一个网络命名空间(network namespace),所以,pod里面的容器之间通信,可以直接通过localhost来完成,pod里面的容器之间通过localhost+端口的方式来通信(这和应用程序在宿主机的通信方式是一样的)。
“子网”掩码,顾名思义,它就是拿来划分子网的,更准确的说,划分子网的同时,还能通过它知道主机在子网里面的具体ip的具体地址。
那么划分这个子网有什么用呢?
既然要划分子网,要有一个规则,告诉路由器,IP的哪一部分是表示子网,哪一部分表示我在这个子网里面具体的地址
所以,实际上IP细来讲又分为三部分:网络部分(network)子网段部分(subnetwork)和主机部分(host)
一般大家喜欢把网络部分和子网部分合并成为网络地址(网络号),把子网看做是网络的一部分,主机部分称为主机地址(主机号)
有时候,我们需要对不同的流量来源做精准的统计,比如我们群发短信,希望对群发效果做a/b test,可以在短信里面的带的landing page做区分,然后需要有精准的统计工具,这个时候我们可以用短地址系统来做统计,也就是在不同的短信里面使用不同的短地址,然后对短地址系统来做数据采集和分析。
yourls是一个基于php+mysql开发开源的短地址服务系统,除了基础的跳转外,还提供丰富的统计和插件。
我们知道使用php的包安装工具composer有时候是件非常痛苦的事情,还有yourls系统需要apache或者nginx配合,把服务器搞得很乱,因此,最好的办法就是把yourls封装到docker里面,打包交给docker-compose
、swarm
或者 k8s
来管理。
NAT的全称是 Network Address Translation, 其实看英文名,就知道它的大概意思:网络地址转换。
严格来说,
那么NAT规则其实定义的就是这4者的映射关系,告诉路由器应该怎么去转换(Translation)
那么什么时候会用到NAT技术呢,答案是,从一个网络到另外一个网络,有一些文章在写NAT的时候,常讲的是外网(互联网)到私网(私域子网)的通信的时候,其实这只是其中一种场景,实际上,只要是两个网络间需要通信,都可以用NAT来做。
下面这个图讲的就是互联网和私网这个场景的NAT
1 | \ | / . / |
MacOS的路由表查询不是用我们熟知的route命令,而是使用命令 netstat -r
或者netstat -nr
(不做域名解释)来查看
netstat -r
Routing tables
1 | Internet: |
如果加-n不解析域名也就是,那么destination就是ip,如:
我们知道使用github action 可以很简单的部署hexo的静态文件到github pages,但是如果在国内我们希望部署到github pages同时也部署到coding,然后通过dns双线路由,另外,我们可能有多个账号,比如公司的和个人的博客或者网站,也是同时部署到coding和github,那就这个github action解决不了,下面我们改造一下,使其达到这个目标:
_config.yml
,就可以直接通过hexo deploy -g
或者git push
来触发部署上次写了篇文章 使用github action同时部署hexo到github和coding最优雅的方式(支持多github账号),从实现原理的角度做了介绍,由于实现的目标比较多,所以看起来比较复杂,这次我们不讲原理,仅仅按实现目标来介绍如何配置。
先说我们要实现的目标,然后再按目标来介绍方法
hexo d -g
一个命令一次性部署到github和codinggit push
推送到github的surce仓库后,由action触发部署到github和coding的静态仓库 _config.yml
。而不需要在action里面写死目标静态仓库的地址,方便维护说明:
git push
触发,比如 github 的 action 可能某些原因失败了,暂时又没时间去维护,那么我可以直接在本地hexo d -g
部署就行