港股上市!小米开源项目盘点

作者|小智

写在前面

7 月 9 日,小米在香港挂牌上市,股票代码 1810.hk。据了解,小米将香港 IPO 报价 16.60 港元,较发行价低 2.35%,首日就破发,净筹资 239.75 亿港元,总市值 3714 亿港元;共收到约 10.35 亿股认购申请,相当于超额认购约 9.5 倍。知情人士称,李嘉诚、马云、马化腾 3 人就认购小米份额超过 2.3 亿美元。小米早期投资人,回报达到 866 倍。

除了手机等核心业务之外,小米有哪些开源技术同样值得关注呢?InfoQ 特意搜集制作了这份小米开源项目列表,以飨读者。

MACE:移动端深度学习框架

MACE 是专门为移动设备优化的深度学习模型预测框架,从设计之初,便针对移动设备的特点进行了专门的优化:速度、功耗、系统响应、初始化延迟、内存占用、模型保护等均有提升。

MACE 支持 TensorFlow 和 Caffe 模型,提供转换工具,可以将训练好的模型转换成专有的模型数据文件,同时还可以选择将模型转换成 C++ 代码,支持生成动态库或者静态库,提高模型保密性。目前 MACE 已经在小米手机上的多个应用场景得到了应用,其中包括相机的人像模式,场景识别,图像超分辨率,离线翻译 (即将实现) 等。

地址:https://github.com/XiaoMi/mace

Pegasus:分布式 KV 存储系统

Pegasus 是小米云存储团队开发的一个分布式 Key-Value 存储系统,最初的动机是弥补 HBase 在可用性和性能上的不足。Pegasus 系统的 Server 端完全采用 C++ 语言开发,使用 PacificA 协议支持强一致性,使用 RocksDB 作为单机存储引擎。

Pegasus 具有高可用、高性能、强一致、高扩展、易使用的特性,经过两年多的开发,目前已支持了十几个业务。更多细节可阅读:小米开源分布式 KV 存储系统 Pegasus。

地址:https://github.com/XiaoMi/pegasus

Open-falcon:企业级监控系统解决方案

Open Falcon 是小米运维部开源的一款互联网企业级监控系统解决方案。Open Falcon 是完全用 GO 语言编写的,主要特性如下:

  • 数据采集免配置
  • 容量水平扩展
  • 告警策略自发现
  • 告警设置人性化
  • 历史数据高效查询
  • Dashboard 人性化
  • 架构设计高可用

官网:http://open-falcon.org/

GitHub 地址:https://github.com/open-falcon

rDSN:分布式服务框架

rDSN 是一个快速构建鲁棒分布式系统的框架。它有一个可插拔组件的微内核,包括应用程序、分布式框架、devops 工具和本地运行时 / 资源提供程序,支持它们的独立开发和无缝集成。这个项目最初是为微软必应开发的,现在已经在微软内部和外部的生产中被采用。

GitHub 地址:https://github.com/XiaoMi/rdsn

Shepher:Zookeeper 管理工具

Shepher 是一款 ZooKeeper 的管理工具,小米用它作为配置管理中心。

Shepher 具有以下特性:

  • ZooKeeper 节点的可视化操作
  • ZooKeeper 节点的快照管理
  • ZooKeeper 节点修改的 Diff 和 Review 功能
  • ZooKeeper 节点操作邮件通知
  • 集成 CAS 和 LDAP 登录
  • 权限管理

GitHub 地址:https://github.com/XiaoMi/shepher

LInden:基于 Lucene 的实时搜索系统

Linden 是一个基于 Lucene 创建的实时搜索系统。它提供一个类似 SQL 查询语言接口,名为 BQL。BQL 简单而直接。Linden 提供一个非常简单的方式来调整搜索结果排名。你可以在你的查询中传递一段 java 评分代码甚至一个评分插件类名。Linden 也支持通过 linden 灵活查询从低指数水平自定义评分逻辑,你可以获得每一个查询词匹配的信息,所以你可以制作一个非常直观的评分逻辑。这对初学者来说是非常方便的。

GitHub 地址:https://github.com/XiaoMi/linden

Rose:Web 开发框架

Rose 是一个 Java 的 Web 开发框架。Rose 提供各种特性和约束惯例,从而使开发者能够轻松地开发 web 程序。Rose 整合技术,强调最佳实践,甚至包括名称规范。Rose 规范了对 Spring 的使用,同时允许开发者放置 applicationContext-xxx.xml 文件来扩展 Rose。

GitHub 地址:https://github.com/XiaoMi/rose

Chronos: 时间戳服务器

小米公司开发的实现高可用、高性能、提供全局唯一而且严格单调递增 timestamp 的服务。Chronos 采用主备架构,主服务器挂了以后备服务器迅速感知并接替服务,从而实现系统的高可用。服务端使用 Thrift 框 架,经测试每秒可处理约 60 万次 RPC 请求,客户端单线程每秒可请求 6 万次 (本地服务器),保证高性能与低延时。全局只有唯一的 ChronosServer 提供服务,分配的 timestamp 保证严格单调递增,并且将已分配的值持久化到 ZooKeeper 上,即使发生 failover 也能保证服务的正确性。

