微服务架构中的常用开源工具

搞微服务真的很麻烦的,为了解决单点的性能问题引入微服务,同时也引入了无数新的问题出现。对于这些问题,亦有一些新的概念和工具被发明出来,这篇记录一下,我见过的各种微服务中的开源工具,以及它们所存在的意义,提供了哪些便利或者解决了什么问题。


基础设施

ZooKeeper

ZooKeeper是一个具有高可靠性的分布式的协作工具,基于PAXOS协议,其实现了一个可保证分布式一致性的类文件系统。
利用它的这个机制以及它提供操作与读取该类文件系统的API,分布式系统可用它实现各种功能,包括数据发布/订阅负载均衡命名服务分布式协调/通知集群管理Master选举分布式锁分布式队列服务发现等多个分布式中常见的需求应用场景。

rabbitmq

基于AMQP协议,使用非常小众的erlang语言编写的分布式消息队列,有非常详实的文档与tutorials,同时提供了web页面,用于管理和查看队列的使用情况。

jumpserver

使用Django编写的跳板机系统,可通过终端登录各测试机,同时提供web应用,可用于某服务器上文件的上传与下载,跑脚本什么的再方便不过了。
它有着全套的权限管理,遵循 Web 2.0 规范,配备了业界领先的 Web Terminal 解决方案,交互界面美观、用户体验好,采纳分布式架构,支持多机房跨区域部署,中心节点提供 API,各机房部署登录节点,可横向扩展、无并发限制。

azkaban

由linkedin研发的分布式调度工具,使用Java编写,可使用Cron的配置方式来管理分布式调度任务,数据落于MySQL,整体还是蛮重的。
具有便于使用的web UI,并且在任务执行成功或失败时可以发送邮件通知,并且提供重试机制。

Apollo

携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
服务端基于Spring Boot和Spring Cloud开发,提供了Java,Python等语言的接入sdk。

RPC框架

微服务中RPC框架当然是少不了的,最常用的是Facebook研发的thrift,以及阿里的dubbo,现都归于Apache基金会下,此外,饿了么研发的thriftpy在Python领域也比较优秀。
当然,在Thrift框架的上层,公司往往会再包一层,做为自己的框架,在其中引入sentry、zookeeper,gitlab地址pull idl等基于公司具体情况的处理。

发布

jenkins

jenkins是由Java编写的开发自动化平台,其本身提供了1000+的plugins可供各种自动化场景使用,使用者可以通过编写jenkinsfile来自定义自己的自动化任务。
使用jenkins的常见场景为项目构建运行自动化测试静态代码分析项目部署

spinnaker

spinnaker是一个由Netflix开发的使用Python编写的用于持续集成的平台,主要用于结合容器发布各环境的代码,发布地点可以是各种云平台,包括 AWS EC2, Kubernetes, Google Compute Engine, Google Kubernetes Engine, Google App Engine, Microsoft Azure和Openstack等,而这,已经包含了市场上所有主流的云服务商。

它的一个很大的特点是自动化,可以通过git events, Jenkins, Travis CI, Docker, CRON等事件来触发构建而不用人工手动去操作,在工作中的一个非常便利的常见使用场景是在自己的开发分支使用git push命令后,spinnaker将会自动构建这个branch的容器,并生成相应的访问url,真的是非常方便。

kubernetes

使用Go语言编写的容器管理平台,它的官网对自己的简介为Production-Grade Container Orchestration,Automated container deployment, scaling, and management。
用于编排、发布容器,提供水平伸缩性,便与扩展,并且可以登录某个容器,运行命令、查看log等。

监控

sentry

你不可能没听说过的跨平台Bug追踪网站,Github上17000+star,其受欢迎程度可见一般。它使用Python编写,并且提供了大部分主流语言的API供其使用,它能很好地融入log系统中,完备地记下问题出现当时的调用链与场景。
常见的使用方式为将它纳入到各种公司框架中,使得开发人员直接拿到logger,当使用warning或error时,sentry就会记录这个事件并发邮件给到关心它的人。

open-falcon

小米开源的微服务监控系统,使用它可以查看各服务器的状态,包括网络IO,与CPU运行情况,以及数据库的负载。
生成user friendly的图表,提供强大的统计与自定义功能,用户可以按照自己想要的方式获取信息。

kibana

elastic团队的作品,用于数据收集与分析,可以用于根据各种条件(时间、关键字)等来查询各环境的日志,正是根据这些日志,它可以生成各种统计图表等,被称为elastic技术栈的视窗。
不过说实话它这个查询的界面有些难懂,不够user friendly。

cat

cat是大众点评开源的一套基于java的实时应用监控平台,主要应用于服务中间件框架(MVC 框架、RPC 框架、持久层框架、分布式缓存框架)的监控,为开发和运维提供各项性能指标、健康检查、自动报警等可视化服务。
除了上面提到的工具提供的错误日志统计、CPU负载、各种连接池状态之外,cat还可以记录跨越系统边界的程序访问行为,比如远程调用,数据库调用,也适合执行时间较长的业务逻辑监控,可以用来记录一段代码的执行时间和次数,特别地,对Java应用程序,它可以上报一些如JVM内存、GC等核心指标。
不只如此,对于业务方面的指标,也可以利用它来进行监控和统计,比如订单数、交易额、支付成功率等。
功能真的是很全面了,有很多业界公司都在使用这个工具,但忍不住要吐槽的一点是,界面可能真的有点丑,不如上面的sentry好看。

其他

Gitlab

开源的用于公司自建代码仓库的项目,其功能丝毫不逊于Github。

phabricator

使用PHP编写的code review平台。

redmine

使用ROR编写的项目管理工具,主要用于线上bug的提出、跟踪与管理。


以上内容只是基于我在工作中接触过的,但这并不是全部,还有一堆其他的自研应用用于优化整个流程与开发效率,比如Nginx配置平台,以及一些基于业务的数据分析平台,数据打点平台,API管理应用(与spinnaker集成直接将前后端连接起来),灰度发布平台,AB Test实验管理平台,等等,基于一个思想就是有开源的就尝试使用开源的产品,找不到合适的,也不妨花些时间自己研发,只要它可以带来整体效率的提升,便是很有意义的。

当然,我上面所提到的例子,可能并不是某个领域的最佳的解决方案,或者在整个微服务架构内还不够全面,希望大家可以分享一下自己觉得好的工具,我也会随着自己见识的不断提升,来逐渐更新这个列表。

总之,devops、微服务真的是有太多的学问,还有很多我没有接触过的东西,里面的水真的是无限深。有太多的工具,太多的可以优化的点,面对这些我们倒也用不着惊慌与烦躁,工具是为了给人带来便利的,一个工具的出现必然是为了解决或者优化一个问题,了解得越多,自己对这种大型网站的整体理解与感知就会更深一些。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,347评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,435评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,509评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,611评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,837评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,987评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,730评论 0 267
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,194评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,525评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,664评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,334评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,944评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,764评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,997评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,389评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,554评论 2 349

推荐阅读更多精彩内容