作为已经比较成熟的IAAS开源解决方案,OpenStack已经发布了19个版本,目前稳定版是Stein,并且下一个版本Train也预计在10月发布。可以说,从代码架构角度来说对于初学者来说已经略微复杂,但最核心的组件有以下几个:
- Nova:负责虚拟机相关。
- Glance:负责镜像相关。
- Cinder:负责存储相关。
- Neutron:负责网络相关。
- Keystone:负责鉴权以及服务注册。
大体架构如下图:
能看到这篇文章的小伙伴肯定已经知道什么是Scrapy以及Scrapy-Redis了,基础概念这里就不再介绍。默认情况下Scrapy-Redis是发送GET请求获取数据的,对于某些使用POST请求的情况需要重写make_request_from_data
函数即可,但奇怪的是居然没在网上搜到简洁明了的答案,或许是太简单了?
这里我以httpbin.org
这个网站为例,首先在settings.py
中添加所需配置,这里需要根据实际情况进行修改:
1 | SCHEDULER = "scrapy_redis.scheduler.Scheduler" #启用Redis调度存储请求队列 |
由于某些不可描述的原因,国内使用go get
命令安装某些包的时候会超时导致失败,比如net
包、sys
包、tools
包等。第一种解决办法就是自己从git上下载后添加链接到GOPATH
中,比如:
1 | git clone https://github.com/golang/net.git $GOPATH/src/github.com/golang/net |
在上一篇文章中记录到了IPFS的BitSwap
协议,今天接着往下看关于Object
的部分。
Merkle DAG是IPFS核心概念之一,在Git的数据结构上进行了改造。理解Merkle DAG之前先来了解下Merkle Tree。
阅读全文原文,阅读之前请先看200行GO代码实现区块链1 和 200行GO代码实现区块链2。
如果看到这了相信你已经知道什么是加密算法等背景了,所以忽略关于这部分的翻译,直接从编码开始。这篇文章在前两篇的文章基础上添加了工作量证明(POW)挖矿算法。
阅读全文君以国士待我,我必以国士报君。
野生程序猿