开源公司黄页之360开源软件推荐

中国最大的开源技术社区

www.oschina.net

 

 

 

在上一期《开源公司黄页之腾讯开源软件推荐》中,小编为大家挑选了腾讯公司的一些开源项目。今天,我们来介绍360公司的开源项目,想了解更多,请点击阅读原文

 

 

Atlas——MySQL中间层 

Atlas是由 Qihoo 360,  Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。

主要功能:

  • 读写分离
  • 从库负载均衡
  • IP过滤
  • SQL语句黑白名单
  • 自动分表

 

>>>>源码地址:https://github.com/Qihoo360/Atlas

Droid Plugin——360 黑科技 

DroidPlugin 是360手机助手在 Android 系统上实现了一种新的插件机制:它可以在无需安装、修改的情况下运行APK文件,此机制对改进大型APP的架构,实现多团队协作开发具有一定的好处。

>>>>源码地址:https://github.com/Qihoo360/DroidPlugin

nginx-openresty-windows

nginx openresty 迁移到 windows 下的版本。

主要特性:

  • 高性能
  • 超过 20,000 连接并发 (特定cpu多核的机器上,server新版本的 190,000并发)
  • 多进程
  • 各种 Nginx bug 修复

 

>>>>源码地址:https://github.com/LomoX-Offical/nginx-openresty-windows

HustStore——360高性能分布式存储服务 

huststore 是一个高性能的分布式存储服务,不但提供了 10w QPS 级别的 kv 存储的功能,还提供了 hash、set 等一系列数据结构的支持,并且支持 二进制 的 kv 存储,可以完全取代 Redis 的功能。此外,huststore 还结合特有的 HA 模块实现了分布式消息队列的功能,包括消息的流式推送,以及消息的 发布-订阅 等功能,可以完全取代 RabbitMQ 的功能。

特性

huststore 分为 hustdb 以及 HA 模块两大部分。hustdb (存储引擎)的底层设计采用了自主开发的 fastdb,通过一套独特的 md5 db 将QPS 提升至 10w 级别的水准(含网络层的开销)。HA 以 nginx 模块的方式开发。nginx 是工业级的 http server 标准,得益于此,huststore 具备以下特性:

  • 高吞吐量
    hustdb 的网络层采用了开源的 libevhtp 来实现,结合自主研发的高性能 fastdb 存储引擎,性能测试 QPS 在10w 以上。
  • 高并发
    参考 nginx 的并发能力。
  • 高可用性
  • 通用性的接口
    huststore 使用 http 作为通用协议,因此客户端的实现不限制于语言。
  • 支持二进制的 key-value

 

>>>>源码地址:https://github.com/Qihoo360/huststore

ThinkJS——基于Promise的Node.js MVC框架 

ThinkJS 是一个快速、简单的基于MVC和面向对象的轻量级Node.js开发框架,遵循MIT协议发布。秉承简洁易用的设计原则,在保持出色的性能和至简的代码同时,注重开发体验和易用性,为WEB应用开发提供强有力的支持。

thinkjs里面很多特性来源于ThinkPHP,同时根据Node.js的特点,使用了Promise,WebSocket等特性,让代码更简洁、优雅。

 

>>>>源码地址:https://github.com/Qihoo360/thinkjs

NovaJS——Web 组件框架 

Nova.js是一个小巧的Web Component框架,旨在帮助开发者方便快速地开发组件。

作者起初希望在一个移动端项目中使用Polymer进行开发,但发现Polymer的代码对于移动端小型项目过于庞大、且只支持到Android4.4。因此借鉴了Polymer的部分组件开发的思想,实现了Nova.js。

Nova.js使用gzip压缩后的总大小为12K。

浏览器支持度

  • 移动端主流浏览器(Android2.3+, iOS4.0+)
  • PC端主流浏览器(Chrome, Safari, Firefox, IE8+)

功能列表

  • 自定义元素
  • Scoped CSS
  • 模板双向绑定
  • 监听属性
  • 事件模型
  • 方法切片
  • Behaviors复用机制

>>>>源码地址:https://github.com/melonHuang/nova

Qihoo 360.Pika——类Redis存储系统

Pika是360开源的类Redis存储系统。

Pika 是 360 DBA 和基础架构组联合开发的类 Redis 存储系统,完全支持 Redis 协议,用户不需要修改任何代码,就可以将服务迁移至 Pika。有维护 Redis 经验的 DBA 维护 Pika 不需要学习成本。

