- PhxPaxos源码分析——网络 12-22
- 学习笔记DL004:标量、向量、矩阵、张量,矩阵、向 12-22
- IT运维如何防止陷入“中年油腻”和频繁被动地打“遭遇 12-22
- 学习笔记DL002:AI、机器学习、表示学习、深度学 12-22
- 分布式本质论:高吞吐、高可用、可扩展 (1) 12-22
- 学习笔记DL001 : 数学符号、深度学习的概念 12-22
- 使用 Rust 构建分布式 Key-Value St 12-22
- 学习笔记TF067:TensorFlow Servi 12-22
- 学习笔记TF066 : TensorFlow 移动端 12-22
- 从概念走向实操 区块链的“风”真要来了 12-22
PhxPaxos源码分析——网络
发布者: superzhang | 发布时间:2017-12-22
了解分布式系统的童鞋肯定听过Paxos算法的大名。Paxos算法以晦涩难懂著称,其工程实现更难。目前,号称在工程上实现了Paxos算法的应该只有Google、阿里和腾讯。然而,只有腾讯的微信团队真正将代码开源出来,他们将Paxos算法的实现封装成了一个Paxos库,大家可以基于该库实现自己想要的功能,比如用于master选举,或者甚至利用它来实现一个分布式KV数据库等。
之前就对Paxos很感兴趣,但是一直没看过实现的代码,这次微信开源了PhxPaxos后终于有机会深入地了解Paxos的实现细节。在这里感谢微信团队。感谢PhxPaxos的作者。让我们一起来领略Paxos的魅力吧。
本次的源码分析先从网络部分开始。因为在分布式系统中不可避免会涉及到不同节点以及相同节点上不同进程之间的通信。因此网络部分也是至关重要,所以就先把网络单独拿出来看,接下来再去看Paxos算法的实现部分。
概览源码的include/phxpaxos目录下是公共头文件。include/phpaxos/network.h 是网络模块的抽象函数,如果用户想使用自己的网络协议,可以通过重写这些函数实现网络模块的自定义。
我们先来看下network.h的内容:
namespace phxpaxos { //You can use学习笔记DL004:标量、向量、矩阵、张量,矩阵、向量相乘,单位矩阵、逆矩阵
发布者: superzhang | 发布时间:2017-12-22
线性代数,面向连续数学,非离散数学。《The Matrix Cookbook》,Petersen and Pedersen,2006。Shilov(1977)。
标量、向量、矩阵、张量。
标量(scalar)。一个标量,一个单独的数。其他大部分对象是多个数的数组。斜体表示标量。小写变量名称。明确标量数类型。实数标量,令s∊ℝ表示一条线斜率。自然数标量,令n∊ℕ表示元素数目。
向量(vector)。一个向量,一列数。有序排列。次序索引,确定每个单独的数。粗体小写变量名称。向量元素带脚标斜体表示。注明存储在向量中元素类型。如果每个元素都属于R,向量有n个元素,向量属于实数集R的n次笛卡儿乘积构成集合,记ℝⁿ。明确表示向量元素,元素排列成一个方括号包围纵列。向量看作空间中点。每个元素是不同坐标轴上的坐标。索引向量元素,定义包含元素索引集合,集合写在脚标处。用符号-表示集合补集索引。
矩阵(matrix)。一个二维数组。每个元素由两个索引确定。粗体大写变量名称。如果实数矩阵高度为m,宽度为n,A∊ℝ⁽m*n⁾。表示矩阵元素,不加粗斜体形式名称,索引逗号间隔。A1,1表示A左上元素,Am,n表示A右下元素。“:”表示水平坐标,表示垂直坐标i中所有元素。Ai,:表示A中垂直坐标i上一横排元素,A的第i行(row)。
IT运维如何防止陷入“中年油腻”和频繁被动地打“遭遇战”?
发布者: superzhang | 发布时间:2017-12-22
作者:陈峻近期,我拜访了一家文化传播公司的 IT 运维总监 Tim,他向我讲述了他的团队是如何像当年玩《大航海时代》那样将 IT 系统的战舰越造越大,并使之在企业运营的海洋中平稳前行的。
在此,我将他的心路历程分享出来,希望能够帮助您改变那种像小仓鼠一样一直在环形轮上盲目地“跑酷”状态。
纵然练就“72变”,也无法笑对“81难”该文化公司成立于 2013 年,他们最初从简单的“PC 服务器 + 二手三层交换 + 托管服务器”这样的硬件架构起步,既要对内满足员工的“上网 + 邮件 + 文件共享 + 存储”,又要对外提供“官网 + 视频上传/下载”的服务。
在 IT 系统建成初期,由于处于运维“四少”,即设备少、应用少,流程少,问题少的状态,他和另一名同事组成的“哼哈二将”模式完全可以 hold 住各种与 Ops 相关的需求和问题。
但是随着公司这几年来的多元化发展,各种看得见的设备和看不见的软件越来越多,特别是“论坛 + 会员博客 + 微官网 + 在线订单 + 移动支付 + 远程访问”等业务所带动的系统复杂性
学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
发布者: superzhang | 发布时间:2017-12-22
AI早期成就,相对朴素形式化环境,不要求世界知识。如IBM深蓝(Deep Blue)国际象棋系统,1997,击败世界冠军Garry Kasparov(Hsu,2002)。国际象棋,简单领域,64个位置,严格限制方式移动32个棋子。可由简短、完全形式化规则列表描述,容易事先准备。抽象、形式化,是人类最困难脑力任务,但计算机最容易。早期打败人类最好象棋选手,最近识别对象、语音任务达到人类平均水平。日常生活需要世界巨量知识,主观、直观,很难形式化表达。计算机智能需要获取同样知识。关键挑战,非形式化知识传给计算机。
世界知识形式化语言硬编码(hard code)。逻辑揄规则自动理解形式化语言声明。人工智能知识库(knowledge base)。著名项目Cyc(Lenat and Guha,1989),一个推断引擎,一个CycL语言描述声明数据库。声明由人类监督者输入。设计足够复杂形式化规则精确描述世界(Linde,1992)。
AI系统需自己获取知识。原始数据提取模式,机器学习(machine learning)。解决现实世界知识问题,作为主观决策。逻辑回归(logistic regression)决定是否建议剖腹产(Mor-Yosef et al.,1990)。朴素贝叶斯(naive Bayes)区分垃圾电子邮件。简单机器学习算法性能依
分布式本质论:高吞吐、高可用、可扩展 (1)
发布者: superzhang | 发布时间:2017-12-22承载量是分布式系统存在的原因
当一个互联网业务获得大众欢迎的时候,最显著碰到的技术问题,就是服务器非常繁忙。当每天有1000万个用户访问你的网站时,无论你使用什么样的服务器硬件,都不可能只用一台机器就承载的了。因此,在互联网程序员解决服务器端问题的时候,必须要考虑如何使用多台服务器,为同一种互联网应用提供服务,这就是所谓“分布式系统”的来源。
然而,大量用户访问同一个互联网业务,所造成的问题并不简单。从表面上看,要能满足很多用户来自互联网的请求,最基本的需求就是所谓性能需求:用户反应网页打开很慢,或者网游中的动作很卡等等。而这些对于“服务速度”的要求,实际上包含的部分却是以下几个:高吞吐、高并发、低延迟和负载均衡。
高吞吐,意味着你的系统,可以同时承载大量的用户使用。这里关注的整个系统能同时服务的用户数。这个吞吐量肯定是不可能用单台服务器解决的,因此需要多台服务器协作,才能达到所需要的吞吐量。而在多台服务器的协作中,如何才能有效的利用这些服务器,不致于其中某一部分服务器成为瓶颈,从而影响整个系统的处理能力,这就是一个分布式系统,在架构上需要仔细权衡的问题。
高并发是高吞吐的一个延伸需求。当我们在承载海量用户的时候,我们当然希望每个服务器都能尽其所能的工作,而不要出现无谓的消耗和等待的情况。然而,软件系统并不是简
使用 Rust 构建分布式 Key-Value Store
发布者: superzhang | 发布时间:2017-12-22引子
构建一个分布式 Key-Value Store 并不是一件容易的事情,我们需要考虑很多的问题,首先就是我们的系统到底需要提供什么样的功能,譬如:
一致性:我们是否需要保证整个系统的线性一致性,还是能容忍短时间的数据不一致,只支持最终一致性。
稳定性:我们能否保证系统 7 x 24 小时稳定运行。系统的可用性是 4 个 9,还有 5 个 9?如果出现了机器损坏等灾难情况,系统能否做的自动恢复。
扩展性:当数据持续增多,能否通过添加机器就自动做到数据再次平衡,并且不影响外部服务。
分布式事务:是否需要提供分布式事务支持,事务隔离等级需要支持到什么程度。
上面的问题在系统设计之初,就需要考虑好,作为整个系统的设计目标。为了实现这些特性,我们就需要考虑到底采用哪一种实现方案,取舍各个方面的利弊等。
后面,我将以我们开发的分布式 Key-Value TiKV 作为实际例子,来说明下我们是如何取舍并实现的。
TiKVTiKV 是一个分布式 Key-Value store,它使用 Rust 开发,采用 Raft 一致性协议保证数据的强一致性,以及稳定性,同时通过 R
学习笔记TF067:TensorFlow Serving、Flod、计算加速,机器学习评测体系,公开数据集
发布者: superzhang | 发布时间:2017-12-22
TensorFlow Serving https://tensorflow.github.io/serving/ 。
生产环境灵活、高性能机器学习模型服务系统。适合基于实际数据大规模运行,产生多个模型训练过程。可用于开发环境、生产环境。
模型生命周期管理。模型先数据训练,逐步产生初步模型,优化模型。模型多重算法试验,生成模型管理。客户端(Client)向TensorFlow Severing请求模型,TensorFlow Severing返回适当模型给客户端。TensorFlow Serving、gRPC(谷歌公司开源高性能、跨语言RPC框架),提供跨语言RPC接口,不同编程语言都可以访问模型。
TensorFlow Serving代码 https://hithub.com/tensorflow/serving 。源代码Bazel编译安装 https://www.tensorflow.org/performance/quantization
从概念走向实操 区块链的“风”真要来了
发布者: superzhang | 发布时间:2017-12-22
按照区块链监管的要求,国内三大比特币交易平台,OKCoin币行、火币网、比特币中国均发布公告,正式关停所有虚拟货币兑换人民币的集合竞价交易。
区块链数字货币交易已经停止,但是,区块链技术仍在前行。OKCoin方面在宣布停止人民币和比特币交易的同一时间表示,下一步将转型为区块链技术应用和开发的公司。无独有偶,火币网创始人李林几乎在同一时间对外表示,“不念过去,不畏将来”,区块链的未来值得期待!
作为近两年时间迅速“火”起来的一项技术,区块链的发展可以说是颠覆式的,其安全、透明、不可篡改的优势使其在金融、医疗、共享经济等多领域都得到了应用。全球市场研究机构集邦咨询针对2018年科技产业发展发布的十大科技趋势新闻中提到,2017年区块链技术已从概念走向实操,企业、各国政府对区块链技术接受度提高。2018年区块链商转测试将筛选出可大规模应用的案例,并从实操阶段跃进至商用部署阶段。
概念遭资本追捧区块链是比特币的底层技术,其基本思想是:通过建立一组互联网上的公共账本,由网络中所有的用户共同在账本上记账与核账,来保证信息的真实性和不可篡改性。而之所以名字叫做“区块”链,顾名思义,是因为区块链存储数据的结构是由网络上一个个“存储区块”组成一根链条,每个区块中包含了一定时间内网络中全部的信息交流数据。
“去中心化的
