Google、IBM 和 Lyft 开源其大型微服务系统管理工具 Istio

谷歌、IBM 与 Lyft 三方已经共同公布了 Istio 项目的首次公开发行版。Istio 是一个开源项目,旨在提供一种统一化的微服务连接、安全保障、管理与监控方式。我们目前的发行版主要面向 Kubernetes 环境 ; 当然,在后续的升级当中,我们还将逐步实现对虚拟机以及 Cloud Foundry 等其它环境的支持能力。

Istio 项目能够为微服务架构提供流量管理机制,同时亦为其它增值功能(包括安全性、监控、路由、连接管理与策略等)创造了基础。这款软件利用久经考验的 Lyft Envoy 代理进行构建,可在无需对应用程序代码作出任何发动的前提下实现可视性与控制能力。Istio 项目是一款强大的工具,可帮助 CTO/CIO 们立足企业内部实施整体性安全、政策与合规性要求。

项目背景

编写具备高可靠性、松散耦合的微服务式生产级应用程序往往存在一定程度的挑战。随着整体式应用程序被拆分为微服务,软件团队必须面临并应对在分布式系统当中实现服务集成所带来的诸多难题:其必须考虑服务发现、负载均衡、容错性、端到端监控、面向功能实验的动态路由以及最为重要的两大前提——合规性与安全性。

目前行业中处理上述挑战的方法多种多样,往往由各类库、脚本乃至 Stack Overflow 片段拼凑而成,这直接导致其包含大量不同编程语言与运行时,功能可观察性差且往往会令最终安全性受到负面影响。

其中一类解决方案在于立足常规 RPC 库(例如 rRPC)实施标准化调整,但其全面采用会给企业带来高昂成本,同时亦会迫使其放弃部分根本无法变更的旧有应用程序。很明显,运营人员需要一套灵活的工具包,确保其微服务始终具备安全性、兼容性、可追踪性以及高可用性 ; 与此同时,开发人员则需要能够在生产环境中尝试不同功能或者部署金丝雀版本(canary releases),并保证其不会影响到整体系统。

解决方案:服务网格

想象一下,如果我们能够以透明化方式在服务与网络之间插入一个基础设施层,借此为运营人员提供必要的控制能力,同时帮助开发人员不必在其代码当中引入分布式系统带来的专用解决方案,那么前面提到的诸多挑战将迎刃而解。正如微服务架构能够帮助各功能团队实现彼此解耦,服务网格则能够帮助运营人员从应用程序功能开发与发布流程当中解耦出来。Istio 项目即因此而生,它能够以系统化方式将代理机制接入至网络路径当中,从而将不同微服务转化为综合性服务网格。

谷歌、IBM 与 Lyft 三方联手开发出的 Istio 项目基于我们为内部及企业客户构建及运营大规模微服务架构中积累起的丰富经验,旨在为微服务架构的开发与维护工作提供可靠基础。谷歌与 IBM 双方长久以来一直在在内部应用程序中采用此类大规模微服务架构,同时亦具备丰富的高敏感度 / 监管环境企业客户服务经验。而 Lyft 则开发出 Envoy 以解决其内部可操作性挑战。Lyft 在经过一年的成功使用之后,决定将 Envoy 推向开源,其能够管理超过 100 项服务、跨越上万套虚拟机且每秒可处理 200 万条请求。

Istio 的优势

集群规模可视性:在故障状况出现时,运营人员需要利用多种工具以始终关注集群运行状况并分析微服务状态图表。Istio 项目能够监控与应用程序及网络活动相关的数据,利用 Prometheus 与 Grafana 对这部分数据加以渲染,而后将相关指标与日志记录发送至任何收集、聚合与查询系统当中以实现功能扩展。Istio 项目亦利用 Zipkin 追踪分析性能热点并对分布式故障模式加以诊断。

弹性与效率:在开发微服务时,运营人员需要假设网络本身处于不可靠状态。运营人员能够利用重试、负载均衡、流量控制(HTTP/2)以及断路补偿等方式解决由网络可靠性低下所造成的各类常见故障模式。Istio 项目则提供一种统一方法以配置上述功能,使得运营人员能够更为轻松地运作高弹性水平服务网格。

