精华内容
下载资源
问答
  • 本文讲的是容器微服务在Hadoop生态系统找到一席之地【编者的话】容器微服务凭借构架上的灵活优势,已经杀进了Hadoop生态系统。分别位于德国和美国两家公司的技术高管对此提出了自己的观点。最近关于大数据的...
    本文讲的是容器和微服务在Hadoop生态系统中找到一席之地【编者的话】容器和微服务凭借构架上的灵活优势,已经杀进了Hadoop生态系统。分别位于德国和美国两家公司的技术高管对此提出了自己的观点。

    最近关于大数据的实践多是基于裸机的,这意味着Hadoop已经在非虚拟服务器上被广为实现。随着容器和微服务在应用服务界越来越受欢迎,这个现状也可能会发生改变。

    容器和微服务都可将单层应用(monolithic application)的代码拆分为更为精细的部件,简化了开发和测试,也是部署复杂应用和代码重用的关键。

    虽然刚开始将这种技术应用于大数据,但在数据流方面,微服务已经显示出良好的潜力。欧洲电商公司一位技术经理表示,微服务可以简化部署和代码重用。

    Otto GmbH是德国汉堡一家多渠道零售商,它的商业智能系统的首席平台架构师Rupert Steffner表示,使用微服务,“可以精简当前的工作”,进一步说,对于某些类型的应用,如果不使用微服务,“是不明智的做法,因为你是在不停重复同样的功能。”

    Steffner所说的应用类型即对在线零售网站进行实时分析工作的多功能人工智能(AI)机器人程序。Otto融合了微服务、Docker容器和流处理技术来支持这些AI机器人程序。

    容器和微服务,厉害了

    云计算是将Hadoop、Spark和其他大数据技术推向虚拟化、容器和微服务的动力之一。还有许多基础设施需要构建,但目前已经有公司开始用技术简化这个过程。

    “以前Hadoop多运行在裸机上,后来在虚拟机上也可以了;比如亚马逊云、Azure云和OpenStack。而现在,又要转移到容器上去。”Tom Phelan,BlueData软件公司的联合创始人和首席架构师,该公司是Hadoop或Spark集群自动生成平台制造商。

    “以前,Hadoop集群在裸机上的表现更好,但这种情况正在改变,”Tom Phelan说。他承认容器还需要进一步成熟,并提到Hadoop最初的设计并不是微服务类型的架构。位于加州圣克拉拉的BlueData最近更新了软件以增强容器支持,推出Hadoop集群Kerberos自动设置和Linux特权访问管理工具。

    微服务的另两个驱动因素是敏捷性和流,Hadoop发行版厂商MapR Technologies公司的MapR数据和应用方面的高级副总裁,JackNorris表示,使用机器人程序的顾客需要快速适应数据和机器学习模型。

    对“事件驱动”型构架的应用来说尤为如此,因为这样的构架包含越来越多的数据流组件。Norris说,随着Hadoop和Spark应用流变得越来越复杂,更新也变得越来越难了。但是,由于微服务专注于数据管道事件,这会给发展带来更多的灵活性。这也改变了之前 Hadoop的发展方式。

    “我们认为有必要开启更多更广的应用,”Norris说。同时,他承诺MapR会继续支持当前的单层应用。

    上个月,MapR试图进一步在大数据方面推动微服务的进展,即尝试用微服务对应用做版本管理,并将微服务用于机器学习模型的A/B测试。另外,据Norris说,有新的参考构架可以用来指导开发者通过微服务融合流数据和实时分析应用。

    AI机器人程序盯着空空的购物车

    随着大数据处理工作成为数据流组件更加复杂的集合,微服务拓宽了应用的广度。Otto公司的Steffner表示,微服务提供了典型的“分而治之”的思路来满足构架上的需要。

    Steffner曾在上个月于纽约举办的Strata +Hadoop2016世界大会上发言,他说,Otto公司的数据构架中,每个AI机器人程序都处理一个特定的任务。例如,某个AI机器人程序专门寻找欺诈性交易,另一个则使用分析模型来投放实时广告,还有一个AI机器人程序专门检查空购物车,并在用户没有购买任何商品就要离开网站时放出优惠。

    Steffner说,这些工作是通过基于Docker的微服务架构完成的,当时是2015年的十月份,而在两年之前,在常规的大数据平台上是做不到这一点的。

    Steffner还说,Docker容器十分契合机器人程序的概念。Otto公司在后端安装了一系列的开源的流处理引擎,包括 Storm Spark Streaming Flink  和 Ignite 。在目前的环境下,Ignite(由GridGain 系统公司原创的内存数据结构技术)承担了大部分的实施处理工作。

    原文链接:Containers and microservices find home in Hadoop ecosystem(翻译:马远征)

    原文发布时间为:2016-11-09

    本文作者:马远征

    本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

    原文标题:容器和微服务在Hadoop生态系统中找到一席之地

    展开全文
  • 容器微服务入门

    2020-06-11 23:28:24
    了解实现和监视容器微服务的最佳实践,以及需要新的应用程序监视解决方案时的操作。 强大的应用程序监视功能可领先微服务容器扩散 容器微服务越来越受欢迎,为什么不呢? 它们为开发人员每天执行的...

    通过从应用程序中学习企业APM产品,发现更快,更高效的性能监控。 参加AppDynamics APM导览!

    了解实现和监视容器和微服务的最佳实践,以及在需要新的应用程序监视解决方案时的操作。

    强大的应用程序监视功能可领先微服务和容器扩散

    容器和微服务越来越受欢迎,为什么不呢? 它们为开发人员每天执行的许多任务提供了敏捷性,速度和资源效率。 它们在编码和相互依赖性方面很轻便,这使得将应用程序交付给应用程序用户或将应用程序从旧系统迁移到云服务器变得更加容易,并且耗时更少。

    什么是容器和微服务?

    容器是虚拟化操作系统中的隔离工作负载环境。 它们可以加快运行速度,从而加快了工作负载流程和应用程序的交付; 并且它们为应用程序可移植性挑战提供了解决方案,因为它们与物理机上的软件无关。

    微服务是一种轻量级且范围有限的软件体系结构。 单功能应用程序包含小型独立的单元,这些单元通过不依赖特定语言的API一起工作。 微服务架构比传统的应用程序架构更快,更敏捷。

    监控的重要性

    为了使容器和微服务在采用时最有效和最具影响力,技术领导者必须制定计划,以了解如何在容器和微服务中进行监视和编码。 他们还必须了解开发人员将如何使用它们。

    从根本上讲,应规划,监视和衡量企业技术堆栈的所有部分。 容器和微服务也不例外。 企业应该监视它们,以根据计划的策略管理其使用,以便可以识别,记录和共享最佳实践标准(即安全协议,共享权限,何时使用和不使用等)。 还必须监视容器和微服务,以确保数字产品和资产的质量和安全性。

    为此,组织需要强大的应用程序监视功能,以提供对容器和微服务的完全可见性。 以及对它们的使用方式及其对目标的影响的了解,例如更高的生产率或更快的上市时间。

    评估应用程序监视功能

    企业在评估其应用程序监视功能时应询问的一些问题是:

    • 我们如何确保开发和运营团队一起工作,以根据企业需求使用容器和微服务?
    • 我们是否将构建自己的系统来管理容器分配,集群等? 还是应该使用需要监控的第三方供应商?
    • 我们是否能够利用当前的应用程序性能管理(APM)占用空间来监视容器以及组成微服务的组件中的代码?

    我们是否需要更强大的APM来有效地管理容器和微服务? 我们如何确定满足我们需求的最佳解决方案? 要回答这些问题并了解有关容器和微服务的更多信息,以及如何有效使用和管理它们,请阅读《容器和微服务入门:企业领导者迷你指南》

    这本迷你电子书扩展了此博客中讨论的主题,并包括用于选择有效APM解决方案的8点计划。

    通过从应用程序中学习企业APM产品,发现更快,更高效的性能监控。 参加AppDynamics APM导览!

    翻译自: https://www.javacodegeeks.com/2018/05/getting-started-with-containers-and-microservices.html

    展开全文
  • 本系列的 第1部分,我讨论了微服务的确切含义以及它们与传统构建的系统(整体式)的区别。 第二部分是关于Linux容器的功能-它们如何彻底改变软件开发并推动微服务向整个行业转移。 将基于容器的基础结构用于...

    在本系列的 第1部分中,我讨论了微服务的确切含义以及它们与传统构建的系统(整体式)的区别。 第二部分是关于Linux容器的功能-它们如何彻底改变软件开发并推动微服务向整个行业转移。 在将基于容器的基础结构用于基于微服务的应用程序时,我将介绍三个关键的概念,这些概念对于您至关重要:

    • 记录和监控
    • 零停机连续交付
    • 动态服务注册表

    我将首先概述容器,容器管理器以及容器与微服务的关系。

    容器和微服务:完美的一对

    除非您对云技术和本机应用程序开发完全不熟悉,否则您可能听说过Linux容器和基于容器的项目在过去几年中引起了轰动。 但是,如果您没有,请考虑将Linux容器看作是轻量级虚拟机,可以更灵活地使用,更快速地集成并且更容易地分发。 负责这项工作的项目之一是Docker。 自2012年推出以来,Docker团队(现在是公司)提供了一种通过Linux容器构建,打包和分发云原生应用程序的简单方法。

    容器与虚拟机有何不同? 每个虚拟机(如下图左侧所示)运行自己的来宾操作系统实例,并包含自己的库和二进制文件。 容器(如右图所示)是隔离的,它们共享底层的主机OS和库,同时仅打包必要的应用程序二进制文件。

    虚拟机和Linux容器之间技术差异的概念视图

    许多行业领导者正在迁移到基于容器的基础架构,无论是在云中还是在内部部署中,以获取极大的收益。

    容器在Linux系统上作为最小的资源集运行,并且打包的应用程序通常不超过几百兆字节。 基于虚拟机的应用程序通常至少要大三到四个数量级(数十个千兆字节)。 您可以轻松地看到容器如何变得更小更快 ,如何适应微服务范式- 第1部分中的两个微服务原则。

    许多行业领导者正在迁移到基于容器的基础架构,无论是在云中还是在内部部署中,以获取最大收益。 一项主要收益是,Docker和其他类似的Linux容器技术易于集成到持续集成和持续交付管道中:根据最近一项自筹资金的Docker研究,平均而言,Docker用户的软件发布频率是后者的七倍。 像Gilt Groupe这样的公司已经采用了微服务和容器化基础架构,有时每天发送软件多达100次。 快速推送代码,自动重建最小尺寸的Docker映像以及通过通用代码库管理大量已部署映像的能力可通过公司的交付管道以惊人的速度运行。

    Docker容器的另一个好处之一就是这些打包应用程序的可移植性,即Docker映像。 Docker映像可以在环境之间和通过构建管道无缝移动。 例如,BBC新闻(英国广播公司的一个部门)表示,其持续集成工作在基于Docker的基础架构中的运行速度提高了60%以上。 在整个交付管道中移动相同代码的能力-最大限度地减少了每个阶段对软件配置的需求,并且在整个过程中具有可预测的硬件资源需求-从而比以往任何时候都更快地加快了开发,测试和生产的速度。 由于每个Docker映像中的系统组件都是模块化的,因此公司能够看到这些效率的提高。 您不需要每次都配置软件。 您只需启动一个容器实例,就可以使用了。

    Docker是一个用于代码的运输容器系统,可简化通过Linux容器进行软件开发和交付的过程。 Docker充当引擎,使任何有效负载都可以封装为轻巧,可移植的自足容器。 这样的容器可以使用标准操作进行操作,并且可以在几乎任何硬件平台上一致地运行。

    概述Docker如何简化通过Linux容器的软件开发和交付。

    如果你是新来的容器和码头工人,看到相关信息的链接,对一般泊坞窗和Linux容器伟大的介绍材料。 如果您具有Docker的丰富经验并想在云中亲身体验Docker,那么IBM Containers for Bluemix是一项企业级容器服务,您可以立即免费开始使用。 您将拥有自己的私有注册表来存储所有图像,访问受支持的中间件的IBM公共注册表,托管的交付管道集成以及对150多种Bluemix™服务的访问。 您可以使应用程序在Docker容器中运行的速度比以往更快。

    更快,更小:容器作为软件开发的纳米机器人

    当您开始看到容器为什么对微服务如此重要时(作为体系结构样式的关键启用技术之一),您还可以开始看到容器的管理同样重要。 如您从第1部分所知,我们没有扩大规模,而是在微服务中扩大规模。 无需向微服务运行时添加更多的RAM,我们只需获得另一种相同类型的微服务运行时。 需要更多RAM? 获取第三个实例。 这种方法仅适用于每个具有一个容器实例的几个服务,但是正如任何具有计算机技能和大家庭的人都知道的那样,当您远程管理数十台服务器时,它会很快失去控制。

    考虑一下您将需要多快的时间来管理100多个个体实例。 如果您从构成应用程序的少量微服务开始(例如五个或六个),则每个微服务应至少具有三个支持每个微服务的容器实例。 因此,马上就可以使用18个容器实例。 假设您添加了另一个微服务,或者您的应用程序确实成功,并且某些服务需要扩展到5到10个容器实例。 在美好的一天,您可以轻松地访问100多个容器实例进行管理。

    幸运的是,许多开源项目都可以满足这一确切需求。 例如, Kubernetes阿帕奇Mesos车队可以很容易地从单个控制台或命令行管理数以千计的容器实例,采用基于基础设施的领域特定语言。

    该管理概念紧密地加强了第1部分中的“牛与宠物”的概念。 这个想法是,我们通过持续集成/持续交付过程部署的所有容器都是不可变的。 部署它们后,您将无法更改它们。 相反,如果您需要更改或更新,请使用已应用正确的更新来启动一个新的容器集群,并拆除旧的容器。 管理1000头牛比管理1000头宠物要容易得多。 不要误会我的意思:我们都喜欢我们的宠物,但是如果您想快速创新并为您的客户创造价值,并为您的业务带来收益,那么您将无法花费所有的时间将每只宠物全部饲养所需的温柔爱心护理。 诸如Kubernetes,Apache Mesos和Fleet之类的项目,以及诸如IBM Containers之类的托管容器服务,都可以集成您的交付管道和图像注册表,以快速,轻松地管理基础设施的各个阶段,成为高效率的牛。

    顺便说一句,应该注意的是,尽管某些容器服务仍将虚拟机用作Docker主机,但仍应将其视为牛。 这些虚拟机在资源和​​集成管理功能方面更加强大,但是由于它们由基于容器的工作负载的需求动态管理,因此仍被普遍认为是牛。

    微服务架构:您最好的借口,而不是打W鼠

    到目前为止,我已经讨论了为什么更多的容器更好,以及如何大规模处理通用基础架构。 既然您已经适应了开发容器并与宠物道别的概念,那么您就需要开始考虑开发应用程序并将其投入生产。

    这使我了解到对基于微服务的应用程序开发至关重要的三个关键元素:

    • 记录和监控
    • 零停机连续交付
    • 动态服务注册表

    您想从一开始就考虑所有这些功能,但不必立即解决它们。

    当我讨论这些功能时,您还将看到为什么集成的微服务结构(例如Bluemix及其相关服务)使管理微服务体系结构变得如此容易。

    记录和监控

    如果您为应用程序和服务提供生产级支持,则第一个问题应该始终是:“出问题时我该怎么办?” 注意,在该问题中甚至没有暗示“ if”。 组件将发生故障,版本将发生变化,第三方服务将中断。 您如何才能保持一定的卫生水平以及用户所需的正常运行时间? 这是第一个问题。

    如前所述,您希望容器是不可变的。 因此,大多数IT组织不提供对容器实例的系统级访问-没有SSH,没有控制台,什么也没有。 那么,您应该如何知道无法更改的黑匣子内部发生了什么? 这是第二个问题。

    幸运的是,这个问题已经通过ELK堆栈的概念( ElasticsearchLogStashKibana)解决了

    ELK堆栈的外观的直观表示,数据从LogStash到Elasticsearch到Kibana。

    这三个独立的组件提供了汇总日志,通过汇总日志搜索自由格式以及基于日志和跨平台监视的活动创建和共享仪表板的功能。 这是一项强大的功能-比登录到单台计算机并运行sedgrepawk的sysadmin工具箱要好得多。 您具有对所有日志的中央存储库的全功能访问权限。 您可以关联系统和微服务之间的事件,因为通常会看到事件和ID在系统中传播并遇到类似的问题。

    无论是在云中还是本地运行,您都可以通过多种方式与ELK堆栈集成:通过托管服务,开放源代码变体以及通常作为平台即服务产品内置的选件-例如IBM Containers 。 在Bluemix上的容器运行时内部,您可以访问功能齐全的多租户ELK堆栈,该堆栈会自动从基于Docker容器的运行时接收日志,为您提供对这些运行时事件的可见性和可搜索性,同时还为您提供了基于Kibana的预配置仪表板开箱即用。 如果您想开始使用容器,那么这是一项关键功能,它使IBM Containers成为基于容器的微服务的绝佳选择。

    零停机连续交付

    既然您已经放心了,您将了解天空开始下降时的处理方式(当然,您希望它永远不会发生),您可以继续快速部署所有惊人的应用程序更新。 考虑到一些大型公司每周要部署数十,数百或数千次应用程序,那么您就不得不考虑停机时间。 当然,这些公司每次推出新版本时都不会出现应用程序中断的情况;如果这样做,他们永远都不会崩溃。

    这些公司已经掌握了零停机时间部署。 这可以被称为许多事物,通常具有从红黑到蓝绿等各种丰富多彩的变体,但是它们都归结为相同的原理:无论如何,即使通过大量更新,您的应用程序始终可用,因为计划内停机造成的网站中断对您或您的用户不利。

    计划内系统停机导致网站中断的通知示例

    现在,使用第1部分中描述的整体式工具,避免计划中的停机是危险的,耗时的,昂贵的,并且使所涉及的每个人都很疲惫。 需要大量镜像资源的大量镜像是很难管理的,并且导致了深夜,在所谓的“非工作时间”窗口中,当大量工作耗费大量精力同时又将新版本升级和旧版本降低时,更是如此-更不用说计算了如果需要回滚或在直接负责的团队无法控制的范围内出了什么问题,该如何处理旧版本。

    通过微服务和基于容器的应用程序,这些担忧(即使没有完全消除)也可以最小化,尤其是在当今Bluemix上提供了一些关键服务的情况下。 通过将组件分解成更小的组件,您可以在对整个系统造成最小影响的情况下部署它们,同时在某些时候保持更多组件的状态以防止中断。 Bluemix上提供的一项新服务Active Deploy提供了此功能,并已预先集成到Delivery Pipeline中。 较小的团队可以更有效地管理更多的应用程序,因为部署的每个版本都可以自动监督其正常运行时间,从而节省了人力和计算资源。

    动态服务注册表

    本期的最后一个主题是动态服务注册表的概念。 本主题包括您可能已经知道的服务发现或服务代理的概念。 这两个概念在任何方面都不相同,但是它们足够接近,可以用这种方法进行介绍。

    现在,您将创建成千上万个支持所有应用程序中的微服务的容器实例,应用程序中的其他组件将如何理解正在发生的事情? 他们将如何知道可以使用哪些其他微服务来进行服务调用? 他们将如何响应对他们的服务电话?

    服务发现和服务代理之间的区别在于您是要自己进行搜索还是让其他人为您进行搜索。 打个比方,假设您需要运输服务。 您要从单个提供商(例如美国邮政服务(USPS))还是从多服务票据交换所(例如Staples)查找服务。

    一个可视化的隐喻,显示了从单个提供商或多服务票据交换所中查找运输服务的信息。

    例如,如果我要寄送包裹,我可以转到USPS网站,为我要寻找的邮局类型输入几个参数,取回选项列表,选择一个,然后去寄送我的包裹包。 这就是服务发现的概念:我使用一个众所周知的可用服务端点注册表,该注册表在服务联机和脱机时更新。 通过REST API,调用应用程序可以查询服务发现服务,以确定可用于特定服务调用的服务类型以及数量,直至该请求服务的特定版本。

    使用客户端服务发现模式的示例微服务体系结构,通常称为服务发现。

    如果我不想成为选择将包裹寄至何处的人,我只想说:“把包裹拿到地址标签上的字样”,就可以拿到订书钉上。 然后,Staples将根据我提供的所有信息为我的包裹选择最具成本效益的送货方式。 我将包裹带到一家知名的服务提供商,并让它为我处理包裹的路由。 这就是服务代理的概念:调用一个众所周知的终结点,然后根据预先建立的规则或元数据自动将该呼叫转发到支持服务的实际支持服务。

    使用服务器端服务发现模式的示例微服务体系结构,通常称为服务代理。

    有很多理由认为服务发现优先于服务代理,反之亦然,但这实际上取决于偏好或实现经验/要求。 一些开源的服务发现产品,例如etcdConsul ,提供了分布式服务注册表,您可以使用它们注册,标记和心跳所有可用的服务实例。 甚至还有一些很酷的项目,例如Registrator ,它们都会在创建Docker容器后自动将您的服务注册到这些端点之一。

    从长远来看,某些较流行的service-proxy项目支持以下关键论点:service-proxy方法需要较少的网络跃点才能到达最终的支持服务。 Netflix Hystrix项目是最大,最受欢迎的服务代理项目之一。 Hystrix是基于Java™技术的库,它超越了简单的服务代理,但在服务代理库中提供了许多服务质量改进。

    显然,这两种模式对于自动管理服务实例并使它们成为可用的微服务基础结构的一部分都很重要。 Bluemix很快将拥有自己的多租户服务发现产品(如果您在阅读本文时尚不具备),则无需管理服务发现服务,这可能很少。 想象一下,自动注册所有容器实例,无论您是手动旋转它们,通过Bluemix Delivery Pipeline推动它们,还是与诸如IBM UrbanCode DeployJenkins之类的本地管道集成。

    结论

    您已经在这里看到了容器如何加速对云原生应用程序开发的推动。 借助前所未有的内置管理功能,可以比以往更快,更轻松地交付更小,更快的应用程序组件。 在受管理的服务(例如IBM Containers)上部署容器以及所有支持的微服务功能(包括日志记录和监视,Active Deploy和服务发现),可以轻松地将下一步从您的现有整体转移到云中。

    我们正在朝着更智能,模块化的系统发展,该系统从头到尾更加自动化和集成化。 这些将以自己的步调发展,对基础架构中的可用内容具有自我意识,知道哪些不可​​用,以及何时需要进行更改。 所有这些功能以及更多功能将在本系列的后续系列文章中介绍。


    翻译自: https://www.ibm.com/developerworks/cloud/library/cl-bluemix-microservices-in-action-part-2-trs/index.html

    展开全文
  • 本文给出一种容器化柔性微服务流程开发框架,结合领域驱动设计、容器微服务、动态组织关键点等技术机制,提高了流程实施效率,降低了开发成本,较好地解决了上述问题.经试验分析,柔性增强且代价更小,并实际...
  • 今天我分享的主题是《基于容器微服务的持续交付流水线》,单从标题来看,汇聚了今年来的几大热点词汇,像容器微服务和持续交付流水线,很多人也关注这些技术领域如何能够有机的整合起来,为业务价值带来贡献,...
  • 微服务开始(二):容器微服务

    万次阅读 2017-08-14 16:13:12
    第二部分我们将看一下容器是如何加入微服务故事的。对于一些开发人员和架构师来说,微服务容器仍然是新的领域,所以对这两个术语仍然有一些疑惑,有的时候会将他们混淆。微服务容器实际上是不同的两个东西。...

    原文链接:https://blogs.oracle.com/the-cloud-front/getting-started-with-microservices%2c-part-2%3a-containers-and-microservices

    简介

    在本系列文章的第一部分讨论了微服务的主要优势,并且接触到一些在使用微服务时需要考虑的问题。

    在第二部分我们将看一下容器是如何加入微服务故事的。对于一些开发人员和架构师来说,微服务和容器仍然是新的领域,所以对这两个术语仍然有一些疑惑,在有的时候会将他们混淆。微服务和容器实际上是不同的两个东西。微服务是一种架构形式;容器是一种工具,经常用来帮助基于微服务的应用。

    本文的目的是让大家深入的了解容器是如何帮助微服务的,并且提供了一些使用编排工具运行容器化微服务的一些高级概念。

    容器与微服务

    这篇博客的目的,是让你能够考虑容器作为封装的、独立部署的组件,利用操作系统级别的虚拟化,以隔离的实例运行在相同的内核之上,因此能够非常快速(秒级)的启动。

    隔离与密度

    容器的隔离级别介于虚拟机(VM)和进程之间。对于微服务来说,运行在VM当中会获得更好的隔离性,但是它也无法进行快速的扩展,因为通常VM的启动需要花费一些时间。容器能够在几秒钟之内快速启动,能够立即对负载或者流量的增加做出反应。

    进程的启动也很快,能够对资源,比如内存,进行动态的分配,并且能够对它们进行高效的共享。从密度的角度看,每个进程或者进程组运行多个服务实例也是很好的。在每个进程中运行一个或者多个微服务实例不好的地方是,它们不能很好的与其他的环境进行隔离,会受到其相邻环境产生的噪音的影响,如果代码写的不好,有可能影响到整个虚拟机环境。对服务代码进行容器化,它的运行环境、依赖关系、系统库等,都被打包在一起,运行在一个容器当中,通过它完整的、私有访问的操作系统结构视图,解决在进行运行时所遇到的一些隔离问题。

    1 展示了不同的隔离级别


    DevOps的好处

    良好的DevOps实践是微服务应用成功的关键,并且容器对它也是非常有益的。设想一个基于微服务的应用是由多种语言编写的不同服务组成的。在这个例子当中,DevOps团队需要专门的知识来部署每一个服务,这极大的增加了运维的复杂性。如果你将微服务打包为容器的一部分,容器镜像就成为一个部署单元,DevOps团队只需要知道如何部署容器就可以了,不需要去考虑里面运行的是什么应用。通过这种方式,你也能够避免由于缺少依赖库,或者环境版本(比如你的服务所需要的框架、依赖)不匹配所造成的服务失败,服务所需要的所有的东西都被打包在一起,成为一个不可变的环境,这就是典型的持续集成的一部分。从运维的角度,通常在一个容器当中只运行一个服务,容器能够让你将系统元素(CPU,内存等)收集到服务本身。容器还可以将开发人员和运维人员对主机和操作系统的一些特殊技术细节进行屏蔽。比如,如果基础架构团队决定更换主机上的Linux操作系统,因为它上面运行都是容器,所以不会对应用造成影响。

    这些都是使用容器所带来的一些好处。从微服务的角度看,它可以被看做是开发和运维之间的桥梁,让你在微服务环境运维变得更加简单。

    让我们看一个例子。图2展示了一个运行在容器中的微服务应用。这个应用包括三个微服务:一个Order服务、一个Profile服务和一个Catalog服务。每一个服务,他们的依赖环境和运行环境都被打包到一个容器当中。由于容器的封装和隔离级别,即使你的服务有不同的版本(比如Order v1Order v2),不同的运行环境和不同的依赖组件(Profile服务依赖于LibraryC v1Catalog服务依赖于LibraryC v2),你可以让他们运行在相同的主机之上。如果有一个服务的运行出现问题,耗尽了所有的资源,比如CPU或内存,它也不会影响到其他的服务,因为它只能够使用分配给它所在容器的资源。

    2:一个运行在容器中的微服务应用


    微服务的编排

    直截了当一点,如果你的应用在一个主机之上运行,但是一个主机不是真正的生产环境;比如,为了实现HA,你需要至少两个主机。因为微服务应用本质上是分布式应用,通常他们都运行在一个集群之上。集群就是一组耦合的计算机(通常叫做节点),可以看做是一个单独的系统,能够通过网络进行连接。在集群中调度新的服务看似简单。然而,你也需要一些措施来保证服务在失败的时候仍处于活动状态;在节点失败时能够将服务移动到其他节点;或者服务正在被调用,并且你可以进行滚动升级,你的服务可以“永远在线”。此外,它还需要了解依赖关系、位置、资源约束、优化、不同类型的资源和对资源的需求,以便列出对这些挑战的看法。好消息是,当你的应用运行在容器当中,你不需要担心这些事情,容器编排,有时也被称为调度器,能够帮你解决这些问题。你能够自己安装的最流行的容器编排工具包括KubernetesDC/OSDocker Swarm。你也可以使用受管的容器服务,比如Oracle Container Cloud Service或者其他的受管容器服务。使用完全受管服务的好处是你完全不需要担心底层架构的问题。在核心功能上,所有的容器编排解决方案,受管的或非受管的,都提供了相似的功能。

    从微服务的角度看,你所面对的是一个非常动态的环境。你通常不会知道你的服务(容器)在集群当中的什么位置,因为你依赖于编排器,基于资源的有效性与/或者位置约束来查找服务的最佳位置。服务注册和服务发现时解决这个问题的方案,他们能够对服务进行注册,并且能够很容易的在系统中被别的服务发现。集群中的服务发现有时也被称为东西路由;通常,额外的服务元数据会连同服务的端点信息一起存储,并且/或者服务的健康检查和服务实例的健康状态一起进行维护。EtcdConsulZookeeper是非常流行的注册和发现解决方案。

    3展示了一个集群的高阶视图,集群中带有微服务实例,并且他们的端点存储在服务注册当中,Order服务的一个实例正在对Catalog服务进行调用。Order服务调用节点上的一个端点,本地代理服务处理对这个服务的查找。请注意,有多种解决方案可以实现这些功能,一些受管的容器服务或者编排解决方案都已经内建服务注册和服务发现。这个例子当中提供了一个简单的视图,来说明服务发现解决方案如何工作。

    3:服务发现解决方案——高阶视图


    你所需要考虑的是如何将集群之外的客户端调用流量路由给集群内的服务。有时这被称为南北路由。

    一种常用的模式是使用应用网关,也称为API网管。在微服务架构当中,API网关用于流量聚合,并且把客户端请求路由给需要的服务。此外,API网关也用于身份认证卸载、SSL卸载、服务质量控制和监控视图。NginxHA-Proxy是目前最流行的两个应用网关。典型的网关部署模式包括对等网关路由,就是在集群中的每一个节点都运行网关。这种模式通常用于小规模的集群。另一种模式是专用的或者独立的网关节点。专用是指通过放置约束将网关服务放置在特定的集群节点之上。独立的网关节点的工作模式类似,不同的地方是节点服务的所在的节点不是集群调度的一部分。图4展示了一个集群架构,有一个网关节点将用户请求转发给Order服务。负载均衡器将流量定向到其中一个网关实例。网关使用路径来指向一个从服务注册返回的Order服务实例,将请求路由给它。

    4:用户请求到Order服务


    总结

    除了服务注册、服务发现和服务网关之外,开发人员和DevOps人员还不得不考虑避免潜在的端口冲突、为每个容器分配服务一个IP等等。这就使开发人员不得不去学习更多的基础架构和网络知识。好消息是容器编排进化的非常快,几乎每一个容器编排工具现在都提供了一些功能来帮助开发人员简化基础架构级别的工作。这也说明,仍然有很多事情开发人员需要在创建基于微服务的应用时考虑。后边的博客中将有更详细的微服务模式的介绍,并且如何对容器化的微服务进行打包和DevOps


    展开全文
  • 容器云之微服务API网关技术分析.docx
  • 容器微服务架构模式流媒体领域(PPTV)的实践.pptx
  • 这两天学习docker部署分布式项目,nacos,mysql等都是跑docker的,将服务部署在容器里面时,老是报错显示无法注册到nacos 解决办法: 给所有用到的容器配置一个专用网络,代码中用到相关联的服务全部使用...
  • Docker容器&微服务部署(1).zip
  • Docker容器&微服务部署(1).pdf
  • 近期华为云围绕容器微服务,号召行业分析师,应用上云实践者围绕容器微服务进行深入讨论。 华为云全栈容器微服务,业务创新快人一步 敏捷、高效、智能是Cloud 2.0时代企业数字化转型核心诉求,华为云全栈容器...
  • 基于容器微服务架构实践-陈爱珍
  • 容器微服务架构模式的实践-PPTV.pptx
  • 云服务下的最佳拍档——容器微服务.pdf
  • 容器微服务关系的思考

    千次阅读 2017-12-12 10:36:57
    那么一个大系统,二者的关系是怎样的呢?可以相互替代吗? 两者的区别: 容器着眼于部署架构,或者说是微服务的宿主,负责提供所需的容器,具备弹性伸缩能力。 微服务着眼于应用架构,负载掌控应用组件间的...
  • NET-Microservices-Architecture-for-Containerized-NET-Applications-(Microsoft-eBook)NET-Microservices-Architecture-for-Containerized-NET-Applications-(Microsoft-eBook)
  • 原文:...除非您完全不了解云技术和云本机应用程序开发,否则您或许听说过 Linux 容器过去两年来迅猛发展的 Linux 容器和基于容器的项目。如果您没有
  • 网易蜂巢解决方案首席架构师刘超主会发表了题为“网易蜂巢基于容器微服务加快迭代速度实践”的演讲, 主要讲述了网易蜂巢根据具体的业务场景和架构,进行逐步微服务化,容器化的实践。
  • 基于容器微服务架构剖析

    千次阅读 2015-11-24 10:34:18
    基于容器微服务架构剖析 0条评论 2015-07-29 14:33 it168网站原创 作者: 河北分站 编辑: 河北分站  随着容器技术的成熟和大规模实践,基于容器微服务架构凭借其对云服务的天然适应性,以及能够快速...
  • 新手入门容器微服务必看的大咖分享 快速变化的市场环境下,无论是新兴互联网行业还是传统行业都面临着敏捷开发的需求,要求应用快速开发、持续迭代、灵活部署和弹性伸缩,因此对应用进行微服务化以及开发运维...
  • 随着容器微服务对应用开发圈产生影响,这种情况发生改变。 容器微服务都把整个应用程序的代码细分成更小粒度的片段。这样不仅简化了开发,而且更容易测试,这也是设计更灵活应用程序部署方案和代码复用的关键...
  • 弹性化的容器微服务架构实践 技术创新变革未来 传统游戏后端服务器架构面临的挑战 风险集中 一台机器集中运行大量的游戏服进程当机器宅机时影响的用户面比较广 资源抢占 游戏服进程之间没有强隔离会导致不同游戏服...
  • 采用微服务架构最重要的一个原因是加快交付速度。为了实现高速的交付,高效的DevOps...本文我们将涉及一些容器微服务的模式和流程。很多内容都是我们创建Oracle Cloud云服务的时候与客户一起获得的经验和教训。
  • 抛弃tomcat容器微服务

    千次阅读 2017-06-08 19:48:53
    如果JAVA做一个HTTP接口工程,最先想到的是tomcat做容器,用springMVC来做一个标准的J2EE项目,所以tomcat 也就是微服务必须的,我想做微服务,其实我们不是很依赖于J2EE规范,但是好像也没的选择,所以我们必须要...
  • 容器微服务的CI/CD

    2020-12-16 14:26:46
    了解微服务集成测试的步骤和要求,每个步骤的最佳实践,以及有关QA环境的提示。 微服务的优势,例如缩短的开发时间,小的独立发行版以及分散的治理,带来了一系列挑战,例如版本控制、测试、部署和配置控制。 本文...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 86,334
精华内容 34,533
关键字:

容器在微服务中的作用