团队项目开源的话,需要走哪些流程呢?在开源技术使用方面有什么经验可以分享给读者么?您认为开源对于“改善业务开发效率,缩减资源成本”的效果有多大?可以用案例说明吗?360在免费杀毒软件方面的贡献很大,未来在开源方面有哪些导向?
2013年7月份的时候,奇虎360开源了线上数据库中间件 Atlas,那么紧随其后又有哪些项目开源了呢?通过360基础架构团队负责人&360技术委员会委员王超的帮助下,我们整理出了360开源项目的前几个。
1. QConf
QConf 是一个分布式配置管理工具。 用来替代传统的配置文件,使得配置信息和程序代码分离,同时配置变化能够实时同步到客户端,而且保证用户高效读取配置,这使的工程师从琐碎的配置修改、代码提交、配置上线流程中解放出来,极大地简化了配置管理工作。
特点
-
一处修改,所有机器实时同步更新。
-
高效读取配置。
-
安装部署方便,使用简单。
-
服务器宕机、网络中断、集群迁移等异常情况对用户透明。
-
支持C/C++、shell、PHP、Python 等语言。
2. phptrace
phptrace 是一个追踪(trace)PHP 执行流程的工具,你如果用过 strace 的话,则可能很容易想到phptrace 到底实现了什么样的功能。其实,phptrace 是类 strace 的一个实现,不同的是,strace用来追踪系统调用,而 phptrace 用来追踪 PHP 函数调用。无论是开发测试还是线上追查问题,代码执行流程往往会提供许多有用的信息,大大提高了开发人员的工作效率;对于系统函数,我们可以用strace 来观察其调用信息,然而 PHP 却长久以来缺少这么一个行之有效的工具,因此我们开发了phptrace。
phptrace 目前包括两部分功能:打印当前 PHP 调用栈,实时追踪PHP调用。
3. ssdb
ssdb 是一个 C/C++ 语言开发的高性能 NoSQL 数据库,支持 zset(sorted set),map(hash),kv,list 等数据结构,支持 PHP/Java/Python/C/C++ 等客户端。用来替代或者与 Redis 配合存储十亿级别列表的数据。ssdb 在奇虎360 被大量使用,非常稳定。而且,ssdb 支持在线备份功能,可以通过网络备份数据,不再担心数据丢失。ssdb 还支持主从同步复制,可用于负载均衡。同时也被国内外业界的众多互联网企业所使用。
更重要的是,ssdb 支持 Redis 中的 zset 数据类型,以及 hashmap 类型,所以不是一个简单的 KV 存储服务器,实际应用中,KV 存储的局限性非常大。
4. thinkjs
thinkjs 是一款高效、简单易用的 Node.js MVC 框架。该框架借鉴了很多 ThinkPHP 的特性,同时结合 Node.js 的特性,使用了 ES6 Promise,让异步编程更加简单、方便。
特性
-
自动启动服务
-
支持 Http 访问、命令行调用、WebSocket、Restful
-
CBD 架构,MVC 模式
-
基于 Promise,异步编程更加简单
-
封装了 DB,Cache,Session 等常用功能
5. Atlas
Atlas 是由奇虎360 Web 平台部基础架构团队开发维护的一个基于 MySQL 协议的数据中间层项目。它在 MySQL 官方推出的 MySQL-Proxy 0.8.2 版本的基础上,修改了大量 bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多 MySQL 业务已经接入了 Atlas 平台,每天承载的读写请求数达几十亿条。
特点:
-
读写分离
-
从库负载均衡
-
IP 过滤
-
SQL 语句黑白名单
-
自动分表
6. Mario
Mario是一个让编写从同步到异步的类库,它的线程安全较大,易于使用。Mario 的最基本的想法就是为了减少人员的安排,降低成本和时间投入。但是有了这个类库,操作人员就可以抽出精力做别的事情了。所以 Mario 类库能够很轻易的解决你的问题,你只需要你自己的消息功能。
两个引擎类型:
-
memory,这种类型就是将数据缓冲存储器留在内存里。
-
file,这种类型就是能够在本地日志路径里创建做出一个 write2file。
7. elog
简介:elog 是一个用 Erlang 编程语言写出来的日志库,使用起来很简单很快速。
特点:
-
具有六个不同的日志级别(跟踪、调试信息、警告、错误、致命的)
-
支持可配置的日志等级
8. ngx_http_subrange_module
ngx_http_subrange_module 模块是一个过滤器,它修改网站响应内容中的字符串,比如你想把响应内容中的‘ttlsa’全部替换成‘运维生存时间’,这个模块已经内置在 Nginx 中,但是默认未安装,需要安装需要加上配置参数:–with-http_sub_module
这个 Nginx 替换响应内容的模块安装使用尤为简单,应用的地方相对较少,在 Nginx 中也是一个可选模块。假如站点出现什么敏感字,想修改很耗时间,不妨试试这个模块。或者想临时在站点中加上一个通用 JavaScript 或者 CSS 之类的文件,也可以使用这个模块。
9. kmemcache
kmemcache 是一个对象缓存服务器,属于分布式 Linux 内核内存对象缓存服务器,实现基于 memcached v1.4.15,基本兼容 memcached 的所有操作。经初步测试,内存数据操作比 memcached 快1倍,网络并发量比 memcached 的也大许多,目前处于 alpha 版本。
特点:
-
优点:由于在内核的 socket 层实现,所有处理网络事件性能比 epoll 机制快,另外无需内存由用户空间到内核空间的拷贝。
-
缺点:不建议在 32bits 下使用。