开发人员生产力:Istio 项目能够确保开发人员专注于利用已选择的编程语言构建服务功能,从而极大提升其生产能力。另外,Istio 项目则负责以统一化方式处理弹性与网络挑战。开发人员无需将解决方案的分布式系统问题解决机制引入编写的代码当中。Istio 项目还能够支持 A/B 测试、金丝雀部署以及故障注入等常用功能,旨在进一步提高生产效率。

政策驱动型运营:Istio 项目能够授权具有不同职能的团队以实现独立运作。其将集群运营人员与功能开发人员进行周期性剥离,从而在无需更改代码的前提下提升安全性、监控能力、扩展性与服务拓扑水平。运营人员能够精确控制生产流量中各个子集的路由方式,从而匹配新的服务版本。另外,运营人员还能够在流量中注入故障或者提高延迟水平,用以测试服务见长的弹性 ; 同时设置速率限制以防止服务过载。Istio 项目还可用于强制执行合规性要求,例如在服务之间定义 CL 以确保仅具备授权的服务间可相互通信。

默认安全:分布式计算当中经常存在着大量网络安全问题。Istio 项目允许运营人员利用 TLS 连接以认证并保护各服务之间的所有通信,而不会给开发人员或者运营人员带来由证书管理造成的额外负担。我们的安全框架与新的 SPIFFE 规范保持一致,事实上谷歌公司一直在内部广泛使用类似的保障性系统。

增量化采用:我们在设计 Istio 项目时充分考虑到网络内所运行各服务的透明性,允许团队随着时间推移逐步采用 Istio 提供的各项功能。采用方可以先从启用集群范围内可视性起步,并在 Istio 在环境中的表现感到满意后根据实际需要启用其它功能。

加入我们共同开启新的旅程

Istio 属于完全开源之项目。今天,我们发布了其 0.1 版本,适用于 Kubernetes 集群。未来我们计划每三个月进行一次主要版本更新,其中包括支持其它环境。我们的目标是帮助开发人员与运营人员以敏捷性、底层网络全面可视性以及立足一切环境的统一化控制与安全保障能力为前提,发布并运营属于您自己的微服务体系。我们期待着与您在 Istio 社区中并肩协作,并以合作伙伴的角度共同实现各项发展目标。如果您有兴趣,请以下链接查看我们的发展路线图。

本文来自开源中国社区 [http://www.oschina.net]

时间: 2024-07-28 17:21:24

Google、IBM 和 Lyft 开源其大型微服务系统管理工具 Istio的相关文章

Kontena 1.0开源容器与微服务平台释出

对于大多数人而言,容器与docker这样的字眼可能还略有耳闻,但是Kontena这样的名词,可能略有陌生,其实大可不必. Kontena是采用Ruby开发的应用容器,是一个开源的容器化业务流程工具,提供云基础设施上容器化应用的部署.管理.测量和监控工具.从构成与应用场景来看,Kontena包括:Server,Client和CLI三个部分,支持任意的云平台,比如Docker和CoreOS Rocket. Kontena架构图 而根据最新外媒报道,Kontena刚刚释出了自己最新的1.0产品.该款产

Netflix Conductor:一个微服务编排工具

本文讲的是Netflix Conductor:一个微服务编排工具[译者的话]这篇文章介绍了Netflix Conductor,一个微服务编排工具,为微服务执行复杂业务流程提供了一种思路,希望对读者有一定的启发. [深圳站|3天烧脑式Kubernetes训练营]培训内容包括:Kubernetes概述.架构.日志和监控,部署.自动驾驶.服务发现.网络方案等核心机制分析,进阶篇--Kubernetes调度工作原理.资源管理及源码分析等. Netflix内容平台工程团队运行许多业务流程,这些业务流程是通

初创公司福利:谷歌、IBM和Lyft共同推出微服务管理平台Istio

谷歌,IBM,及Lyft昨日正式推出其开源服务Istio.这项开源项目将给开发者提供一个统一的平台,用以有效管理监测微服务(microservices)的运行情况,并保障.提高其之间的连接性.安全性. 微服务,是一项在云中部署应用和服务的新技术.它提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESTful API).每个服务都围绕着具体业务进行构建,并且能够

