Java开发者在某个重大发布后需要使用的15个工具

标签: 基础技术 开发工具 | 发表时间:2015-01-22 00:00 | 作者:张 健
出处:http://www.importnew.com

新发布的根本生存装备

不像玩僵尸毁灭的场景,也不像辩论大刀对抗猎枪,在Java的生产环境中问题是真实存在的,特别是在一个新的发布之后(有备无患嘛)。更进一步说,比起当时 将编码周期缩短至几周或是几天,甚至一天缩短多次,反而现在更容易陷入麻烦。为了避免这些麻烦,你需要完全理解新的代码会对你的系统产生什么影响。是否会 对原有的系统产生破坏?是否会让系统运行迟缓?怎么去解决这些可能出现的问题呢?下面介绍一些工具和架构来彻底破解这些问题。

现在开发生命周期非但不会缩短,每天不断膨胀的日志数据 甚至可以达到GB级别的量级。让我们说说在新发布之后的问题:如果你想及时响应,在没有合适的工具的情况下,想要处理多数据源多服务器的GB量级的数据, 几乎是不可能的。在这样的情况下,除开重型企业内部的工具Splunk和他的SaaS中的竞争对手,如Sumo Logic, Loggly等等。我们依然有提供类似功能的其他选择,因此我们对日志的管理做了一个深入的分析,你可以参照 这里

#1  建立一个可靠的日志管理策略,能帮助你看到的不止是单独的日志文件,能让你在新发布之后快速做出相应。

我们最后发现,在新发布之后的一个有用的日志框架就是开源的ELK stack。因为它是开源免费的,所以被特别提到。

ELK stack包括 ElasticSearch,,Logstash 和Kibana

那么我们所说的 ELK到底是什么呢?它是一个混合体,包括用作搜索和性能分析的elasticsearch,用于日志收集的Logstash和用作前端展现的 Kibana。我们已经用过有一段时间了,依靠它和Redis分析我们的Java日志,它也有被用在开发和BI之中。现在,elasticsearch已经内置于Logstash,Kibana也是一个elasticsearch的产品,这样能让集成和安装更容易。

每当一个新的发布之后,前端会展现出我们对这个应用健康所关心的自定义指标。这些指标会实时更新,并且允许刚交付的代码上传到生产环境后马上就得到监测。

#2 搜索,可视化以及对多数据源日志的聚合,是决定你日志管理工具选择的第一要素。

#3 从一个开发者的角度,评估新的发布的影响也包括BI等方面。

可供选择的工具:

  1. 内置工具: Splunk
  2. SaaS: Sumo Logic
    3. SaaS: Loggly
    4. 开源: Graylog2
    5. 开源: Fluentd
    6.  The ELK stack (开源):  Elasticsearch +  Logstash +  Kibana

性能监控:

发 布周期被缩短,日志文件越来越大,但这并不是全部。随着用户请求的数量急剧增长,他们都希望达到性能的峰值。如果你不努力优化,简单的日志记录让你只能看 到这么多。这样说来,专用应用程序性能管理工具(APM)已不再被认为是奢侈品,它已经迅速成为一种标准。从本质上说,APM意味着时间需要多长时间来执 行不同的地区代码并完成汇报——要达到这个,可以通过代码检测,日志监控或是包括网络/硬件指标。考虑到后台以及用户设备,首先进入我脑中的两个APM工 具分别是New Relic(最近刚IPO)以及AppDynamics。

左边为AppDynamics,右边为New Relic的主面板

不 管是初创还是成熟的公司,这两个都能满足不同类型的开发者。但是两个都在走IPO,在经历巨大的增长后,产品线越来越模糊。这个选择不是很清晰,但是你不 能陷入误区,即On premise = AppDynamics。相反,这是一个独立的需求,它依赖于谁更适合你的站点(即它们提供的所有特性就是你实际上想要使用的)。看看我们最近发布的关于二者的分析报告,点击 这里

我 们最近发布的另外两个工具是Ruxit(由Compuware开发)和DripStat(Chronon Systems开发),它们每一个都来自由New Relic开创的尝试自己解决SaaS监控市场的大公司。为了深入JVM硬核内部,jClarity和Plumbr也绝对值得一试。

#4:新的发布有可能影响你应用的性能使之运行变慢。APM工具可以提供你应用健康的总体情况。

