Docker 网络 host、bridge、macvlan 基本原理和验证
Docker 作为容器的主流平台,不仅仅提供了虚拟化隔离,同时也配备的网络隔离技术,并使用不同的网络驱动满足不同的场景,这篇文章对 Docker 的3种网络实现Host、Bridge、Macvlan进行模拟验证,并在实践中理解背后的基本原理。
容器网络 flannel 主要 backend 基本原理和验证
SDN(软件定义网络)改变了传统的网络世界规则,它的灵活性和开放性带来了成本的优势,如 [fastly 使用 SDN 技术构建了一个可伸缩的低成本路由器](https://www.fastly.com/blog/building-and-scaling-fastly-network-part-1-fighting-fib)。而在容器生态中,[Flannel](https://github.com/coreos/Flannel/) 为容器集群构建 Overlay 网络。网上大多数文章还是介绍的 Flannel 第一个版本 vxlan overlay 实现原理,本文介绍 Flannel vxlan overlay 第一版和最新版两种方式的基本原理及 hostgw、UDP 的实现。
Ddr:去中心化 decentralized docker registry 镜像仓库设计
Docker 作为轻量级容器技术解决应用容器化已经为广大用户使用,涵盖了应用的编译、打包、部署、测试等整个周期。镜像为运行 Docker 容器提供了基础和重要的前提,Docker Registry 提供了一个存储、分发、管理 Docker 镜像的仓库服务,在某些场景下,如跨国部署场景,要求镜像仓库服务提供更高效的上传下载,同时降低复杂度和具备服务高可用。因此,本文设计了一种镜像仓库服务的去中心化的新思路。
好用的工具集
收集一些好用的工具集,涉及到 API 设计、Database 设计、图形工具、文档工具等。
第三次写博客
这是第三次重写博客,第一次是2009年,第二次是2014年,今年已到了2018年,工作也快十年,做过也看过一些东西,但总觉得缺少思考和记录,先不管正确与否,落笔总是思考的过程,从技术认知到文字是一个过程,从文字到付诸实践又是一个过程,所以还是鼓励自己把一些技术认知写下来,一方面锻炼自己那拙笨的文字能力,另一方面自己在这个落笔的过程中也有所思考。对于写技术文章来讲,自己完全还是个新人。作为新人的我,也在摸索如何写技术文章,以什么风格去表达技术。
探讨一种更高效的代理模式
Service Mesh 提供了微服务化开发的新思路,核心思想是构建一个代理转发网络并结合控制和转发分离的做法来对成千上万个微服务间做流量、策略、安全等管理,而另一方面 Linux Kernel 提供一种运行时高效扩可编程的网络注入机制 eBPF,借此能实现 L47 层代理转发。假设借助 eBPF,作为 Service Mesh 的数据转发层,对接 Pilot、Mixer 等控制面,实现策略、流量和安全管理,是不是一种更高效的方式?这会比 Envoy 拥有更好的性能,虽然性能未必是 Mesh 首要考虑的问题,后搜索发现 Cilium 果然做了类似的尝试,详情见 [http://docs.cilium.io/en/latest/gettingstarted/istio/](http://docs.cilium.io/en/latest/gettingstarted/istio/),但对接的方式很特别,并不像 Envoy 一样,为每一个 Pod 部署一个 Envoy 容器,而是在多个 Pod 外部署一个 Cilium,以 Kubernetes Daemon Set 模式部署,为多个 Pod 进行代理,对控制器层面的 Pilot 做了定制,部署配置如下:
初识 vxlan
在云计算的服务里,我们需要在物理的二层网络或者三层网络里虚拟化出二层网络供租户使用,这个虚拟的二层网络叫做子网,由多个这样的子网组成了一个 VPC。这种软件定义网络改变这如今很多网络的玩法。
动手写了2个 xcode 插件
使用 XCode 的 XAlign 插件进行 Code 排版,但这个插件需要选中的时候进行排版,我想在保存的时候触发排版,于是稍微改造了下这个插件,同时又写了个保存时检测 JSON 格式的插件,并根据异常信息移动光标到错误处
Ios 近距离传输技术 bonjour
一直想看看近距离传输,特别是“快牙”火了之后,本来想看看古老的蓝牙传输,但这种技术显然落后了,耗电,慢和不稳定。[bonjour](https://developer.apple.com/bonjour/index.html)是apple提供的一种基于TCP/IP,无配置的通信服务,可用于近距离传输,遵循Apache 2.0 license,支持wi-fi和蓝牙。名字也有点意思,“你好”,很神似。
Oc 不支持多继承和重载
OC是不支持多继承和重载方法,这个问题应该被很多人问过为什么?看oc的类定义和findMethod实现来看看为什么不支持,语言的多继承和重载往往给代码结构带来的复杂性,所以 Apple 取消了这两种特性。
偶遇野指针导致数组 crash 了
App 在 load 的时候任务过重影响了性能,所以很自然想做并发,我的场景是主线程对 Array 只做新增 append 操作,其他线程进行读 read 操作,只要 read 的 index 小于数组大小,自然认为不会 crash,但结果 exc_bad_access 了,写了2段测试code,fragment1 正常,fragment2 报错
我们实际造了个分治数组
We are guessing Apple,but we don't know the Apple is guessing us!喔~我们又造了一个轮子,我们用分块的 `NSMutableArray` 造了一个类似的 `CFStorage` 的东东,目的在数据量大下数组的读写性能。在学校我们就知道 Array 的写操作是耗时的,因为挪动元素的时候要数组复制,而读是很快的,因为是直接寻址,时间复杂度是 `O(1)`,基于这样一个印象,我们在前端存储海量数据时候使用 Array 就会犹豫,比如 10W 条数据。所以产品上我们使用了一种变形的数组,即由多个数组嵌套组成的数组结构。最近在做 OC 开发,使用 `NSMutableArray`,就想看看 OC 的是如何实现一个可变数组结构,首先我们来测试下。
重写博客
之前在`javaeye`上写博客,还搭建过`Wordpress`(php+mysql的博客系统),但没申请主机,今天发现`GitHub+jekyll`搭建静态bolg还蛮简单,就心血来潮了,重新开始写博客;)