微服务框架和工具大全

管理员账号

2017-01-16

小编说:不去重新发明轮子总是更好的。本文探讨了14个已经可用并能提供使微服务的开发和部署更容易的平台、框架和功能。本文还补充了每个工具将如何有助于建立良好的微服务架构的简要概述。本文选自《Java微服务》。

在《Java微服务》一书中,我们使用SpringCloud,它提供使微服务非常容易地开发所需的所有工具和平台。SpringCloud使用Netflix开放源码软件(OSS)。让我们探讨NetflixOSS——一个完整的软件包。

Netflix开放源码软件(OSS)

Netflix开放源码软件中心是基于Java的微服务开放源码项目最流行和最广泛使用的开放源码软件。世界上最成功的视频租赁服务依赖于它。Netflix已经有超过4000万用户,他们在全球各地使用其服务。Netflix是一个纯粹的基于云平台的解决方案,在微服务架构的基础上开发。可以说,每当有人谈到微服务时,Netflix都是进入你脑海的第一个名字。让我们讨论它提供的各种工具。在开发示例OTRS应用程序时,我们已经讨论了其中的很多工具。然而,有几个工具我们还未探讨过。在这里,我们将只对每个工具进行概述,而不是详细讲解。这将给你带来微服务架构的实际特点和它在云平台中使用的总体思路。

构建——Nebula

NetflixNebula是一种使你更容易使用Gradle(类似Maven的构建工具)来生成微服务的Gradle插件集合。对于我们的示例项目,由于我们已使用了Maven,因此我们没有机会在本书中详细探讨Nebula。然而,研究它会很有趣。对于开发人员来说,最重要的Nebula功能是消除Gradle生成文件中的许多样板代码,这使得开发人员能够把重点放在编码上面。

有一个很好的构建环境,尤其是CI/CD(持续集成和持续部署)是微服务开发和与敏捷开发保持一致必备的。NetflixNebula使你的构建过程更轻松、更高效。

部署和交付——Spinnaker与Aminator

一旦你生成的软件已准备就绪,你会想要将此软件移动到亚马逊网络服务(AmazonWebServices,AWS)EC2中。Aminator使用亚马逊机器映像(AmazonMachineImage,AMI)的形式来创建生成的软件并将其打包成映像文件。Spinnaker然后将这些AMI部署到AWS。

Spinnaker是高速并高效地发布代码更改的持续交付平台。Spinnaker还支持其他云服务,例如GoogleComputerEngine和CloudFoundry。

你想要将最新的微服务软件部署于类似EC2的云环境中,Spinnaker和Aminator可以帮助你自动地完成这件事。

服务注册和发现——Eureka

正如我们已在本书中探讨的,Eureka提供了负责微服务注册和发现的服务。最重要的是,Eureka也用于中间层(承载不同的微服务的进程)负载均衡。Netflix也使用Eureka以及其他工具,像Cassandra或memcached,以提高其整体可用性。

服务注册和发现是微服务架构所必备的。Eureka的用途就是这个。请参阅《Java微服务》第4章获取有关Eureka的详细信息。

服务沟通——Ribbon

如果没有进程间或服务间的通信,微服务架构就没有用。功能区应用程序提供该功能。Ribbon与Eureka结合实现负载均衡,与Hystrix结合实现容错或电路断路器操作。

除HTTP之外,Ribbon还支持TCP和UDP协议。它对这些协议同时提供了异步和反应式模型的支持,它还提供缓存和批处理的功能。

因为你的项目中将会有很多微服务,你需要一种使用进程间或服务间通信的方法来处理信息。Netflix公司为此提供了Ribbon工具。

电路断路器——Hystrix

Hystrix工具用来执行电路断路器操作,也就是,容忍延迟和容错。因此,Hystrix会停止连锁故障。Hystrix执行实时的服务监控和属性更改操作,并支持并发。

电路断路器或容错,是用于任何项目,包括微服务的一个重要概念。一个微服务的故障不应停止你的整个系统;NetflixHystrix的任务是防止这一点,并在出故障时,向用户提供有意义的信息。

边缘(代理)服务器——Zuul

Zuul是边缘服务器或代理服务器,它用来为外部应用程序如UI客户端、Android/iOS应用程序或任何产品或服务提供的第三方使用者的API发出的请求提供服务。从概念上讲,它是一扇面向外部应用程序的门。
Zuul允许动态路由和监控请求。它还执行安全操作,如身份验证。可以确定每个资源的身份验证要求,并拒绝任何不能满足这些要求的请求。

