奇虎360
1.MySQL中间层 Atlas
Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。
主要功能:
* 读写分离
* 从库负载均衡
* IP过滤
* SQL语句黑白名单
* 自动分表2.360黑科技=》DroidPlugin
DroidPlugin 是360手机助手在 Android 系统上实现了一种新的插件机制:它可以在无需安装、修改的情况下运行APK文件,此机制对改进大型App的架构,实现多团队协作开发具有一定的好处。
特点: 支持Androd 2.3以上系统 插件APK完全不需做任何修改,可以独立安装运行、也可以做插件运行。要以插件模式运行某个APK,你无需重新编译、无需知道其源码。 插件的四大组件完全不需要在Host程序中注册,支持Service、Activity、BroadcastReceiver、ContentProvider四大组件 插件之间、Host程序与插件之间会互相认为对方已经"安装"在系统上了。 API低侵入性:极少的API。HOST程序只是需要一行代码即可集成Droid Plugin 超强隔离:插件之间、插件与Host之间完全的代码级别的隔离:不能互相调用对方的代码。通讯只能使用Android系统级别的通讯方法。 支持所有系统API 资源完全隔离:插件之间、与Host之间实现了资源完全隔离,不会出现资源窜用的情况。 实现了进程管理,插件的空间进程会被及时回收,占用内存空间。 插件的静态广播会被当作动态处理,如果插件没有运行(即使没有插件进程运行),其静态广播也永远不会被触发。
3.高性能分布式存储服务 HustStore
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 整体架构支持 Replication (master-master),支持 load balance 。
HA 的可用性由nginx 的 master-worker 架构所保证。当某一个 worker 意外挂掉时, master 会自动再启动一个 worker 进程,而且多个 worker 之间是相互独立的,从而保证了 HA 的高可用性。
huststore 的高可用性由其整体架构特点保证。由于 hustdb 存储节点采用了 master-master 的结构,当某一个存储节点挂掉时,HA 会自动将请求打到另外一台 master,同时 HA 会自动进行负载均衡,将数据分布存储在多个位置 hustdb节点上,因此存储引擎不存在单点限制。
同时 HA 集群本身也是分布式的设计,而且每个 HA 节点都是独立的,当某一台 HA 挂掉时, LVS 会自动将请求打到其他可用的地方 HA 节点,从而解决了问题 HA 的单点限制。通用性的接口
huststore 使用 http 作为通用协议,因此客户端的实现不限制于语言。支持二进制的 key-value
4.分布式配置管理工具 QConf
QConf 是奇虎 360 内部分布式配置管理工具。用来替代传统的配置文件,使得配置信息和程序代码分离,同时配置变化能够实时同步到客户端,而且保证用户高效读取配置,这使的工程师从琐碎的配置修改、代码提交、配置上线流程中解放出来,极大地简化了配置管理工作。
特点 一处修改,所有机器实时同步更新 高效读取配置 安装部署方便,使用简单 服务器宕机、网络中断、集群迁移等异常情况对用户透明 支持c/c++、shell、php、Python、lua 等语言。
5.开源类Redis存储系统 Pika
Pika 是 360 DBA 和基础架构组联合开发的类 Redis 存储系统,完全支持 Redis 协议,用户不需要修改任何代码,就可以将服务迁移至 Pika。有维护 Redis 经验的 DBA 维护 Pika 不需要学习成本。
Pika 主要解决的是用户使用 Redis 的内存大小超过 50G、80G 等等这样的情况,会遇到启动恢复时间长,一主多从代价大,硬件成本贵,缓冲区容易写满等问题。Pika 就是针对这些场景的一个解决方案。
特点
容量大,支持百G数据量的存储
兼容redis,不用修改代码即可平滑从redis迁移到pika
支持主从(slaveof)
完善的运维命令
6.对象缓存服务器 kmemcache
分布式linux内核内存对象缓存服务器,实现基于memcached v1.4.15,基本兼容memcached的所有操作。经初步测试,内存数据操作比memcached快1倍,网络并发量比memcached的也大许多,目前处于alpha版本。
优点:由于在内核的socket层实现,所有处理网络事件性能比epoll机制快,另外无需内存由用户空间到内核空间的拷贝。
缺点:不建议在32bits下使用。
7.ngx_http_subrange_module
当Nginx作为文件下载服务的反向代理,用户请求一个非常大的文件的时候,它会一直占满反向代理服务器与后端主机之间的带宽。因为nginx一次获取整个文件,缓冲获取到的文件,导致客户端不能马上读取到。带宽使用和iowait会很高。
ngx_http_subrange_module就是为了解决这个问题,它能分割HTTP requests。将大数据量的HTTP请求切分为多个子请求,当下载一个1 G的文件,subrange将从后端主机中下载文件块,比如先获取5 M,然后再获取5 M,直到客户端下载完整个文件。
8.同步到异步的类库 Mario
Mario是一个让编写从同步到异步的类库,它的线程安全较大,易于使用。Mario 的最基本的想法就是为了减少人员的安排,降低成本和时间投入。但是有了这个类库,操作人员就可以抽出精力做别的事情了。所以 Mario 类库能够很轻易的解决你的问题,你只需要你自己的消息功能。
引擎类型:
memory,这种类型就是将数据缓冲存储器留在内存里。
file,这种类型就是能够在本地日志路径里创建做出一个 write2file。
更多linux内核视频教程文本资料免费获取后台私信【内核】。
----------------------------------------------------------------------------------------------------------------
百度 Baidu
1.UEditor 编辑器
UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点。
主要特点:
轻量级:代码精简,加载迅速。
定制化:
全新的分层理念,满足多元化的需求。
采用三层架构:
1. 核心层: 为命令层提供底层API,如range/selection/domUtils类。
2. 命令插件层: 基于核心层开发command命令,命令之间相互独立。
3. 界面层: 为命令层提供用户使用界面。
满足不同层次用户的需求。2.ECharts 图表库
ECharts开源来自百度商业前端数据可视化团队,基于html5 Canvas,是一个纯JAVAscript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。创新的拖拽重计算、数据视图、值域漫游等特性大大增强了用户体验,赋予了用户对数据进行挖掘、整合的能力。提供商业产品常用图表,底层基于ZRender(一个全新的轻量级canvas类库),创建了坐标系,图例,提示,工具箱等基础组件,并在此上构建出折线图(区域图)、柱状图(条状图)、散点图(气泡图)、饼图(环形图)、K线图、地图、力导向布局图以及和弦图,同时支持任意维度的堆积和多图表混合展现。
ECharts-X是 ECharts 团队推出的全新 3D 可视化库,它是基于 ECharts 的扩展,底层深度整合了 WebGL 库QTEK和 Canvas2D 库ZRender。
3.WebUploader 上传控件
WebUploader 是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件。在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览器,延用原来的FLASH运行时,兼容IE6+,Andorid 4+,IOS 6+。两套运行时,同样的调用方式,可供用户任意选用。采用大文件分片并发上传,极大的提高了文件上传效率。
4.百度脑图 KityMinder
KityMinder 是百度FEX团队的f-cube小组(原UEditor小组)的又一力作。作为一款在线的脑图编辑工具,它有着很多Native编辑工具的交互体验。KM与UE有着一样的宗旨,就是注重最终用户的使用体验。同时,它充分发挥了Web云存储的优势,可以直接将编辑中的脑图同步到云端。此外,借由独创的 “云盘分享”功能,用户可以一键将当前编辑的脑图直接生成在线链接共享给其他用户,实现无缝沟通。
KM是基于SVG技术实现,使用JavaScript+html实现。支持绝大多数的主流浏览器。
支持列表如下
1. chrome
2. firefox
3. safari
4. ie9-115.人工智能系统 WARP-CTC
WARP-CTC 基于 CTC 方法,当前可用的一些 CTC 实现通常要求大量的内存或者是慢十到几百倍。
百度研究所首席科学家 Andrew Ng 称他的研究主要是人工神经网络如何在图形处理单元 (GPUs) 上运行,让 WARP-CTC 实现对 GPUs 和 x86 CPUs 的支持。
connectionist temporal classification (CTC) 方法可以追溯到 2006 年,在 Swiss AI 研究所 IDSIA 论文上有记录。 百度研究所开发的 WARP-CTC 就基于 CTC 方案,但是改进了其自身的语音识别功能
----------------------------------------------------------------------------------------------------------------
腾讯 QQ
1.WeUI 为微信Web服务量身设计
WeUI 是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信 Web 开发量身设计,可以令用户的使用感知更加统一。包含button、cell、dialog、 progress、 toast、article、actionsheet、icon等各式元素。
2.手机前端开发调试利器 vConsole
我们在开发手机版网页的时候,常常会出现下面的情景:
(1) 开发时,在自己电脑上运行得好好的,在手机上打开就挂了,但是手机上又看不到error log;
(2) 上线后,某用户表示页面失灵,但我们自己又重现不出来,看不到用户侧的出错信息。
如果说(1)还可以通过电脑连接手机以查看log来解决,那(2)在没有完善的前端上报体系时就非常被动了。
作为开发者,我们的诉求很简单:有没有快捷的方法在手机前端页面看到log日志?vConsole就这样出现了!
3.专业级Web图像处理引擎 AlloyImage
AlloyImage是一个使用Javascript语言开发的,基于Web的在线图像处理引擎,除了核心底层图像处理引擎,还同时集成了一些方便快捷的图像处理API,您可以将它简单快捷的引用到您的Web网页中,做出与Photoshop一样的优美效果。甚至,你可以用AlloyImage来开发一个Web在线图像处理软件。
4. GoPng 图片合并并生成css
Css Sprite,有时也称为雪碧图、精灵图,是每一个前端开都会遇到的问题,也是常见的小图片加载优化手段。
5.可视化Web构建工具 AlloyDesigner
AlloyDesigner 是一款致力于提高前端生产效率的浏览器内运行工具,AlloyDesigner + Chrome F12(Especially with WorkSpace) 打造前端新的开发和测试模式
6.Koala跨平台图形编译工具
Koala是一款预处理器语言图形编译工具,支持Less、Sass、CoffeeScript、Compass framework 的即时编译。 无需手动输入命令去编译,后台监听文件是否有改变,如有修改会自动进行编译。能够大大提升 Web 开发中的工作效率。
功能特性 多语言支持 支持Less、Sass、CoffeeScript 和 Compass Framework。 实时编译 监听文件,当文件改变时自动执行编译,这一切都在后台运行,无需人工操作。 编译选项 可以设置各个语言的编译选项。 项目配置 支持为项目创建一个全局配置,为文件设置统一编译选项。 错误提示 在编译时如果遇到语法的错误,koala将在右下角弹出错误信息,方便开发者定位代码错误位置。 跨平台 windows、Linux、mac都能完美运行。 系统支持及要求
Koala支持跨平台运行,完美兼容Windows、Linux与Mac 。
Linux系统下需安装好ruby运行环境, e.g. $ sudo apt-get install ruby.7.轻量级 CSS3 动画库 JX.Animate
JX.Animate 是一个开源的轻量级的CSS3动画库。动画可以使用标准的CSS3关键帧动画(KeyFrame)制作,也可以使用JavaScript制作,而且还可以支持在JavaScript中动态生成动画关键帧。
8.Fanvas swf转为html5 canvas
Fanvas是一个把swf转为html5 canvas动画的系统,由两部分组成:Actionscript实现的解析器、js运行库。Flash做动画是最成熟最高效的方式,但由于终端基本不支持Flash播放,这给终端的动画制作带来了不少麻烦。Fanvas是Flash和Canvas的完美结合,可以把swf(包括矢量和位图)完美地转化为canvas动画.
9.随身调测平台 GT
GT(随身调)是APP的随身调测平台,它是直接运行在手机上的“集成调测环境”(IDTE, Integrated Debug Environment)。利用GT,仅凭一部手机,无需连接电脑,您即可对APP进行快速的性能测试(CPU、内存、流量、电量、帧率/流畅度等等)、 开发日志的查看、Crash日志查看、网络数据包的抓取、APP内部参数的调试、真机代码耗时统计等。如果您觉得GT提供的功能还不够满足您的需要,您还 可以利用GT提供的基础API自行开发有特殊功能的GT插件,帮助您解决更加复杂的APP调试问题。
10.Frozen UI 移动端UI框架
Frozen UI是一个开源的简单易用,轻量快捷的移动端UI框架。基于手Q样式规范,选取最常用的组件,做成手Q公用离线包减少请求,升级方式友好,文档完善,目前全面应用在腾讯手Q增值业务中。
11.LivePool Web 开发调试工具
LivePool 是一个基于 NodeJS,类似 Fiddler 支持抓包和本地替换的 Web 开发调试工具,是 Tencent AlloyTeam 在开发实践过程总结出的一套的便捷的 WorkFlow 以及调试方案。
特性 基于 NodeJS, 跨平台 支持 http 抓包和本地替换调试,Https/WebSockets 直接代理转发(暂不支持本地替换) 便捷的 UI 管理界面,跟 Fiddler 类似,降低学习成本 可以脱离 UI 后台运行,适应于某些不需要抓包,只需要使用替换和简单路由的场景 基于项目的替换规则管理,方便高效,规则支持拖曳排序 支持基于请求路径的本地文件替换,支持基于请求路径的路由转发(host 配置) 替换类型支持:文件/文件夹替换,combo合并替换,qzmin替换(批量combo),delay延时等 支持自动设置系统代理 支持规则过滤,只显示关注的请求 提供构建 http get/post 请求界面,方便接口调试 特色功能:模拟gprs/3g等低网速(mac only) 特色功能:支持离线站点到本地,并自动代码格式化
12.KNVProtoEngine 高性能树型协议处理引擎
KNV是一个模式自由的高性能树型协议处理引擎,是对Key-Value的一个通用结构化扩展。
应用特性
正如NoSQL对SQL的彻底变革一样,KNV是对Key-Value的彻底变革!
大家都很熟悉Key-Value系统,但KV操作极不方便:
-- 你不得不自己做乐观锁(读返回seq->修改->带seq写->seq变化则重头开始);
-- 你不得不拉取一堆数据,然后再提取你想要的部分;
-- 为了修改一个bit,你不得不把一串数据拉取修改后再一起提交更新
不过现在有KNV,一切都解决了。KNV时代来了,你还在犹豫吗?应用场景
KNV是专门针对以Protocol Buffers(或类似树型结构)存储的存储系统开发的,有3个应用场景:
存储系统 处理用户请求的通用解决方法(Get/Set/Delete),可以适配任意用户自定义的数据结构。
代理/通用逻辑层 服务器处理Protocol Buffers协议的通用方法 – 比如通用Proxy,透传多个协议, 对请求包进行鉴权、限频、统计等等操作,还支持对包体内容进行审计,使用KNV协议, 这种方法就有可能而且很简单。
原生态 Protocol Buffers打解包库 的高性能代替品。
13.Behaviac 游戏AI的开发框架组件
Behaviac是游戏AI的开发框架组件,也是游戏原型的快速设计工具。支持行为树BT,状态机FSM,HTN等多种范式,方便的编辑和调试。支持全平台,适用于客户端和服务器,助力游戏快速迭代开发。编辑器可以运行在PC上,操作方便直观可靠,支持实时和离线调试;编辑器可以导出xml,bson等多种格式,更可以导出C++,C#源码,提供最高效率。运行时支持全平台,有C++和C#两个版本,原生支持Unity。
已被《天天炫斗》、《QQ飞车》、《全民突击》、《全民夺宝》、《九龙战》等游戏及其他更多预研项目使用。
14.现代构建系统 Typhoon Blade
Blade主要定位于linux下的大型C++项目,密切配合研发流程,比如单元测试,持续集成,覆盖率统计等。但像unix下的文本过滤程序一 样,保持相对的独立性,可以单独运行。目前重点支持i386/x86_64 Linux,未来可以考虑支持其他的类Unix系统。
特点: 自动分析头文件依赖关系,构建受影响的代码。 增量编译和链接,只构建因变更受影响而需要构建的。 自动计算库的间接依赖,库的作者只需要写出直接依赖,构建时自动检查所依赖的库是否需要重新构建。 在任意代码树的任意子目录下都能构建。 支持一次递归构建多个目录下的所有目标,也支持只构建任意的特定的目标。 无论构建什么目标,这些目标所依赖的目标也会被自动连坐更新。 内置 debug/release 两种构建类型。 彩色高亮构建过程中的错误信息。 支持 ccache 支持 distcc 支持基于构建多平台目标 支持构建时选择编译器(不同版本的gcc,clang等) 支持编译 protobuf,lex, yacc, swig 支持自定义规则 支持测试,在命令行跑多个测试 支持并行测试(多个测试进程并发运行) 支持增量测试(无需重新运行的测试程序自动跳过) 集成 gperftools,自动检测测试程序的内存泄露 构建脚本 vim 语法高亮 svn 式的子命令命令行接口。 支持 bash 命令行补全 用 Python 编写,无需编译,直接安装使用。
彻底避免以下问题:
头文件更新,受影响的模块没有重新构建。
被依赖的库需要更新,而构建时没有被更新,比如某子目录依赖遥远的某外部目录的代码,我在这个目录构建,外部目录的代码会被自动检查是否也需要重新构建。
15.RapidJSON C++的JSON开发包
Rapidjson 是一个 C++ 的快速 JSON 解析器和生成器,使用 SAX/DOM 风格的 API 设计。
16. 微信开源PhxSQL
PhxSQL是一个兼容MySQL、服务高可用、数据强一致的关系型数据库集群。PhxSQL以单Master多Slave方式部署,在集群内超过一半机器存活的情况下,可自身实现自动Master切换,且保证数据一致性。
----------------------------------------------------------------------------------------------------------------
新浪:WeiBo
1.分布式缓存服务器 memcachedb
memcachedb是 一个由新浪网的开发人员开放出来的开源项目,给memcached分布式缓存服务器添加了Berkeley DB的持久化存储机制和异步主辅复制机制,让memcached具备了事务恢复能力、持久化能力和分布式复制能力,非常适合于需要超高性能读写速度,但是 不需要严格事务约束,能够被持久化保存的应用场景,例如memcachedb被应用在新浪博客上面。
2.动态流量管理方案 Upsync
Upsync,微博开源基于Nginx容器动态流量管理方案 。Nginx 以其超高的性能与稳定性,在业界获得了广泛的使用,微博的七层就大量使用了 Nginx 。结合 Nginx 的健康检查模块,以及动态 reload 机制,可以近乎无损的服务的升级上线与扩容。这个时候扩容的频次比较低,大多数情况下是有计划的扩容。Upsync,开发了模块 nginx-upsync-module,它的功能是拉取 consul 的后端 server 的列表,并更新 Nginx 的路由信息。此模块不依赖于任何第三方模块。consul 作为 Nginx 的 db,利用 consul 的 KV 服务,每个 Nginx work 进程独立的去拉取各个 upstream 的配置,并更新各自的路由。
3.高性能的内核 Socket 实现 Fastsocket
Fastsocket 是一个高扩展性的 Socket 以及 Linux 内核的底层网络实现。可以在多核机器上提供极好的性能,此外使用和维护还非常简单。目前该项目已经在新浪的生产环境中使用。该项目由清华大学和新浪网联合组成的 Fastos 团队开发,该团队的使命是提升 Linux 内核的效率。Fastsocket 目前已经使用在新浪微博的生产环境上,主要用于提供负载均衡服务的 HAProxy,线上实际性能提升一倍,从2014年3月份稳定运行至今,预计2014年底完成负载均衡全部集群的 Fastsocket 升级。Fastsocket 完全兼容 BSD Socket API,现有各类基于 Socket 的网络应用可以直接使用 Fastsockt。 目前经过兼容测试的常用服务软件有:HAProxy、Nginx、Lighttpd、Redis 和 Memcached。
4.轻量级 RPC 框架 Motan
Motan 是一套高性能、易于使用的分布式远程服务调用(RPC)框架。
功能 支持通过spring配置方式集成,无需额外编写代码即可为服务提供分布式调用能力。 支持集成consul、zookeeper等配置服务组件,提供集群环境的服务发现及治理能力。 支持动态自定义负载均衡、跨机房流量调整等高级服务调度能力。 基于高并发、高负载场景进行优化,保障生产环境下RPC服务高可用。
5.TCP 性能剖析工具 Tcpdive
Tcpdive 是 TCP 性能剖析工具,主要特性:
更多 TCP 内部性能信息
定量评估 TCP 性能改进
描述在 TCP 层的 HTTP 处理,依赖于 HTTP Apps
容易部署,使用友好
Tcpdive 已经在新浪的生产环境上部署使用:
提高微博图片服务质量
提高微博视频服务质量
在有线和无线网络中比较 TCP 性能
记录不同应用的 TCP 流量
6.PHP框架 Yaf
Yaf是一个C语言编写的PHP框架,Yaf 的特点:
用C语言开发的PHP框架, 相比原生的PHP, 几乎不会带来额外的性能开销.
所有的框架类, 不需要编译, 在PHP启动的时候加载, 并常驻内存.
更短的内存周转周期, 提高内存利用率, 降低内存占用率.
灵巧的自动加载. 支持全局和局部两种加载规则, 方便类库共享.
高性能的视图引擎.
高度灵活可扩展的框架, 支持自定义视图引擎, 支持插件, 支持自定义路由等等.
内建多种路由, 可以兼容目前常见的各种路由协议.
强大而又高度灵活的配置文件支持. 并支持缓存配置文件, 避免复杂的配置结构带来的性能损失.
在框架本身,对危险的操作习惯做了禁止.
更快的执行速度, 更少的内存占用.
----------------------------------------------------------------------------------------------------------------
小米:XiaoMi
1.分布式的发布和监控系统 Minos
Minos 是小米公司开发的一个分布式的发布和监控系统。最初是小米开发的用来在 Hadoop 和 ZooKeeper 集群上发布和管理的工具。Minos 可轻松扩展来支持其他的系统,目前已经支持包括 HDFS、YARN 和 Impala 。
2.互联网企业级监控系统 OpenFalcon
Open-Falcon 是小米运维部开源的一款互联网企业级监控系统解决方案.
监控系统是整个运维环节,乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供翔实的数据用于追查定位问题。监控系统作为一个成熟的运维产品,业界有很多开源的实现可供选择。当公司刚刚起步,业务规模较小,运维团队也刚刚建立的初期,选择一款开源的监控系统,是一个省时省力,效率最高的方案。之后,随着业务规模的持续快速增长,监控的对象也越来越多,越来越复杂,监控系统的使用对象也从最初少数的几个SRE,扩大为更多的DEVS,SRE。这时候,监控系统的容量和用户的“使用效率”成了最为突出的问题。
监控系统业界有很多杰出的开源监控系统。我们在早期,一直在用zabbix,不过随着业务的快速发展,以及互联网公司特有的一些需求,现有的开源的监控系统在性能、扩展性、和用户的使用效率方面,已经无法支撑了。
因此,我们在过去的一年里,从互联网公司的一些需求出发,从各位SRE、SA、DEVS的使用经验和反馈出发,结合业界的一些大的互联网公司做监控,用监控的一些思考出发,设计开发了小米的监控系统:Open-Falcon。
Highlights and features 数据采集免配置:agent自发现、支持Plugin、主动推送模式 容量水平扩展:生产环境每秒50万次数据收集、告警、存储、绘图,可持续水平扩展。 告警策略自发现:Web界面、支持策略模板、模板继承和覆盖、多种告警方式、支持回调动作。 告警设置人性化:支持最大告警次数、告警级别设置、告警恢复通知、告警暂停、不同时段不同阈值、支持维护周期,支持告警合并。 历史数据高效查询:秒级返回上百个指标一年的历史数据。 Dashboard人性化:多维度的数据展示,用户自定义Dashboard等功能。 架构设计高可用:整个系统无核心单点,易运维,易部署。
3.物联网框架 IoT.js
IoT.js 旨在为物联网提供一个基于 Web 技术的可相互操作的服务平台。IoT.js 的目标是要在资源受限的设备上良好运行,例如只有几 KB 的 RAM。所以它支持广泛的物联。
----------------------------------------------------------------------------------------------------------------
豆瓣 DouBan
1.分布式计算框架 DPark
DPark 是 Spark 的 Python 克隆,是一个Python实现的分布式计算框架,可以非常方便地实现大规模数据处理和迭代计算。 DPark 由豆瓣实现,目前豆瓣内部的绝大多数数据分析都使用DPark 完成,正日趋完善。
2.iOS/Mac 音频播放器 DOUAudioStreamer
DOUAudioStreamer 是 iOS 和 Mac 的基于核心音频的流媒体音频播放器。
3.CODE 豆瓣代码托管系统
Douban CODE 是豆瓣开发的一个基于 git 版本控制系统的协作平台。
CODE —— C: Community O: Original D: Developer E: Eldamar
目前 CODE 仅开放了一个框架,支持:
clone & push project
create project
create user
准备环境
MySQL
Memcached
Python >= 2.7
pip >= 1.4.1
virtualenv
git
----------------------------------------------------------------------------------------------------------------
网易 NetEase
1.分布式TCP压力测试工具 tcpcopy
tcpcopy是一种应用请求复制(基于tcp的packets)工具,其应用领域较广,目前已经应用于国内各大互联网公司。
总体说来,tcpcopy主要有如下功能:
1)分布式压力测试工具,利用在线数据,可以测试系统能够承受的压力大小(远比ab压力测试工具真实地多),也可以提前发现一些bug
2)普通上线测试,可以发现新系统是否稳定,提前发现上线过程中会出现的诸多问题,让开发者有信心上线
3)对比试验,同样请求,针对不同或不同版本程序,可以做性能对比等试验
4)利用多种手段,构造无限在线压力,满足中小网站压力测试要求
5)实战演习(架构师必备)2.桌面应用软件的跨平台解决方案 heX
heX 是网易有道搜索部门开发的一个允许你采用前端技术(HTML,CSS,JavaScript)开发桌面应用软件的跨平台解决方案,基于HTML5 + node.js,类似appjs。是你开发桌面应用的一种新的选择,意在解决传统桌面应用开发中繁琐的UI和交互开发工作,使其变的简单而高效。特别适合重UI,重交互的桌面应用软件。
3.Android性能测试工具 Emmagee
Emmagee是监控指定被测应用在使用过程中占用机器的CPU、内存、流量资源的性能测试小工具。
支持SDK:Android2.2以及以上版本
Emmagee功能介绍
1、检测当前时间被测应用占用的CPU使用率以及总体CPU使用量
2、检测当前时间被测应用占用的内存量,以及占用的总体内存百分比,剩余内存量
3、检测应用从启动开始到当前时间消耗的流量数
4、测试数据写入到CSV文件中,同时存储在手机中
5、可以选择开启浮窗功能,浮窗中实时显示被测应用占用性能数据信息
6、在浮窗中可以快速启动或者关闭手机的wifi网络
4.基于udp的请求复制工具 udpcopy
udpcopy用来解决udp应用的一个开源软件,与tcpcopy同属于xcopy系列,可以导入udp流量到测试系统中去,这样就可以有效地对系统进行各种测试,比如压力测试,冒烟测试等等。
5.实时编辑刷新的前端服务器 Puer (推荐:browser-sync
https://github.com/BrowserSync/browser-sync)简而言之,Puer是一个可以实时编辑刷新的前端服务器。特性一览:
提供一个当前或指定路径的静态服务器
所有浏览器的实时刷新:编辑css实时更新(update)页面样式,其它文件则重载(reload)页面
提供简单熟悉的mock请求的配置功能,并且配置也是自动更新。
可用作代理服务器,调试开发既有服务器的页面,可与mock功能配合使用
集成了weinre,并提供二维码地址,方便移动端的调试
可以作为connect中间件使用(前提是后端为nodejs,否则请使用代理模式)
--------------------------阿里巴巴开源的好软件太多,请自行选择所需,我列几个我们用的-------------------------
阿里巴巴
1.分布式key/value存储系统 Tair
Tair是由淘宝网自主开发的Key/Value结构数据存储系统,在淘宝网有着大规模的应用。您在登录淘宝、查看商品详情页面或者在淘江湖和好友“捣浆糊”的时候,都在直接或间接地和Tair交互。Tair是一个Key/Value结构数据的解决方案,它默认支持基于内存和文件的两种存储方式,分别和我们通常所说的缓存和持久化存储对应。
Tair除了普通Key/Value系统提供的功能,比如get、put、delete以及批量接口外,还有一些附加的实用功能,使得其有更广的适用场景,包括:
Version支持
原子计数器
Item支持
2.TFS 分布式文件系统
TFS(Taobao FileSystem)是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,其设计目标是支持海量的非结构化数据。
目前,国内自主研发的文件系统可谓凤毛麟角。淘宝在这一领域做了有效的探索和实践,Taobao File System(TFS)作为淘宝内部使用的分布式文件系统,针对海量小文件的随机读写访问性能做了特殊优化,承载着淘宝主站所有图片、商品描述等数据存储。
3.消息中间件 RocketMQ
https://github.com/alibaba/RocketMQ
https://github.com/alibaba/RocketMQ-docs
4.分布式计算系统 JStorm
Jstorm是参考storm的实时流式计算框架,在网络IO、线程模型、资源调度、可用性及稳定性上做了持续改进,已被越来越多企业使用
5.淘宝Web服务器 Tengine
Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。
以下沿引项目主页上的特性介绍:
继承Nginx-1.2.8的所有特性,100%兼容Nginx的配置;
动态模块加载(DSO)支持。加入一个模块不再需要重新编译整个Tengine;
更多负载均衡算法支持。如会话保持,一致性hash等;
输入过滤器机制支持。通过使用这种机制Web应用防火墙的编写更为方便;
动态脚本语言Lua支持。扩展功能非常高效简单;
支持管道(pipe)和syslog(本地和远端)形式的日志以及日志抽样;
组合多个CSS、JavaScript文件的访问请求变成一个请求;
可以对后端的服务器进行主动健康检查,根据服务器状态自动上线下线;
自动根据CPU数目设置进程个数和绑定CPU亲缘性;
监控系统的负载和资源占用从而对系统进行保护;
显示对运维人员更友好的出错信息,便于定位出错机器;
更强大的防攻击(访问速度限制)模块;
更方便的命令行参数,如列出编译的模块列表、支持的指令等;
可以根据访问文件类型设置过期时间;
6.SeaJS 模块加载框架
Sea.JS 是一个遵循 CommonJS 规范的模块加载框架,可用来轻松愉悦地加载任意 JavaScript 模块。SeaJS 支持的标准模块遵循 Modules/Wrappings 规范的 define 形式,可运行于 Web 浏览器以及 node.JS 等环境中。
7.阿里巴巴分布式数据库同步系统 otter
otter 基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库. 一个分布式数据库同步系统。
8.Taobao Open API 客户端 TOP (有Net版)
TOP 是 Taobao Open API 客户端。
APIs User taobao.user.buyer.get 查询买家信息API taobao.user.get 获取单个用户信息 taobao.user.seller.get 查询卖家用户信息 taobao.users.get 获取多个用户信息 Category (Working)
taobao.itemcats.authorize.get 查询商家被授权品牌列表和类目列表 taobao.itemcats.get 获取后台供卖家发布商品的标准商品类目 taobao.itemcats.increment.get 增量获取后台类目数据 taobao.itemprops.get 获取标准商品类目属性 taobao.itempropvalues.get 获取标准类目属性值 taobao.topats.itemcats.get 全量获取后台类目数据 Shop taobao.shop.get (白名单用户才能调用)9.模拟数据生成器 Mock.js
Mock.js 是一款模拟数据生成器,旨在帮助前端攻城师独立于后端进行开发,帮助编写单元测试。提供了以下模拟功能:
根据数据模板生成模拟数据
模拟 Ajax 请求,生成并返回模拟数据
基于 HTML 模板生成模拟数据
10.服务框架 Dubbo
Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。
主要核心部件:
Remoting: 网络通信框架,实现了 sync-over-async 和 request-response 消息机制.
RPC: 一个远程过程调用的抽象,支持负载均衡、容灾和集群功能
Registry: 服务目录框架用于服务的注册和服务事件发布和订阅
11.接口文档管理工具 RAP
RAP通过GUI工具帮助WEB工程师更高效的管理接口文档,同时通过分析接口结构自动生成Mock数据、校验真实接口的正确性,使接口文档成为开发流程中的强依赖。有了结构化的API数据,RAP可以做的更多,而我们可以避免更多重复劳动。
https://github.com/thx/RAP
----------------------------------------------------------------------------------------------------------------
其他项目:
1.去哪儿:
MySQL自动化运维工具 Inception
MySQL语句的审核,在业界都已经基本被认同了,实际上也是对MySQL语句写法的统一化,标准化,而之前的人工审核,针对标准这个问题其实是很 吃力的,标准越多,DBA越累,开发也越累。 那么在这个都追求自动化运维的时代,审核也必须要跟上步伐,因此Inception诞生了。而Inception可以做的工作远不止是一个自动化审核工 具,同时还具备执行,生成对影响数据的回滚语句(类似闪回的功能),这样一条龙服务的工具,将会给DBA的工作带来翻天覆地的变化,DBA从此就从繁重的 审核、登上去执行,出错了很难回滚(如果提前没有备份的话)的被动局面解放了出来,突然发现,做DBA原来可以这么轻松,工作可以不饱和了,那就有更多的 自由时间学习、进一步向自动化运维平台的实现等更智能化的方向去发展,是具有里程碑意义的。
2.大众点评:
实时应用监控平台 CAT
CAT 由大众点评开发的,基于 Java 的实时应用监控平台,包括实时应用监控,业务监控。
CAT 支持的监控消息类型包括:
Transaction 适合记录跨越系统边界的程序访问行为,比如远程调用,数据库调用,也适合执行时间较长的业务逻辑监控,Transaction用来记录一段代码的执行时间和次数。
Event 用来记录一件事发生的次数,比如记录系统异常,它和transaction相比缺少了时间的统计,开销比transaction要小。
Heartbeat 表示程序内定期产生的统计信息, 如CPU%, MEM%, 连接池状态, 系统负载等。
Metric 用于记录业务指标、指标可能包含对一个指标记录次数、记录平均值、记录总和,业务指标最低统计粒度为1分钟。
Trace 用于记录基本的trace信息,类似于log4j的info信息,这些信息仅用于查看一些相关信息
消息树
CAT监控系统将每次URL、Service的请求内部执行情况都封装为一个完整的消息树、消息树可能包括Transaction、Event、Heartbeat、Metric和Trace信息。
3.搜狐:
Redis云管理平台 CacheCloud
CacheCloud提供一个Redis云管理平台:实现多种类型(Redis Standalone、Redis Sentinel、Redis Cluster)自动部署、解决Redis实例碎片化现象、提供完善统计、监控、运维功能、减少开发人员的运维成本和误操作,提高机器的利用率,提供灵活的伸缩性,提供方便的接入客户端。
基于 MySQL 的数据库中间件 SOHU-DBProxy
SOHU-DBProxy 是由 搜狐 数据库团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.3版本的基础上, 修改了大量bug,添加了很多功能特性。现在已经在sohu的多个业务线上使用
DBProxy 主要功能:
1 即使在同一个连接(只要不在同一个事务中)也能连接复用
2 负载均衡提高读性能,支持动态扩展
3 动态添加的SQL审核和过滤。能够统计的SQL长时间运行影响性能,并且阻止其运行
4 用户连接限制
5 自动摘除宕机的DB
6 读写分离(当前版本没有,代码和测试已经完成,没有合并到当前版本)