可供选择的工具:

  1. AppDynamics
  2. New Relic

新的成员:

  1. jClarity
  2. Plumbr
  3. Ruxit
  4. Dripstat

产品调试

发 布周期短了,日志文件变大了,用户请求增多……允许犯错误的余地几乎不存在了。但当错误真的到来时,你需要能够马上解决掉。大规模的生产环境,每天可以从 成百上千个不同的代码处产生无数的错误。虽然有些错误时不重要的,但有些可能对你的应用产生致命的影响,并影响你所接触不到的终端用户。另外,为了鉴别和解决这些错误,你必须依赖于你的日志或是日志管理工具去查看错误的发生,更不用说如何修复它。

有了Takipi,你能够知道最有可能出问题且需要优化的地方,并且能得到怎么取解决每个问题的可行的信息。

为了关注新发布后的危机,Takipi解决了三个主要问题:

1.了解哪些错误最有可能影响你——在生产中发现100%的代码错误,包括JVM异常和记录的错误。使用智能过滤以减少噪音使之专注于最重要的错误。超过90%的Takipi用户报告说,在他们使用的第一天,至少在生产中找到了一个严重的bug。

2、在调试上花更少的时间和精力——Takipi再现了每个错误并显示出代码和导致它产生的变量,甚至可以跨服务器。这消除了手动复制错误的必要,节省了工程时间,显著降低时间。

3. 没有风险的发布——当新的版本中有错误,或是已经解决的错误又重现时,Takipi都会提醒你。

#5:运用Takipi你能很快地解决任何问题,以至于不让你在新的发布之后一无所知。

可选择的工具:

  1. Takipi

从这篇文章之后,Takipi的使用时间扩展到了两个月

100%发现生产中的错误

发现每个错误后面的参数

使大规模调试变得容易

报警和追踪

发 布周期,日志文件,用户请求,零错误……你怎么才能全部跟进呢?你可能认为这一类和其他的重叠了,可能你是对的,但是当所有的这些工具都有他们自己的流水 线时,你可能会意识到自己哪里错了——这将变得很混乱。特别是在各种意想不到的事情都可能发生的新发布后(也就是 整个灾难降临)。

满足这个的事件管理工具之一的就是PagerDuty:它能从监控工具收集报警,创建时间表来协调你的团队,或是通过文本、邮件、短信或是推送通知,把每个报警发给特定的人。

#6:考虑使用一个事件管理系统来处理信息过载。

在这里我们真正喜欢使用的专业工具是Pingdom(也是和Pagerduty的结合)。它所做的很简单而且有用:即对你的站点的响应时间做24*7小时的追踪和告警。它能回答一个看起来微不足道,实则至关重要的问题:从世界各地检测来看,当前的站点可用吗?

系统如上图

另一个角度来解决信息过载的方法,是通过对日志分析来进行错误的跟踪:管理异常和日志错误的智能展现。从多个服务器聚合数据到一个地方,即使你的日志事件或是其他插件来自你的代码。为了更深入地错误追踪,点击 这篇文章可以得到更多的信息。

#7 代码层的错误来源各种各样,在选用追踪工具时,应该给予特别的对待(在我们关注他们的时候就修复一些bug,哈哈)

可供选择的工具:

  1. PagerDuty
  2. Pingdom

总结

我们亲身经历,现代软件开发如何影响发布生命周期,放大如何评估新的快速部署的影响——在你部署之前,你应该完全了解最后更新的影响。从长远来看,任何工具都应该拥有这五个特点:

  1. 缩短发布周期
  2. 增加日志文件
  3. 增大用户请求
  4. 减小错误
  5. 信息的过载

最重要地是,思考一下现在你是怎么解决这些的,哪一个花了你更多的时间。很可能就有一个工具适合解决这个问题。

可能感兴趣的文章

相关 [java 开发 大发] 推荐:

java代码开发规范

- - BlogJava_首页
格式规范:                                                                      .       1、TAB空格的数量. 编辑器上的TAB空格数量统一取值为4.       2、换行, 每行120字符.       3、if语句的嵌套层数3层以内   .

Apache Thrift - java开发详解

