太原PHP培训
达内太原php培训中心

0351-5608878

热门课程

太原达内php培训班:Twitter 的那些开源软件(一)

  • 时间:2016-07-06
  • 发布:太原PHP培训
  • 来源:伯乐在线

从Twitter的GitHub账户中可以看到,Twitter已经开源的开源项目有近200个,领域涉及分布式架构、大数据、异步网络传输(客户端、服务端)、Web、工具等。Twitter可以称为构建于开源项目之上,该公司开源负责人Chris Aniszczyk表示,如果没有开源软件,Twitter将不会存在,用户在移动端和PC端发送和接收的每一条推文都会需要开源软件。

Typeahead.js——自动文字补齐jQuery插件

这款jQuery插件来自于Twitter的一个新的项目,支持远程和本地的数据集。比较有特色的地方在于你可以将数据集使用本地存储(local storage)来保存在本地,有效的提高用户体验。同时也拥有很多远程数据集的处理选项,例如(请求频率,最大的并发请求数,等等)。

主要特性:

支持数据本地保存,客户端加载,优化加载速度

支持多语言,并且支持阿拉伯文

支持Hogan.js模板引擎整合

支持多数据集拼装

支持本地和远程的数据集

源码地址:https://github.com/twitter/typeahead.js

Twemoji——Twitter 的 Emoji 表情

TTwemoji 是 Twitter 开源的其完整的 Emoji 表情图片。开发者可以去GitHub下载完整的表情库,并把这些表情加入到自己的应用或网页中。

太原达内php培训班

源码地址:https://github.com/twitter/twemoji

Hogan.js——JS模板引擎

Hogan.js是Twitter团队所制作的一个针对mustache模板的语法解析器。Hogan.js不依赖其他任何库或框架,同时保证了高效率的模板解析,而其体积却仅有2.5K。用它作为你的一部分资产打包编译模板提前或将它包括在你的浏览器来处理动态模板。

源码地址:http://twitter.github.com/hogan.js

Effective Scala——Scala语言

Scala是Twitter的主要应用编程语言之一,大部分基础架构是使用Scala编写,有几个大型库包在支持应用,Scala是一种大型高效语言,在实践中要谨慎使用。它的陷阱在哪里,哪个特性我们很喜欢,另外哪些应该注意回避?当在实现“纯函数风格”时,又要注意些什么呢?Scala主要是创建大量形成分布式系统的服务。

Scala提供了需要工具用于简化表达,少打字代表少阅读,少阅读代表能快速阅读,简洁能够增加清晰度(大道至简)。但是简洁也是一种双刃剑,会导致其反面效果,导致阅读者的正确理解度不够。

源码地址:https://github.com/twitter/effectivescala

Finagle——RPC框架

Finagle 是一个容错的、与协议无关的用于JVM 的RPC系统。Finagle 使用 sbt 进行构建。Finagle 来自 Twitter !它使得在 Java、Scala 或任何基于 JVM 的语言重构建鲁棒的客户端和服务器非常容易。Finagle 支持广泛的基于请求/答复的 RPC 协议和很多类型的流协议

使用 Finagle 可以快速实现异步的远程方法调用 RPC 客户端和服务器端,本身足够灵活支持多种 RPC 变种,包括请求响应式、流和管道模式,如 HTTP 管道和 Redis 管道,也可轻松的有状态的 RPC 一起运行,例如那些需要认证的 RPC 服务。

太原达内php培训班
太原达内编程培训机构

源码地址:https://github.com/twitter/finagle

FlockDB——分布式图形数据库

FlockDB将图存储为一个边的集合,每条边用两个代表顶点的64位整数表示。对于一个社会化网络图,这些顶点ID即用户ID,但是对于“收藏”推文这 样的边,其目标顶点(destination id)则是一条推文的ID。每一条边都被一个64位的位置信息标识,用于排序。(Twitter在“关注”类的边上用了时间戳标识,所以你的关注者列表时 按时间排序的,最新的在最前面。)

源码地址:https://github.com/twitter/flockdb

Snowflake——分布式自增ID算法

Twitter在把存储系统从MySQL迁移到Cassandra的过程中,由于Cassandra没有顺序ID生成机制,于是自己开发了一套全局唯一ID生成服务:Snowflake。优点是:高性能,低延迟;独立的应用;按时间有序。缺点是:需要独立的开发和部署。