Pika 主要解决的是用户使用 Redis 的内存大小超过 50G、80G 等等这样的情况,会遇到启动恢复时间长,一主多从代价大,硬件成本贵,缓冲区容易写满等问题。Pika 就是针对这些场景的一个解决方案。

特点

  • 容量大,支持百G数据量的存储
  • 兼容redis,不用修改代码即可平滑从redis迁移到pika
  • 支持主从(slaveof)
  • 完善的运维命令

>>>>源码地址:https://github.com/Qihoo360/pika

phptrace——PHP执行流程跟踪工具 

phptrace 是一个追踪(trace)PHP执行流程的工具,你如果用过strace的话,则可能很容易想到phptrace到底实现了什么样的功能。 其实,phptrace是类strace的一个实现,不同的是,strace用来追踪系统调用,而phptrace用来追踪PHP函数调用。无论是开发测试 还是线上追查问题,代码执行流程往往会提供许多有用的信息,大大提高了开发人员的工作效率;对于系统函数,我们可以用strace 来观察其调用信息,然而PHP却长久以来缺少这么一个行之有效的工具,因此我们开发了phptrace。

>>>>源码地址:https://github.com/Qihoo360/phptrace

QConf——分布式配置管理工具 

QConf 是奇虎 360 内部分布式配置管理工具。用来替代传统的配置文件,使得配置信息和程序代码分离,同时配置变化能够实时同步到客户端,而且保证用户高效读取配置,这使的工程师从琐碎的配置修改、代码提交、配置上线流程中解放出来,极大地简化了配置管理工作。

特点

  • 一处修改,所有机器实时同步更新
  • 高效读取配置
  • 安装部署方便,使用简单
  • 服务器宕机、网络中断、集群迁移等异常情况对用户透明
  • 支持c/c++、shell、php、python、lua 等语言

>>>>源码地址:https://github.com/Qihoo360/QConf

kmemcache——对象缓存服务器 

分布式linux内核内存对象缓存服务器,实现基于memcached v1.4.15,基本兼容memcached的所有操作。经初步测试,内存数据操作比memcached快1倍,网络并发量比memcached的也大许多,目前处于alpha版本。

优点:由于在内核的socket层实现,所有处理网络事件性能比epoll机制快,另外无需内存由用户空间到内核空间的拷贝。

缺点:不建议在32bits下使用。

>>>>源码地址:https://github.com/Qihoo360/kmemcache

elog——Erlang 日志库 

 

elog 是一个用 Erlang 编程语言写出来的日志库,使用起来很简单很快速。

特点:

  • 具有六个不同的日志级别(跟踪、调试信息、警告、错误、致命的)
  • 支持可配置的日志等级

 

>>>>源码地址:https://github.com/Qihoo360/elog

Mario——同步到异步的类库 

 

Mario是一个让编写从同步到异步的类库,它的线程安全较大,易于使用。Mario 的最基本的想法就是为了减少人员的安排,降低成本和时间投入。但是有了这个类库,操作人员就可以抽出精力做别的事情了。所以 Mario 类库能够很轻易的解决你的问题,你只需要你自己的消息功能。

引擎类型:

  • memory,这种类型就是将数据缓冲存储器留在内存里。
  • file,这种类型就是能够在本地日志路径里创建做出一个 write2file。

 

>>>>源码地址:https://github.com/Qihoo360/Mario

ngx_http_subrange_module

当Nginx作为文件下载服务的反向代理,用户请求一个非常大的文件的时候,它会一直占满反向代理服务器与后端主机之间的带宽。因为nginx一次获取整个文件,缓冲获取到的文件,导致客户端不能马上读取到。带宽使用和iowait会很高。

ngx_http_subrange_module就是为了解决这个问题,它能分割HTTP requests。将大数据量的HTTP请求切分为多个子请求,当下载一个1 G的文件,subrange将从后端主机中下载文件块,比如先获取5 M,然后再获取5 M,直到客户端下载完整个文件。

Configure nginx with

--add-module=/path/to/ngx_http_subrange_module

>>>>源码地址:https://github.com/Qihoo360/ngx_http_subrange_module

  1. da shang
    donate-alipay
               donate-weixin weixinpay

发表评论↓↓