微服务框架和工具大全

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

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

Netflix开放源码软件(OSS)

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

构建——Nebula

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

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

部署和交付——Spinnaker与 Aminator

  一旦你生成的软件已准备就绪,你会想要将此软件移动到亚马逊网络服务( Amazon Web Services,AWS)EC2中。Aminator使用亚马逊机器映像( Amazon Machine Image, AMI)的形式来创建生成的软件并将其打包成映像文件。 Spinnaker然后将这些 AMI部署到 AWS。 
  Spinnaker是高速并高效地发布代码更改的持续交付平台。 Spinnaker还支持其他云服务,例如 Google Computer Engine和 Cloud Foundry。

你想要将最新的微服务软件部署于类似 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执行实时的服务监控和属性更改操作,并支持并发。

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

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

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

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

业务监控——Atlas

  Atlas是一个业务监控工具,它提供了接近实时的高维时间序列数据的信息。它捕获业务智能,提供目前在系统内发生的情况的概况。它提供内存中的数据存储,这使它能非常快地收集和报告大量的指标。目前,它为 Netflix处理 13亿个指标。 
  Atlas是一个可扩展的工具。这就是为什么它从几年前处理 100万个指标到现在可以处理 13亿个指标的原因。 Atlas系统不仅提供了读取数据方面的可扩展性,还将它作为一部分集成到图形请求中。 
  Atlas使用 Netflix Spectato库记录高维时间序列数据。

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

可靠性监控服务——Simian Army

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

混沌猴子( Chaos Monkey)

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

看守猴子( Janitor Monkey)

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

符合猴子( Conformity Monkey)

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

安全猴子( Security Monkey)

  安全猴子监控策略的更改并对某个 AWS账户上没有安全感的配置进行提醒。安全猴子的主要目的是保证安全性,但它也是用于跟踪潜在问题的有用工具,因为它本质上是一个更改跟踪系统。 
   
  成功的微服务架构可以确保你的系统始终是运行的,并且单个云组件失败不会停止整个系统。Simian Army使用许多服务来实现高可用性。

AWS资源监控——Edda

  在云环境中,没有什么是静态的。例如,虚拟宿主机实例经常发生变化,通常情况下, IP地址可以由各种应用程序重复使用,防火墙或相关的变化也可能发生。 
  Edda是跟踪这些动态的 AWS资源的服务。 Netflix将其命名为 Edda(即北欧神话故事),它记录云管理和部署的故事。Edda使用 AWS API轮询 AWS资源并记录结果。这些记录允许搜索和查看云已经随着时间的推移发生了哪些变化。例如,如果任何 API服务器的主机正在造成任何问题,你需要找出此主机是什么,哪支团队要为它负责。 
  它提供了这些功能:

  • 动态查询:Edda提供 REST API,并且它支持矩阵参数并提供让你仅检索所需的数据的字段选择器。
  • 历史的变化:Edda维护所有 
    AWS资源的历史记录。此信息可帮助你分析资源中断的原因和影响。Edda还可以提供有关资源的当前和历史信息的不同视图。在撰写本文时,它在MongoDB中存储信息。
  • 配置:Edda支持多个配置选项。一般情况下,可以从多个账户和多个区域轮询信息,还可以使用账户的组合和这些账户指向的区域。同样的,它提供AWS、Crawler、 Elector和 MongoDB的不同配置。
  • 如果采用 AWS来承载基于微服务的产品,那么 Edda可用于对 AWS资源进行监控。

主机性能监控——Vector

  Vector是一个静态的 web应用程序,在 web浏览器内运行。它可以用来监控安装了 Performance Co-Pilot(PCP)的主机的性能。Vector支持 PCP 3.10及以上版本。PCP收集各种指标并提供给 Vector。 
  它根据需要提供高分辨率的正确指标。这可以帮助工程师了解系统的行为和正确地解决性能问题。

可帮助你监控远程主机的性能监控工具。