41位的时间序列(精确到毫秒,41位的长度可以使用69年);

10位的机器标识(10位的长度最多支持部署1024个节点);

12位的计数顺序号(12位的计数顺序号支持每个节点每毫秒产生4096个ID序号)最高位是符号位,始终为0。

高效很方便的GUID产生算法,一个int64_t字段就可以胜任,不像现在主流128bit的GUID算法,即使无法保证严格的ID序列性,但是对于特定的业务,比如用做游戏服务器端的GUID产生会很方便。另外,在多线程的环境下,序列号使用Atomic可以在代码实现上有效减少锁的密度。

源码地址:https://github.com/twitter/snowflake

Diffy——自动化测试工具

Diffy是一个开源的自动化测试工具,它能够自动检测基于Apache Thrift或者基于HTTP的服务。使用Diffy,只需要进行简单的配置,之后不需要再编写测试代码。

Diffy主要基于稳定版本和它的副本的输出,对候选版本的输出进行比较,以检查候选版本是否正确。因此,Diffy首先假设候选版本应该和稳定版本有“相似”的输出。即不论候选版本和稳定版本系统模块是否相同,他们的最终输出应该是“相似”的。这里一直使用“相似”,而不是使用相同,是因为相同请求可能会有一些Diffy不需要关心的干扰,比如:

响应中包含服务器生成的时间戳;

代码中使用了随机数;

系统服务间有条件竞争。

源码地址:https://github.com/twitter/diffy

Scalding——Scala库

Scalding 是一个 Scala 库简化了 Hadoop MapReduce 作业开发。基于 Cascading 构建。Scalding 跟 Pig 类似,但提供更紧密的 Scala 集成。

Hadoop 是一个统计词(counting words)的分布式系统。

源码地址:https://github.com/twitter/scalding

Gizzard——通用数据切分中间件

Gizzard是Twitter在2011年4月份新推出的一个通用数据切分中间件,在Twitter的架构中占重要的作用。Twitter还公布了Gizzard的完整代码。有了Gizzard,初创公司和小公司就可以更好更快地处理大量数据,从而利用更少的资源满足用户需求。Gizzard的主要功能如下:

支持不同的底层数据存储,Redis/Memcache/Mysql等都支持,原则上只要写操作幂等(也就是写操作与顺序无关)则都可以支持;

通用数据拆分支持,支持一致性hash、主键mod、自定义拆分函数等多种方式;

通过replication tree实现不同节点数据的备份机制;

容错机制,在一台机器出问题后,会自动保存更新延迟队列,在恢复后重新执行,从而保证一致性;

快速迁移。

太原编程培训班

源码地址:https://github.com/twitter/gizzard

Summingbird——流处理框架

Summingbird是MapReduce流处理框架,一个大规模数据处理系统,支持开发者以批处理模式(基于Hadoop/MapReduce)或流处理模式(基于Storm)或混合模式(即组合前两种模式)以统一的方式执行代码。它基于Apache 2许可发布,用于解决工程师使用现有方法遇到的实际问题:

两个不同系统中的两组聚合逻辑必须保持同步;

在每个系统和客户端之间,键和值必须一致地进行序列化;

客户端要负责从两个数据存储读取数据、执行最后的聚合并提供合并结果。

源码地址:https://github.com/twitter/summingbird

Algebird——Scala的抽象代数工具

Algebird是用于Scala的抽象代数。这些代码主要是用于建立聚合系统(通过Scalding或Storm)。Algebird跟Summingbird这个组件相关:利用一些概率算法HyperLogLog来提高计算速度。

源码地址:https://github.com/twitter/algebird

Iago——网站负载测试工具

Iago是一个网站负载测试工具,Iago针对一个给定的网站进行访问录制并合成流量数据。它不同于其他的负载生成工具,它试图保持恒定的请求率。例如,如果你想按每分钟100K来请求你的服务,Iago会试图保持这个速度进行测试。

源码地址:https://github.com/twitter/iagox

Heron——数据实时分析平台

上一篇:太原php培训班:测试MM希望你了解关于测试的5件事
下一篇:太原php培训班:Twitter 的那些开源软件(二)

太原php培训:软件项目免坑指南(一)

太原php培训:一个女程序员的职场自述

太原php培训:ML 工程师需了解的 10 大算法(二)

太原php培训:ML 工程师需了解的 10 大算法(一)

选择城市和中心
贵州省

广西省

海南省

台湾