你需要为微服务提供边缘服务器或API网关。NetflixZuul提供此功能,请参阅《Java微服务》第5章获取详细信息。

业务监控——Atlas

Atlas是一个业务监控工具,它提供了接近实时的高维时间序列数据的信息。它捕获业务智能,提供目前在系统内发生的情况的概况。它提供内存中的数据存储,这使它能非常快地收集和报告大量的指标。目前,它为Netflix处理13亿个指标。

Atlas是一个可扩展的工具。这就是为什么它从几年前处理100万个指标到现在可以处理13亿个指标的原因。Atlas系统不仅提供了读取数据方面的可扩展性,还将它作为一部分集成到图形请求中。
Atlas使用NetflixSpectato库记录高维时间序列数据。

一旦你在云环境中部署微服务,你就需要有一个监控系统来跟踪和监控所有微服务。NetflixAtlas为你做这份工作。

可靠性监控服务——SimianArmy

在云环境中,没有单个的组件可以保证100%正常运行时间。因此,成功的微服务架构要求,使整个系统在单个云组件出现故障的情况下可用。Netflix公司开发了一个叫SimianArmy(猿猴军队)的工具,以避免系统故障。SimianArmy保证云环境的安全、可靠和高可用性。为了实现高可用性和安全性,它使用各种服务(猴子)在云中产生各类故障,检测异常情况并测试云在这些挑战下的生存能力。它使用取自Netflix博客的以下服务(猴子):

•••混沌猴子(ChaosMonkey):混沌猴子是一种服务,它确定系统组并随机终止某个组中的一个系统。这个服务以受控制的时间和时间间隔运作。混沌猴子只在营业时间运行,它希望工程师将收到警报并能够做出反应。

•••看守猴子(JanitorMonkey):看守猴子是一种在AWS云中运行的服务,它寻找可以清理的未使用的资源,它可以扩展用于其他云提供商和云资源。服务的时间表是可配置的。看守猴子通过对某个资源应用一组规则,确定它是否应当成为被清理的候选者。如果任何规则确定某资源是被清理的候选者,看守猴子就对此资源做标记,并安排时间去清理它。特殊情况下,当你想要把未使用的资源保留更长的时间,在看守猴子删除资源前,资源的所有者将在清理时间前几天收到通知,天数是可配置的。

•••符合猴子(ConformityMonkey):是一种在AWS云中运行的服务,它寻找不符合最佳做法的预定义规则的实例。它可以扩展来用于其他云提供商和云资源。这个服务的时间表是可配置的。如果确定该实例不符合任何一条规则,猴子就向实例的所有者发送电子邮件通知。可能在有的例外情况下,对于某些应用程序要忽略关于符合特定规则的警告。

•••安全猴子(SecurityMonkey):安全猴子监控策略的更改并对某个AWS账户上没有安全感的配置进行提醒。安全猴子的主要目的是保证安全性,但它也是用于跟踪潜在问题的有用工具,因为它本质上是一个更改跟踪系统。

•••成功的微服务架构可以确保你的系统始终是运行的,并且单个云组件失败不会停止整个系统。SimianArmy使用许多服务来实现高可用性。

AWS资源监控——Edda

在云环境中,没有什么是静态的。例如,虚拟宿主机实例经常发生变化,通常情况下,IP地址可以由各种应用程序重复使用,防火墙或相关的变化也可能发生。

Edda是跟踪这些动态的AWS资源的服务。Netflix将其命名为Edda(即北欧神话故事),它记录云管理和部署的故事。Edda使用AWSAPI轮询AWS资源并记录结果。这些记录允许搜索和查看云已经随着时间的推移发生了哪些变化。例如,如果任何API服务器的主机正在造成任何问题,你需要找出此主机是什么,哪支团队要为它负责。

它提供了这些功能:

•••动态查询:Edda提供RESTAPI,并且它支持矩阵参数并提供让你仅检索所需的数据的字段选择器。

•••历史的变化:Edda维护所有AWS资源的历史记录。此信息可帮助你分析资源中断的原因和影响。Edda还可以提供有关资源的当前和历史信息的不同视图。在撰写本文时,它在MongoDB中存储信息。

•••配置:Edda支持多个配置选项。一般情况下,可以从多个账户和多个区域轮询信息,还可以使用账户的组合和这些账户指向的区域。同样的,它提供AWS、Crawler、Elector和MongoDB的不同配置。

•••如果采用AWS来承载基于微服务的产品,那么Edda可用于对AWS资源进行监控。