Istio:用于微服务的服务啮合层

Google.IBM和Lyft开源了微服务管理.保护和监控框架Istio.Istio为希腊语,意思是"启航". 微服务简化了开发,它将创建复杂系统的任务切分为数十乃至上百个小服务,这些小服务易于被小型的软件工程师团队所理解和修改.但是微服务并未真正地消除复杂性,而是将复杂性迁移到对大量服务的连接.管理和监控上.其中涉及对上百个服务的管理.处理部署问题.版本控制.安全.故障转移.策略执行.遥测和监控等,实现它们并非易事.Istio力图去解决这些问题. 按Google的提法,Istio是&

Java微服务:这个画饼是个谎言,但你却不能忽视它

本文讲的是Java微服务:这个画饼是个谎言,但你却不能忽视它[编者的话]本文深入介绍了Java的微服务开发,包括其定义和一些可选方案,如Spring Boot.Dropwizard及其他开源项目. 微服务的趋势已经让人无法忽视.有些人可能会说它只不过是又一个故弄玄虚的流行词,而另一些人可能会列举出分解单体应用的优势,或者反其道而行,专注于其不足之处. 在本文中,我们将专注于Java生态系统,从务实角度看待我们所掌握的实际用于实现微服务的框架,来看看它们到底是什么.让我们开始吧. 这个画饼是个谎言

几种常见的微服务架构方案——ZeroC IceGrid、Spring Cloud、基于消息队列、Docker Swarm

微服务架构是当前很热门的一个概念,它不是凭空产生的,是技术发展的必然结果.虽然微服务架构没有公认的技术标准和规范草案,但业界已经有一些很有影响力的开源微服务架构平台,架构师可以根据公司的技术实力并结合项目的特点来选择某个合适的微服务架构平台,以此稳妥地实施项目的微服务化改造或开发进程. 本文选自<架构解密:从分布式到微服务>. 本文盘点了四种常用的微服务架构方案,分别是ZeroC IceGrid.Spring Cloud.基于消息队列与Docker Swarm. ZeroC IceGrid微服

微服务部署面临的挑战

以前,我们邀请几位嘉宾讨论了他们在开发微服务时遇到的挑战,比如Fred George或Dustin Huptas和Andreas Schmidt.近日,Usman Ismail参加了一场小组会议,讨论了微服务持续交付面临的挑战,并决定随后详述其中的部分重点内容.他首先讨论了微服务其中一个基本原则的缺点,那允许大型团队通过快速原型和迭代以一种更加敏捷的方式推进(软件)开发: 不过,微服务显著增加了开发团队的运维和工具负担.每个服务都需要一个部署管道.一个监控系统.自动报警.轮流电话值班,等等.对于

广州技术交流腐败会之IBM技术沙龙开源技术 &amp;amp; WebSphere &amp;amp; Tivoli

广州技术交流腐败会之IBM技术沙龙开源技术 & WebSphere & Tivoli 1.活动时间:2009年3月27日 2.活动地点:广州麓湖高尔夫乡村俱乐部  广州市麓景路麓湖 3.迷路者SOS  020-83507777 4.活动内容 活动一: WebSphere技术专家沙龙活动说明(广州站:2009年3月27日)日程安排 13:30-14:00 签到 14:00-16:00 Spring Security 16:00-16:15 茶歇 16:15-17:00 WebSphere的S

考虑把大型项目拆解成微服务吗?

本文讲的是考虑把大型项目拆解成微服务吗?[编者的话]本文理性的讨论了拆解大型项目到微服务的过程,讨论了拆解过程中会遇到的问题和编程语言的选择,并给出了作者自己的建议. 微服务是处理臃肿.凌乱系统的一剂良药.然而,拆解一个大型项目为一系列的微服务所付出的代价是值得的吗?现在存在一些优点和缺点,那么微服务的哪些特点吸引了众多公司和开发人员呢? 最常见的应用场景是将一个大型系统切换到基于微服务的基础设施.我倾向将这个过程称为"分解"应用程序,因为我们把紧耦合的代码分解成多个小的服务.这包括了