GitHub 地址:https://github.com/XiaoMi/chronos

Themis:HBase 跨行 / 跨表的事务处理

Themis 是小米公司开发的,为 HBase 提供了跨行 / 跨表的事务处理,基于 Google 的 percolator。

Themis 通过基于 HBase 的单行事务的两阶段提交和冲突解决来保证交叉行事务的 ACID 特性。Themis 依赖于 Chronos 来提供严格递增的全局时间戳,它定义事务的全局顺序,并使 Themis 能够在给定的时间戳之前读取数据库快照。Themis 采用 HBase 协处理器框架,无需改变 HBase 源代码即可应用。我们对它们的正确性进行了几个月的验证,并对算法进行了优化,以获得更好的性能。

GitHub 地址:https://github.com/XiaoMi/themis

Android_tv_metro:安卓版 TV Metro 框架和服务器 API

Android_tv_metro 是一款安卓版 TV Metro 框架和服务器 API,开发语言为 Java。

API 和数据结构

  • 专辑和显示项目:Metro 风格是由两个元素构成
  • 专辑可以包含多张专辑和显示项目
  • 显示项目可以被定义为视频,游戏,应用程序,音乐等
  • 您可以从显示项目中删除你自己的游戏 / 应用 / 视频详细条目

GitHub 地址:https://github.com/XiaoMi/android_tv_metro

Minos:分布式的发布和监控系统

Minos 是小米公司开发的一个分布式的发布和监控系统。最初是小米开发的用来在 Hadoop 和 ZooKeeper 集群上发布和管理的工具。Minos 可轻松扩展来支持其他的系统,目前已经支持包括 HDFS、YARN 和 Impala 。

GitHub 地址:https://github.com/XiaoMi/minos

写在最后

恭喜小米成功上市,希望小米能保持初心,在技术上也能做出更多感动人心的好开源项目来!

END

原文发布于微信公众号 - 纯洁的微笑(keeppuresmile)

原文发表时间:2018-07-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员互动联盟

【前沿技术】啥叫实时虚拟化?

实时虚拟化听起来有点矛盾,但是它确实是有用的(在某些条件下),并且为 Linux 内核的灵活性又提供了一个强有力的证明。KVM2015 论坛的前两个演讲就详细的...

46040
来自专栏编程一生

架构师之路--谈业务的合理架构

10820
来自专栏玉树芝兰

安装 Python 软件包遇错误,怎么办?

本文通过一个命令行转换 pdf 为词云的例子,给你讲讲 Python 软件包安装遇挫折时,怎么处理才更高效?

17520
来自专栏大数据和云计算技术

大数据仓库-kudu

数据仓库里面存储引擎是非常重要的,存储引擎的好坏,基本决定了整个数仓的基础。 kudu目标 cloudera公司最近发布了一个kudu存储引擎。按照cloud...

60370
来自专栏数据之美

浅谈用户行为分析之用户身份识别:cookie 知多少?

对于数据统计分析或者数据挖掘而言,用户是个非常重要的维度,也是统计分析能落地的基础。一般而言,咱们追踪或者识别一个用户的首选方案是 userID,大多数公司的产...

1.5K60
来自专栏Golang语言社区

求取一份极致的简单:全链路跟踪中间件探索之路

公司内部的业务系统有近千个,基本上很少有比较孤立的;尤其外部系统,即便用户在页面上一个很普通的操作,后台也需要少则几个多则几十个服务协同完成。以前我们定位调用链...

16810
来自专栏程序员互动联盟

【编程基础】聊聊C语言-存储世界的奥秘

上一篇讲到了C语言的数据类型,从这篇我们开始讲讲与数据类型有这着千丝万缕联系的变量。 所有语言的变量都是存储在计算机存储系统中,C语言的变量当然也不例外。所以...

39470
来自专栏Java架构沉思录

一次毕生难忘的 Java 内存泄漏排查经历

人人都会犯错,但一些错误是如此的荒谬,我想不通怎么会有人犯这种错误。更没想到的是,这种事竟发生在了我们身上。当然,这种东西只有事后才能发现真相。接下来,我将讲述...

14210
来自专栏社区的朋友们

Amazon Aurora 深度探索(一)

本文对 Aurora 系统的实现从整体架构、存储、事务处理三个方面进行深入探讨,基于其论文和相关资料讨论具体实现细节,又跳出其外、从数据库内核技术实现的角度对 ...

2.4K20
来自专栏芋道源码1024

Dubbo源码解析 —— Zookeeper 订阅

前言 上周写完了服务暴露总结之后发现遗漏了一个很重要的点,在dubbo源码解析-zookeeper连接中我们对面试高频题 dubbo中zookeeper做注册...

33270

扫码关注云+社区

领取腾讯云代金券