【架构】linkerd:来自Twitter为微服务而生的开源RPC解决方案

大家要如何以规模化方式运维微服务应用程序?实践当中会出现哪些问题,我们又该如何加以解决?在大规模与非预测性工作负载场景当中,我们需要满足哪些条件才能运行一款大型微服务应用程序,而又能够确保不必受到功能发布或者产品变更的影响?

在围绕微服务展开的探讨当中,我们发现几乎很少有人能够切实回答上述问题。以Docker、Mesos、Kubernetes以及gRPC为代表的各类新型技术成果的快速崛起使得我们能够轻松建立小型新架构。然而,高流量生产性用例又该如何实现?根据我们的推算,目前能够以规模化方式运行微服务,从而解决实际问题的企业数量仍然相当有限。

Twitter就是其中的典型代表。而且尽管其也经历过公共服务中断,但Twitter负责运维的是世界上规模最大的微服务应用之一,其中包含上百种服务、数以万计的节点以及每项服务中的数百万RPS。令人震惊的是,事实证明这样的工作绝非易事。虽然不是不可能,但需要企业投入多年并充分运用自身聪明才智,从而令一切在实践层面运作良好。

当Oliver和我前几年离开Twitter公司时,我们的目标是运用自己多年积累下的专业知识,将其转化成可供全世界各组织机构使用的可行性资源。令人振奋的是,这些知识中已经有相当一部分以开源项目的面貌了,也就是Finagle项目——这是一套用于支撑Twitter微服务架构的高通量RPC库。

Finagle属于Twitter的内部核心库,负责管理不同服务间之通信流程。事实上,Twitter公司的每一项在线服务都立足于Finagle构建而成,而且其支持着每秒发生的成百上千万条RPC调用。除了Twitter之外,Finagle还为多家企业的基础设施提供帮助,具体包括Pinterest、SoundCloud、Strava、StumbleUpon以及其它众多公司。

今天,我们很高兴地宣布我们将Finagle推向大众的愿景已经迈出了重要的一步。linkerd已经迎来其0.1.0版本,而我们亦以Apache License v2为基础对其进行了开源。

linkerd是我们面向微服务的开源RPC代理。它直接立足于Finagle构建而成,设计目标在于帮助用户简化微服务架构下的运维。这些多年积累下来的宝贵经验能够让我们轻松实现自包含、最低依赖性并确保将对现有应用程序的调整幅度控制在最低水平。

如果大家正在着手构建一套微服务方案,那么肯定需要发挥Finagle的各项优势——包括智能化、自适应负载均衡、服务发现抽象化以及内部业务流量路由等等。大家可以利用linkerd将这些功能添加进入,而无需对应用程序代码做出任何变更。另外,linkerd还提供一套漂亮的仪表板!

linkerd目前尚未彻底完工,不过遵循“早发布、频发布”的原则,我们认为现在已经应该将其早期版本交付给大家。

因此,如果大家对此抱有兴趣,那么不妨首先访问linkerd.io网站获取说明文档及进行下载。另外,如果大家乐于为其做出贡献,也可以直接前往linkerd GitHub repo提交您的成果。我们强烈支持开源精神——而我们也乐于以此为核心建立起一整套社区。

我们未来还有着漫长的发展道路,并已经准备好了一份接下来需要被添加进linkerd的令人兴奋的功能清单。欢迎大家加入我们这个开源大家庭。

——William、Oliver以及整个Buoyant团队

如果大家对这个名称感到好奇,我们将linkerd理解为微服务的‘动态链接器’,即dynamic linker。正如操作系统中的动态链接器需要获取库名称与函数以对该函数进行调用一样,linkerd也需要获取服务名称与RPC端点,从而对该RPC加以执行——而且整个过程安全且可靠。

参考资料:

http://j.news.163.com/docs/28/2016022009/BG8MBR7J9001BR7K.html

http://www.tuicool.com/articles/RRFFJrq

时间: 2024-11-02 09:03:51

【架构】linkerd:来自Twitter为微服务而生的开源RPC解决方案的相关文章

(转)微服务架构 互联网保险O2O平台微服务架构设计

http://www.cnblogs.com/Leo_wl/p/5049722.html 微服务架构 互联网保险O2O平台微服务架构设计 关于架构,笔者认为并不是越复杂越好,而是相反,简单就是硬道理也提现在这里.这也是微服务能够流行的原因,看看市场上曾经出现的服务架构:EJB.SCA.Dubbo等等,都比微服务先进,都比微服务功能完善,但它们都没有微服务这么深入民心,就是因为他们过于复杂.简单就是高科技,苹果手机据说专门有个团队研究如何能让用户更加简单的操作.大公司都是由小公司发展起来的,如果小

微服务架构探讨及甲骨文中间件微服务技术解决方案