- - 编程语言 - ITeye博客
2、编写IDL文件 Hello.thrift. 4、编写实现类、实现Hello.Iface:. 5、编写服务端,发布(阻塞式IO + 多线程处理)服务.      * 阻塞式、多线程处理 .             //设置传输通道,普通通道  .             //使用高密度二进制协议  .

Java开发者在某个重大发布后需要使用的15个工具

- - ImportNew
不像玩僵尸毁灭的场景,也不像辩论大刀对抗猎枪,在Java的生产环境中问题是真实存在的,特别是在一个新的发布之后(有备无患嘛). 更进一步说,比起当时 将编码周期缩短至几周或是几天,甚至一天缩短多次,反而现在更容易陷入麻烦. 为了避免这些麻烦,你需要完全理解新的代码会对你的系统产生什么影响. 怎么去解决这些可能出现的问题呢.

Java 开发 2.0: 使用 Gretty 的超轻量级 Java Web 服务

- 圣斌 - IBM developerWorks 中国 : 文档库
Gretty 是构建 Web 服务超轻量级框架的新学派之一. 构建于极快的 Java NIO API 之上,Gretty 将 Groovy 用作 Web 端点和 Grape 的 Maven 式依赖关系管理的一种域特定语言. 本文介绍如何开始使用 Gretty 来构建和部署 Java Web 服务应用程序.

java web开发 高并发处理

- - 企业架构 - ITeye博客
java web开发 高并发处理. java处理高并发高负载类网站中数据库的设计方法(java教程,java处理大量数据,java高负载数据). 一:高并发高负载类网站关注点之数据库. 没错,首先是数据库,这是大多数应用所面临的首个SPOF. 尤其是Web2.0的应用,数据库的响应是首先要解决的. 一般来说MySQL是最常用的,可能最初是一个mysql主机,当数据增加到100万以上,那么,MySQL的效能急剧下降.

iText 5.4.0 发布,Java 的 PDF 开发包

- - 开源中国社区最新新闻
iText 5.4.0 除了修复很多 bug 之外,主要是侧重于创建结构化的 PDF 文档,当使用 Document, Paragraph, PdfPTable 创建 PDF 时可自动进行标识,标识的 PDF 是更好支持 PDF/UA 和 PDF/A 兼容性的第一步. iText是一个非常著名的能够快速产生PDF文件的Java类库.

Java开发十大必备网站

- - ITeye资讯频道
以下是收集的10个Java开发相关的网站,这些网站质量都很好,它们提供了业界信息以及一些很棒的讲座, 还能解答常见开发过程中遇到的问题、面试问题等. Stackoverflow.com 可能是编程界中最流行的网站了,该网站有成千上万个好问题和答案. 学习API或者编程语言,通常依赖于代码示例,stackoverflow就可以提供大量的代码片段.

Java开发者易犯错误Top10

- - CSDN博客编程语言推荐文章
摘要:在Java中,有些事物如果不了解的话,很容易就会用错,如数组转换为数组列表、元素删除、Hashtable和HashMap、ArrayList和LinkedList、Super和Sub构造函数等,如果这些对你来说是陌生的,你可以在本文中了解它们. 本文总结了Java开发者经常会犯的前十种错误列表.

Java开发框架之日志

- - 后端技术杂谈 | 飒然Hang
日志在应用开发中是一个非常关键的部分. 有经验的工程师能够凭借以往的经验判断出哪里该打印日志、该以何种级别打印日志. 这样就能够在线上发生问题的时候快速定位并解决问题,极大的减少应用的运维成本. 使用控制台输出其实也算日志的一种,在容器中会打印到容器的日志文件中. 但是,控制台输出过于简单,缺乏日志中级别控制、异步、缓冲等特性,因此在开发中要杜绝使用控制台输出作为日志(System.out.println).

[译]Java SE 8 新特性之旅 : Java开发世界的大变动

- - 上善若水 厚德载物
我很自豪的成为了adopt-OpenJDK的一员,像其他专业团队成员一样,但是我只刚加入了8个月,我们一同经历了Java SE 8 的开发、编译、编码、讨论……等等,直到JDK上线. Java SE 8发布于2014年3月18日,现在可供下载使用. 我很高兴发布这一系列“Java SE 8 新特性之旅”,我会写一些例子来简化Java SE 8知识的获取、开发经验、新特性和API,然后.