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

在围绕微服务展开的探讨当中,我们发现几乎很少有人能够切实回答上述问题。以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

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

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

    http://www.cnblogs.com/Leo_wl/p/5049722.html 微服务架构 互联网保险O2O平台微服务架构设计 关于架构,笔者认为并不是越复杂越好,而是相反,简单就是硬道理也 ...

  2. Java 18套JAVA企业级大型项目实战分布式架构高并发高可用微服务电商项目实战架构

    Java 开发环境:idea https://www.jianshu.com/p/7a824fea1ce7 从无到有构建大型电商微服务架构三个阶段SpringBoot+SpringCloud+Solr ...

  3. 微服务7:通信之RPC

    ★微服务系列 微服务1:微服务及其演进史 微服务2:微服务全景架构 微服务3:微服务拆分策略 微服务4:服务注册与发现 微服务5:服务注册与发现(实践篇) 微服务6:通信之网关 微服务7:通信之RPC ...

  4. 微服务8:通信之RPC实践篇(附源码)

    ★微服务系列 微服务1:微服务及其演进史 微服务2:微服务全景架构 微服务3:微服务拆分策略 微服务4:服务注册与发现 微服务5:服务注册与发现(实践篇) 微服务6:通信之网关 微服务7:通信之RPC ...

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

    原文地址:https://mp.weixin.qq.com/s/QO1QDQWnjHZp8EvGDrxZvw 这是专题的第二篇文章,看看如何搭建一个简单模式的微服务架构. 记得好久之前看到一个大牛说过 ...

  6. 通俗地理解面向服务的架构(SOA)以及微服务之间的关系

    SOA是一种软件的应用架构方法,它基于面向对象,但又不是面向对象,整体上是面向服务的架构.SOA由精确的服务定义.松散的构件服务组成,以及业务流程调用等多个方面形成的一整套架构方法. 这话是不是听起来 ...

  7. 【分布式微服务企业快速架构】SpringCloud分布式、微服务、云架构快速开发平台源码

    鸿鹄云架构[系统管理平台]是一个大型 企业.分布式.微服务.云架构的JavaEE体系快速研发平台,基于 模块化.微服务化.原子化.热部署的设计思想,使用成熟领先的无商业限制的主流开源技术 (Sprin ...

  8. go微服务框架go-micro深度学习 rpc方法调用过程详解

    摘要: 上一篇帖子go微服务框架go-micro深度学习(三) Registry服务的注册和发现详细解释了go-micro是如何做服务注册和发现在,服务端注册server信息,client获取serv ...

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

    转自: http://blog.csdn.NET/zhdd99/article/details/52263609 微服务架构成了当下的技术热点,实现微服务是要付出很大成本的,但也许是因为微服务的优点太 ...

随机推荐

  1. php Hash Table(三) Hash Table初始化

    HashTable初始化,在使用HashTable之前要先执行初始化,下边就看看初始化时都做了什么, Zend/zend_hash.c static const Bucket *uninitializ ...

  2. 居于Web的进度条实现思路(下载百分比)

    http://www.cnblogs.com/wfyfngu/p/4866434.html 在传统桌面项目中,进度条随处可见,但作为一个很好的用户体验,却没有在如今主流的B/S程序中得到传承,不能不说 ...

  3. java enum类

    1.可以在enum中添加变量和方法 先来看一段代码示例: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ...

  4. 谷歌浏览器 查看源码里的a:hover CSS样式 还有火狐的查看方式

    谷歌浏览器查看hover css样式 直接实例: 选中a标签 然后右侧面板 出现 箭头 点击 出现Toggle Element state提示 下面再hover前打勾 直接就可以显示效果了 浏览器查看 ...

  5. NancyFx中使用自带的IOC容器

    /// <summary> /// Cors扩展 /// </summary> public static class IPipelinesExtensions { /// & ...

  6. C#中(int)a和Convert.ToInt32(a)有什么区别

    首先,在 C# 中,int 其实就是 System.Int32,即都是32位的. 其次,(int) 和 Convert.ToInt32 是两个不同的概念,前者是类型转换,而后者则是内容转换,它们并不总 ...

  7. linux下vim如何配置markdown插件

    在vim中设置markdown语法高亮是一个不错的选择,但是在google中搜索到的很多都是比较老的设置方式,甚至vim插件下载页面都是一个旧的版本.这里总结下我的修改过程,以帮助像我一样纠结的人. ...

  8. Memcached存储命令 - replace

    Memcached replace 命令用于替换已存在的 key(键) 的 value(数据值). 如果 key 不存在,则替换失败,并且您将获得响应 NOT_STORED. replace 命令的基 ...

  9. PHP基础OOP(一)

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  10. 【bzoj1060】[ZJOI2007]时态同步

    题目描述 小Q在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数字1,2,3-.进行标号.电路板的各个节点由若干不相交的导线相连接,且对于电路板的任何两个节点 ...