https://mp.weixin.qq.com/s/IWR_wIh2D-RmPuslR_JnXg 微服务架构探讨及甲骨文中间件微服务技术解决方案 2017-04-12 胡平 甲骨文开发者社区 随着传统企业受到互联网+的冲击,越来越多的企业都在面临业务转型,如何更好地贴近客户以获取更高的客户满意度,如何在企业内部加速供给侧改革,实现更好的供需平衡都是企业在业务转型中需要思考的问题.企业业务转型,离不开底层IT架构的支撑,所以最近很多很火的技术理念不断被大家所谈及,包括微服务架构.DevOps开发

从经典架构项目中透析微服务架构的核心概念和充血模型

微服务架构和SOA区别 微服务现在辣么火,业界流行的对比的却都是所谓的Monolithic单体应用,而大量的系统在十几年前都是已经是分布式系统了,那么微服务作为新的理念和原来的分布式系统,或者说SOA(面向服务架构)是什么区别呢? 我们先看相同点: 需要Registry,实现动态的服务注册发现机制:需要考虑分布式下面的事务一致性,CAP原则下,两段式提交不能保证性能,事务补偿机制需要考虑:同步调用还是异步消息传递,如何保证消息可靠性?SOA由ESB来集成所有的消息:都需要统一的Gateway来汇

微服务架构(一):什么是微服务

解析微服务架构系列文章将分几篇描述微服务的定义.特点.应用场景.企业集成架构的演进以及微服务转型思路和技术决策考虑等内容,并以IBM技术为例介绍如何实现微服务架构转型. 为什么需要微服务架构 "微服务"架构是近期软件应用领域非常热门的概念.让我们先来看看传统IT架构面临的一些问题: 使用传统的整体式架构(Monolithic Architecture)应用开发系统,如CRM.ERP等大型应用,随着新需求的不断增加,企业更新和修复大型整体式应用变得越来越困难: 随着移动互联网的发展,企业

Re:从0开始的微服务架构--(二)快速快速体验微服务架构?--转

原文地址:https://mp.weixin.qq.com/s/QO1QDQWnjHZp8EvGDrxZvw 这是专题的第二篇文章,看看如何搭建一个简单模式的微服务架构. 记得好久之前看到一个大牛说过:如果单体架构都搞不好,就别搞微服务架构.乍一看,这句很有道理,后来发现这句话是不太对的,因为微服务架构的目的就是为了降低系统的复杂性,所以 微服务架构应该比单体架构更简单.更好实践才对. 这篇文章,我们就分享一下如何搭建一个 简单模式 的微服务架构. 什么是微服务架构的简单模式? 相对于大型互联网

企业应用架构演化探讨:从微服务到Service Mesh

作者:李宁 来源:博云技术社区 / 博云研究院 当下微服务的实践方案中,Spring Cloud,Dubbo作为主流的落地方案,在企业应用架构中发挥越来越重要的作用.本文探讨企业应用架构如何从微服务架构向Service Mesh架构演化,并形成落地方案.需要特别说明:本文讨论的架构目前适用于普通的企业级应用,其他行业(例如互联网)需要进一步扩展. 在讨论之前,我们需要明确一个事实:企业应用一定是围绕业务进行的. 无论采用什么的架构落地,都是为了更好的为应用业务进行服务.从企业应用的特性考虑,主要

微服务的一种开源实现方式——dubbo+zookeeper

微服务架构成了当下的技术热点,实现微服务是要付出很大成本的,但也许是因为微服务的优点太过于吸引人,以至于大部分开发者都将它当成未来的发展趋势. 微服务架构的演进过程 dubbo的用户手册中介绍了服务化架构的进化过程,如下图: 图一.服务化架构的演进过程 1.orm – 单一应用架构 一个高内聚版本,所有功能部署在一起.数据访问框架(orm)成为关键.这个架构很少被人使用,几乎接近灭绝了吧. 优点:成本低,适合功能少又简单 缺点:很多,比如无法适应高流量,二次开发难,部署成本高 2.mvc架构 -

微服务架构设计

微服务 软件架构是一个包含各种组织的系统组织,这些组件包括 Web服务器, 应用服务器, 数据库,存储, 通讯层), 它们彼此或和环境存在关系.系统架构的目标是解决利益相关者的关注点. Conway’s law: Organizations which design systems[...] are constrained to produce designs which are copies of the communication structures of these organizati

2015第50周一了解微服务架构

 58 网站架构演进     网站在不同的阶段遇到的问题不一样,而解决这些问题使用的技术也不一样,流量小的时候,我们主要目的是提高开发效率,在早期要引入 ORM,DAO 这些技术.随着流量变大,使用动静分离.读写分离.主从同步.垂直拆分.CDN.MVC 等方式不断提升网站的稳定性.面对更大的流量时,通过垂直拆分.服务化.反向代理.开发框架(站点/服务)等等,不断提升高可用.在面对上亿级的更大流量时,通过中心化.柔性服务.消息总线.自动化(回归,测试,运维,监控)来迎接新的挑战.未来的就是继续实现