分布式配置管理——Archaius

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

  • 使用动态和类型化的属性。
  • 执行线程安全的配置操作。
  • 使用轮询框架检查属性更改。
  • 在有序的层次结构的配置中使用回调机制。
  • 使用 JConsole检查属性并对其执行操作,因为 Archaius提供了JMX MBean。
  • 当你有一个基于微服务的产品时,需要有一个良好的配置管理工具。Archaius可以帮助在一个分布式的环境中配置不同类型的属性。

Apache Mesos调度器——Fenzo

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

  • 支持长时间运行的服务风格的任务和批处理。
  • 可以基于资源需求自动缩放执行主机集群。
  • 支持插件,可以基于需求创建它们。
  • 可以监控资源分配的故障,允许调试故障根源。

成本和云利用率——Ice

  Ice从成本和使用的角度提供云资源的全景图。它提供调配云资源分配到不同团队的最新信息,为云计算资源的最优利用增加价值。 
  Ice是一个圣杯项目。用户与 Ice UI组件交互,后者显示通过 Ice阅读器组件发送的信息。阅读器从 Ice处理器组件所生成的数据中提取信息。 Ice处理器组件从详细的云计费文件中读取数据信息,并将它转换成 Ice阅读器组件可读的数据。

其他安全工具——Scumblr和 FIDO

  除了Security Monkey,Netflix开放源码软件也使用 Scumblr和完全集成的防御操作(Fully Integrated Defense Operation,FIDO)工具。

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

Scumblr

  Scumblr是一个基于 Ruby on Rails的 web应用程序,它允许你执行定期搜索并对识别的结果执行存储/采取行动。基本上,它会利用全互联网有针对性的搜索来收集情报,从而揭露特定安全问题用于调查。 
  Scumblr利用可以流程化的宝贵信息,允许对不同类型的结果设置灵活的工作流。 Scumblr利用称为 Search Providers(搜索提供程序)的插件进行搜索,它会检查类似以下的异常。因为它是可扩展的,可以根据需要添加任意多的检查项目:

  • 泄露的凭据
  • 黑客漏洞/讨论
  • 攻击讨论
  • 社交媒体上的安全相关讨论

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

  FIDO是一种安全业务流程框架,用于分析事件和自动化事件响应。它通过评价、评估和应对恶意软件来使事件的响应过程变得自动化。FIDO的主要目的是处理评估来自当今安全栈的威胁和它们所生成的大量警报所需要的大量手动工作。 
  作为业务流程平台,FIDO通过大幅减少检测、通知和应对网络攻击所需要的手动工作,可以更高效、更准确地使用现有的安全工具。 
  本文选自《Java微服务》,点此链接可在博文视点官网查看。 
                    
  想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。 
                      
  

时间: 2024-11-05 15:50:36

微服务框架和工具大全的相关文章

微服务框架Lagom介绍之一

背景 Lagom是JAVA系下响应式 微服务框架,在阅读本文之前请先阅读微服务架构设计,Lagom与其他微服务框架相比,与众不同的特性包括: 目前,大多数已有的微服务框架关注于简化单个微服务的构建--这是比较容易的一部分内容.Lagom将其扩展到了微服务所构成的系统,这是大型的系统--也是较为困难的一部分内容,因为在这里我们会面临到分布式系统的复杂性. 通信默认是异步的--基于消息和流--但是,如果需要的话,也考虑到了使用其他的方案,如同步的REST. 持久化默认是基于事件的--使用事件溯源Ev

Java微服务框架一览

引言:本文首先简单介绍了微服务的概念以及使用微服务所能带来的优势,然后结合实例介绍了几个常见的Java微服务框架. 微服务在开发领域的应用越来越广泛,因为开发人员致力于创建更大.更复杂的应用程序,而这些应用程序作为微小服务的组合能够更好地得以开发和管理.这些微小的服务可以组合在一起工作,并实现更大.应用更广泛的功能.现在出现了很多的工具来满足使用逐段法而不是一次性地设计和构建应用程序的所有需求.今天,我们来看一下什么是微服务.使用微服务的好处,以及几个代码示例. 微服务是什么? 微服务是一种面向