主机性能监控——Vector

Vector是一个静态的web应用程序,在web浏览器内运行。它可以用来监控安装了PerformanceCo-Pilot(PCP)的主机的性能。Vector支持PCP3.10及以上版本。PCP收集各种指标并提供给Vector。

它根据需要提供高分辨率的正确指标。这可以帮助工程师了解系统的行为和正确地解决性能问题。
可帮助你监控远程主机的性能监控工具。

分布式配置管理——Archaius

Archaius是一个分布式的配置管理工具,它允许你执行以下操作:

•••使用动态和类型化的属性。

•••执行线程安全的配置操作。

•••使用轮询框架检查属性更改。

•••在有序的层次结构的配置中使用回调机制。

•••使用JConsole检查属性并对其执行操作,因为Archaius提供了JMXMBean。

•••当你有一个基于微服务的产品时,需要有一个良好的配置管理工具。Archaius可以帮助在一个分布式的环境中配置不同类型的属性。

ApacheMesos调度器——Fenzo

Fenzo是用Java编写的用于ApacheMesos框架的一个调度程序库。ApacheMesos框架查找匹配的资源,并将其分配到挂起的任务上。其主要特点如下:

•••支持长时间运行的服务风格的任务和批处理。

•••可以基于资源需求自动缩放执行主机集群。

•••支持插件,可以基于需求创建它们。

•••可以监控资源分配的故障,允许调试故障根源。

成本和云利用率——Ice

Ice从成本和使用的角度提供云资源的全景图。它提供调配云资源分配到不同团队的最新信息,为云计算资源的最优利用增加价值。

Ice是一个圣杯项目。用户与IceUI组件交互,后者显示通过Ice阅读器组件发送的信息。阅读器从Ice处理器组件所生成的数据中提取信息。Ice处理器组件从详细的云计费文件中读取数据信息,并将它转换成Ice阅读器组件可读的数据。

其他安全工具——Scumblr和FIDO

除了SecurityMonkey,Netflix开放源码软件也使用Scumblr和完全集成的防御操作(FullyIntegratedDefenseOperation,FIDO)工具。

为了跟踪你的微服务,并保护它不受经常的威胁和攻击,你需要以自动化的方式来对你的微服务进行保护和监控。NetflixScumblr和FIDO为你做这份工作。

Scumblr

Scumblr是一个基于RubyonRails的web应用程序,它允许你执行定期搜索并对识别的结果执行存储/采取行动。基本上,它会利用全互联网有针对性的搜索来收集情报,从而揭露特定安全问题用于调查。

Scumblr利用可以流程化的宝贵信息,允许对不同类型的结果设置灵活的工作流。Scumblr利用称为SearchProviders(搜索提供程序)的插件进行搜索,它会检查类似以下的异常。因为它是可扩展的,可以根据需要添加任意多的检查项目:

•••泄露的凭据

•••黑客漏洞/讨论

•••攻击讨论

•••社交媒体上的安全相关讨论

完全集成的防御操作(FIDO)

FIDO是一种安全业务流程框架,用于分析事件和自动化事件响应。它通过评价、评估和应对恶意软件来使事件的响应过程变得自动化。FIDO的主要目的是处理评估来自当今安全栈的威胁和它们所生成的大量警报所需要的大量手动工作。

作为业务流程平台,FIDO通过大幅减少检测、通知和应对网络攻击所需要的手动工作,可以更高效、更准确地使用现有的安全工具。

读者评论

相关博文

  • 社区使用反馈专区

    陈晓猛 2016-10-04

    尊敬的博文视点用户您好: 欢迎您访问本站,您在本站点访问过程中遇到任何问题,均可以在本页留言,我们会根据您的意见和建议,对网站进行不断的优化和改进,给您带来更好的访问体验! 同时,您被采纳的意见和建议,管理员也会赠送您相应的积分...

    陈晓猛 2016-10-04
    3413 571 3 6
  • 迎战“双12”!《Unity3D实战核心技术详解》独家预售开启!

    陈晓猛 2016-12-05

    时隔一周,让大家时刻挂念的《Unity3D实战核心技术详解》终于开放预售啦! 这本书不仅满足了很多年轻人的学习欲望,并且与实际开发相结合,能够解决工作中真实遇到的问题。预售期间优惠多多,实在不容错过! Unity 3D实战核心技术详解 ...

    陈晓猛 2016-12-05
    2236 34 0 1
  • czk 2017-07-29
    2575 21 0 0