编程

post-image

使用Linux的bridge设备和iptable功能实现容器之间跨主机通信

Saturday, Feb 2, 2019

如果玩过docker的网络肯定了解各种为了实现docker容器之间的跨主机方案。 比如docker自带的overlay到weave,fannel,calico等。 有通过GRE格式的overlay进行跨主机通信,或者通过主机路由形式的。 今天我们通过Linux自带的bridge功能来实现容器的跨主机通信。

阅读更多
post-image

以太坊君士坦丁堡升级失败原因分析

Tuesday, Jan 22, 2019

ethereum官方在1月16日发布了一个紧急修复版本, 需要覆盖掉之前的特殊版本v1.8.20 这也就意味着君士坦丁堡版本的硬分叉失败了。 下面我们来看看是什么bug导致此次升级失败。

阅读更多
post-image

使用Linux的veth和iptable实现容器跨主机通信

Friday, Jan 18, 2019

简介 linux具有非常强大的网络功能, 今天准备使用Linux的veth网络设备来实现容器之间的跨主机通讯方式。 拓扑如下 从上图我们可以看出: 1. 主机host1与host2在同一个网段,可以直接通过交换机进行通信。 2. 两个主机的容器具有不同的ip地址。 那么如何通过Linux的veth和iptable表实现跨主机通讯呢? 分析: veth类似于现实中的网线, 我们只要将veth的一段接入container0命名空间, 一端接入默认的全局命名空间至少可以实现将数据包从容器转移到了主机的网络栈中。 数据包流入主机网络栈之后, 需要将数据路由到另外一个主机上, 因此主机必须要开启路由转发功能。 实践 现在host1上执行

阅读更多
post-image

使用solidity实现以太坊多签功能

Monday, Dec 10, 2018

虽然以太坊没有提供直接的多重签名的功能, 但是号称区块链2.0的公链平台可以具有图灵完备的智能合约运行平台。 下面我就使用solidity和golang给大家暂时一下如何用智能合约来实现以太坊的多签功能。

阅读更多
post-image

以太坊智能合约创建部署调用流程详解

Tuesday, Nov 27, 2018

以太坊被称为区块链2.0的一个主要的原因是因为他有一个图灵完备的evm, 可以在节点上执行智能合约代码。 但是一个智能合约代码又是在以太坊节点上工作的呢。 让我们探究一番。

阅读更多
post-image

Kubernets网络路由分析

Friday, Nov 16, 2018

这是一份写于一年半之前的文章 归档到我的个人博客中 关于路由 很多像我这样的网络小白,对于整个路由过程比较模糊。下面以一个简单的PING示例解释一下路由的整个过程。 有两个原则需要记住: 二层网络是通过MAC地址进行交换 三层路由通过IP选路。 一个ICMP的以太网格式报文: |目的MAC|源MAC|目的IP|源IP|ICMP包| 主机A发送一个ICMP包到主机B, 此时目的IP为10.10.0.2,源IP为192.168.0.2。 主机A发现,这个IP和我不在一个网段,那就需要进行IP选路了。此时它就只能把包发往直接的网关了(192.168.0.1) ,主机A和网关在同一个网段,通过MAC地址进行交换,所以目的MAC就是MACRA, 源Mac就是MACHOSTA。

阅读更多
post-image

Tendermint源码分析

Friday, Nov 9, 2018

Tendermint是基于ePBFT+POS共识算法的通用区块链平台。 通过对区块链整个流程的抽象出ABCI接口。 可以很容易的实现直接的区块链。

阅读更多
post-image

阅读Google论文MapReduce的理解

Thursday, Nov 8, 2018

按着Google论文的说法, MapReduce是一种编程模型。 专为处理超大数据集的一种实现。 分为Map和Reduce两个阶段。 用户首先创建Map函数处理输入的然后输出; 然后在创建Reduce函数对输入的进行合并 生成结果。

阅读更多
post-image

Golang 1.11Module研究

Wednesday, Nov 7, 2018

go1.11对module有了新的支持, 在下一个版本可能对移除掉对GOPATH的支持。目前这个功能是根据一个环境变量GO111MODULE的值来进行控制的。

阅读更多
post-image

以太坊私有网络创建

Wednesday, Nov 7, 2018

以太坊启动测试链命令参考 ./geth --datadir /Volumes/exdisk/testnet --rpc --rpcaddr 0.0.0.0 --rpcport 8544 --port '30302' --rpcapi 'eth,web3,personal,net,miner,admin,debug,txpool' --testnet --fast --maxpeers 50 --cache 1024 --ipcpath /goproject/src/github.

阅读更多