微服务框架学习收录链接(包括服务搭建中用到mybatis-plus等)

1.基于Spring Boot和Spring Cloud实现微服务架构学习(一)-Spring框架介绍 https://blog.csdn.net/zeb_perfect/article/details/51945350 2.Spring Cloud生态圈简介 https://blog.csdn.net/rickiyeat/article/details/59172258 3.标题:Spring Boot 快速搭建微服务框架详细教程 http://www.jb51.net/article/123

【干货】手动搭建一套可自动化构建的微服务框架

如何阅读 本文篇幅较长,我花了两天的时间完成,大约需要半小时阅读. 本文分为理论篇和实践篇,由于代码在手机端展示并不理想,建议大家收藏之后在PC端阅读.实践篇边动手边阅读更有助于理解. 在阅读的同时,也麻烦各位大佬多多分享! 本文你将学到什么? 本文将以原理+实战的方式,首先对"微服务"相关的概念进行知识点扫盲,然后开始手把手教你搭建这一整套的微服务系统. 这套微服务框架能干啥? 这套系统搭建完之后,那可就厉害了: 微服务架构你的整个应用程序将会被拆分成一个个功能独立的子系统,独立运行

日调度万亿次,微服务框架TSF大规模应用——云+未来峰会开发者专场回顾

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 演讲者:张浩 腾讯云中间件产品负责人 背景:众多开发者中,一定经历类似的甜蜜烦恼,就是当线上业务规模越来越大,系统分支发展越来越多的时候,初期上线的成就感很快就会被系统间数据不兼容.不通畅,折磨得精疲力尽,每次模块更新都是牵一发而动全身.腾讯云微服务框架TSF就可以为大家解决数据孤岛以及重复造轮子的问题,提供了简洁易用的代码入口,将复杂的底层网络.服务器部署接口化,使开发者更易用. 本文整理自腾讯云中间件产品负责人张浩在腾讯云云+未来峰

微服务框架-SpringCloud简介

前面一篇文章谈到微服务基础框架,而Netflix的多个开源组件一起正好可以提供完整的分布式微服务基础架构环境,而对于Spring Cloud正是对Netflix的多个开源组件进一步的封装而成,同时又实现了和云端平台,和Spring Boot开发框架很好的集成. Spring Cloud是一个相对比较新的微服务框架,今年(2016)才推出1.0的release版本. 虽然Spring Cloud时间最短, 但是相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决方案.

AG-Admin微服务框架入门

AG-Admin微服务框架入门  @qq群:一群: 837736451  二群 169824183 一 概要介绍 AG-Admin后台地址:https://gitee.com/minull/ace-security AG-Admin前端地址:https://gitee.com/minull/AG-Admin-v2.0 要想玩儿转spring cloud必须进行一大波儿的学习哦,先有个心理准备. AG-Admin基于Spring Cloud微服务化开发平台,具有统一授权.认证微服务云框架.其中包含

一个微服务框架的细节

KingWorks微服务系列文章: (一)一个微服务框架的故事 (二)一个微服务框架的情节 从KingWorks-0.0.0版本(想象版本)开始,我就知道我踏上了一条"不归的自主研发路线",到目前的KingWorks-3.0.0,我始终坚守着这一份执着.曾经想过放弃,因为它不是"开源主流":曾经想过放弃,因为它很费力:曾经想过放弃,因为为了让它生命力不断,我需要付出的精力比专研几个新框架还要累得累.我坚守了,是因为它的简单:我坚守了,是因为同事们的喜欢:我坚守了,是

微服务框架-Spring Cloud简介(一)

Spring Cloud是一个微服务框架,相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决方案. Spring Cloud对微服务基础框架Netflix的多个开源组件进行了封装,同时又实现了和云端平台以及和Spring Boot开发框架的集成. Spring Cloud 为开发者提供了在分布式系统(配置管理,服务发现,熔断,路由,微代理,控制总线,一次性token,全居琐,leader选举,分布式session,集群状态)中快速构建的工具,使用Spring Clo