Istio
Istio: 一个开源平台去链接, 管理和保障微服务: 分布式微服务代理。
传统代理: 类似于一个线, 任何服务都经过这个代理。
分布式代理: 代理运行在每个应用上,接管应用进出的流量并和统一的控制中心通信获取动态配置。
微服务代理: service mesh: 互连的分布式代理。
Istio:
Pilot: 基于http做流量的;
Mixer: 做数据统计, 授权认证
CA-Auth: 做安全认证
Envoy: 微服务代理。
Istio: 一个开源平台去链接, 管理和保障微服务: 分布式微服务代理。
传统代理: 类似于一个线, 任何服务都经过这个代理。
分布式代理: 代理运行在每个应用上,接管应用进出的流量并和统一的控制中心通信获取动态配置。
微服务代理: service mesh: 互连的分布式代理。
Istio:
Pilot: 基于http做流量的;
Mixer: 做数据统计, 授权认证
CA-Auth: 做安全认证
Envoy: 微服务代理。
苗艳强,闫学安
ZTE 工程师,主要从事容器相关开源工作,Kubernetes 社区 member, containerd 社区 member
课程详情:
演讲主题:
目前跟 Kubernetes 对接的默认容器运行时是 docker,然而 docker 从 1.12 版本开始加入了 swarm 功能,随着版本的演进,功能越来越庞大,已经成为一个跟 Kubernetes 同级甚至高一级的编排工具,且前不久又宣布在编排测要无缝对接 Kubernetes,因此,docker 作为 Kubernetes 默认容器运行时的位子必将被其他工具代替。本次分享首先简单介绍 Kubernetes 的运行时接口规范,然后着重为大家分享一款新的容器运行时工具 containerd,包括项目介绍,功能组成等,以及使其原生对接 Kubernetes 的插件 cri-containerd。
纲要/提纲:
Kubernetes 容器容器运行时接口(CRI)
containerd 项目介绍
containerd 的 CRI 实现
Containerd的CRI实现
kubelet -> cri-containerd -> containerd
在hexo中, 在themes目录下git clone了一个子目录themes/next. git push 到远程仓库后没有看到themes/next中的内容, 也无法git add
1 | shentao@shentao-ThinkPad-T450:~/blog$ git commit -m "fix" themes/next/ |
当创建一个子git项目是, 项目就叫做git submodule结构, 外部无法对子模块进行控制, 有两种方式(我知道的):
1.
1 | cd themes/next |
再到外部提交
1 | git add themes/next |
1 | git rm --cached themes/next |
写了一个简单的程序, 想通过外部环境变量传递给程序的全局变量, 这个全局变量又被另一个全局变量使用, 发现另一个变量无法改变, 然后发现一些有意思的golang程序初始化顺序, 需要稍微注意一下.
1 | package main |
输出如下:
1 | /home/shentao/.IdeaIC2016.1/config/plugins/Go/lib/dlv/linux/dlv --listen=localhost:34206 --headless=true exec "/tmp/Build initializetest.go and rungo" -- -size=10 |
注释标记的是实际运行顺序, 先是变量的初始化, 此时size还没传入解析, 所以使用默认值”3”; 其次是调用init函数; 最后是main函数, main函数再进行flag.Parse(), 此时size改变, 但是其他变量不会再变.
本书评不涉及剧透,请大胆的往下看。
阿加莎的书的特点是将你往某种定势思维上引,然后打破这种定势思维。《无人生还》亦是如此。那么如何排解定势思维呢?这本书在侦破的过程中提供了两个思维。
第一个是排除。即一开始不去想最可能的结果,而是将所有已知的证据放在桌面,然后不断排除所有不可能的结果,最后得到的结果无论多么离谱,都是在已有证据下的唯一结果。
第二个思维是回溯。当我们得到一个唯一结果,或者得不到唯一结果,也就是所有结果都被排除掉,那么只有一种可能就是证据本身是错的,这就是有证人在说谎,或者有人伪造了证据,这时候需要回溯到证据提出的过程中,提供假证据必然要掩盖某个事实,从某个最容易甄别的假证据出发找到一个真事实,通过这个真事实,按照第一个思维,可以继续推倒出其他与之相违背的证据,从而重新得到证据链。
我不禁有一个有意思的理论和想法:如果每个人做的事情都看做一条平面上的直线,那么我们肉眼所能看到的案发现场,就是这所有直线的有且仅有的一个交点。有任何一个人在任何时候说谎,那条直线就会发生偏折,就无法相交于一点,此时为了相交于一点,有两种方法:说更多的慌让直线折回来;让其他人也说谎,找一个新的交点。本书的犯人无疑是后者。但想找一个新的交点何其难,终究被识破。
其实还有第三种方法。昨晚看了《黑镜》最新一季的某一集,女主角与男友因为酒驾撞死了一个男子,然后抛尸。时隔多年男友良心不安想要去告诉被害者家属,女主角将他杀害,而杀害的过程被正在调查车祸的女调查员发现,于是女主角杀害了女调查员,并得知她的家庭,于是杀害了她的所有家人。所以这个方法就是把平面上所有其他直线擦掉,平面上只有一条直线,和一个看起来不相交的点。
在跑自己的golang程序时遇到死锁, 查看stack, 发现一些奇怪的goroutinue:
1 | goroutine 17 [syscall, 12 minutes, locked to thread]: |
这些goroutine显示: locked to thread, 但上网查找有回复说到, 这并不是一个真正的死锁, 而是正常的goroutine拿线程锁的过程. 可能调用了cgo或者runtime.LockOSThread. 这个问题可以忽略掉, 以防绕进死胡同.
1 | That is not a deadlock, at least not a deadlock in the Go program. It |