写点什么

微服务技术栈 2.0

  • 2017-03-14
  • 本文字数:1884 字

    阅读完需:约 6 分钟

当下市场瞬息万变,新技术不断涌现,而微服务持续火热。如果说 2014 年是微服务的元年,那么 2015 年和 2016 年则是微服务走下神坛的时刻,越来越多的开发者、架构师们探讨着如何落地,如何解决各种实际问题,而很多技术栈和工具也纷纷涌现。

Netflix 和一些互联网公司作为早期微服务的采用者在这些领域做了很多的投资、尝试和贡献(如开源工具和相关论文)。然“微服务不是免费的午餐”。企业也并不都是 Netflix,微服务的复杂性以及带来的各种成本还是让很多企业望而却步,挡在了门外。

而如今,随着越来越多的企业和社区加入到这一行列,经过早期采用者的沉淀和后续加入者的共同创造,在微服务的多个已知问题领域出现了新的一波解决方案和技术栈,给其注入了新的希望。最近,Christian Posta 发表了题为“令人兴奋的微服务技术栈2.0”的文章阐述了这一趋势。他指出,这些技术栈的出现可以帮助解决原来很多已有的或者在一些问题域中难易跨越的问题,甚至可以更优雅的解决。

Christian 提到的第一个例子是 Kubernetes。他指出:

Google 和 Red Hat 都是第三次在构建一个有应用程序级原语的平台时使用 Kubernetes,这个平台用来运行在容器上构建的原生云应用程序。过去 Google 或开源社区也曾有过不同的尝试,但 Kubernetes 大大简化了像服务发现、规模化、部署等任务。似乎社区里其他人也同意 Kubernetes 是 GitHub 上最热门的项目,现在已经有 1000 多个提交者,很是疯狂。如果 Kubernetes 出现在 5 年前,你不会看到这么多“微服务”框架来解决这些问题。

Christian 提到的另一个例子是熔断。微服务架构是由多个独立的服务组成,如果任何一个服务出现故障,就会导致其它依赖的服务像多米诺骨牌一样出现连带故障,最终导致整个系统的瘫痪。这就使得在微服务这样的架构中,保障服务及服务之间的稳定性是非常重要的问题之一。而熔断器模式则是解决这个问题的一个模式。

熔断器模式指,在某个服务发生故障时,熔断器的故障监控向调用放返回一个及时的错误响应,而不是长时间的等待。这样就不会使得线程因调用故障被长时间占用,从而避免了故障在整个系统中的蔓延。

在熔断器技术的发展中,Christian 谈到:

“现在任何人都可以写一个熔断器(和许多有)。 Netflix 甚至发布了他们的熔断器(Hystrix 库)。应用程序可以使用 hystrix 库来实现相关功能。然而其对于熔断、服务发现、跟踪,指标以及其它系列问题的缺点时,它强依赖于开发人员获取正确的类库,并真正的将这些事情作对。这是非常困难的。我们需要一种新的方式来解决这个问题。”

Christian 认为“我们真正想要的并不是更多的类库或框架让我们的应用程序变得更复杂,而是希望每个开发人员可以正确的在项目之间使用或应用它们,甚至更重要的是与编程语言无关。维护类库不同的实现会让人抓狂。”他指出在该领域也出现了一些“更优雅的”方式,如 IMHO 和来自 Lyft 的 Envoy project。

IMHO 将这些问题放在客户端代理,这个代理部署为应用程序的“跨斗”。而 Envoy 是一个非常小的 C++ 客户端代理,用于处理诸如熔断、批量堆栈、服务发现、度量收集、跟踪等问题。这意味着单个 Envoy 代理将与每个应用程序(1-1)一起部署。应用程序可以利用此功能,而无须考虑编程语言的约束。该应用程序基本上通过“localhost”与其他服务通信,Envoy 完成服务的所有代理工作。它知道如何找到后端服务,完成自适应路由、重试、跟踪、调节等任务。开发人员可以保持整洁的应用程序代码,并免费获得所有的这些便利。

Christian 谈到的最后一个例子是构建微服务的方式。他认为:

用 REST 构建微服务是绝对的事实。搭建一个服务,使用 REST 端点提供服务,并将其用在服务之间的所有交互和集成。而 REST 也存在一些在规模化上已知的问题,如追踪服务的破坏性变更,理解服务之间的类型安全,以及与二进制 RPC 风格的服务(至少 HTTP 1.x)相比带来的过大开销等。今天它正在演进为一些更优雅的方式,如非阻塞通信框架(即 RxJava、Vert.x)、异步通信模式等,甚至像 RPC(如 gRPC)也变得更加的优雅。

最后,笔者认为技术并不依赖于特定的技术栈或工具,然如果没有有效的技术栈和工具,好的想法也可能夭折。就如 Christian 所说,微服务领域不断的发展,这些新的技术栈和解决思路可以让一些已知的问题得到解决,并优雅的得到解决,他为之兴奋,也值得我们关注。随着越来越多的企业、社区、个人参与其中,微服务必将在更多的领域落地生根,开花结果。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-03-14 19:005216

评论

发布
暂无评论
发现更多内容

完整版来了!阿里Dubbo技术负责人准备的源码教程,很有大厂风格

Java你猿哥

Java 架构 dubbo ssm

常用的表格检测识别方法 - 表格区域检测方法(下)

合合技术团队

人工智能 文字识别 表格识别 表格检测

为什么 GPU 更适用于时域算法,而 CPU 更适用于频域算法?

思茂信息

gpu cpu 计算机 电脑 电脑硬件

NFT盲盒卡牌游戏系统开发搭建

Congge420

区块链

「聊天机器人构建、智能文档问答」大模型应用开发实操课程来了

飞桨PaddlePaddle

AIGC Prompt

龙蜥开发者说:构建软件包?不,是构建开源每一个角落!| 第 20 期

OpenAnolis小助手

开源 操作系统 龙蜥社区 开发者说 优秀贡献奖

IDO&IEO盘点,包括PoseiSwap等即将面向市场的潜力打新活动

西柚子

元宇宙链游系统开发搭建技术

Congge420

区块链

“数据进化论”2023数智科技大会官宣:从看、用到智能,与客户共进化

奇点云

发布会 奇点云 数据云 数智科技大会

RocketMQ你不得不了解的 Rebalance机制源码分析

Java你猿哥

Java 源码 RocketMQ ssm client

用好kafka,你不得不知的那些工具

JAVA旭阳

Java kafka

如何进行测试分析与设计-HTSM启发式测试策略模型 | 京东云技术团队

京东科技开发者

测试 测试策略 企业号 5 月 PK 榜 HTSM

LED显示屏技术升级方向介绍

Dylan

技术 升级 LED显示屏

阿里云AnalyticDB(ADB) + LLM:构建AIGC时代下企业专属ChatBot

科技热闻

500行代码手写docker开篇-goland远程编译环境配置

蓝胖子的编程梦

Docker 容器 云原生 k8s 命名空间

【实践篇】教你玩转JWT认证---从一个优惠券聊起 | 京东云技术团队

京东科技开发者

分布式 JWT 企业号 5 月 PK 榜

DevEco Studio 3.1 Release | 动态共享包开发,编译更快,包更小

HarmonyOS开发者

HarmonyOS

mate云端元宇宙系统智能合约链游开发技术

Congge420

区块链

Java面试题1000+附答案大全(合适各级Java开发人员)

采菊东篱下

Java

基于Jmeter 的接口自动化测试实践探讨

jackwang

智能合约DAPP挖矿系统开发应用

Congge420

区块链

airasia Superapp × HMS Core:便捷出行,悦享全程

HarmonyOS SDK

HMS Core

上线半天下载量破100W!美团大佬的Java性能调优实战手册,超详细

Java你猿哥

Java JVM 多线程 ssm 性能调优

为世界第一大癌症高效研发首创新药,AI大模型助力药物研发叩开未来之门

飞桨PaddlePaddle

百度飞桨

什么是研发 Lead Time?我悟了!

LigaAI

DevOps 敏捷开发 研发速率 研发效能管理 企业号 5 月 PK 榜

速下载!交通业数据安全政策汇编发布

极盾科技

数据安全

全球分布式云大会:AntDB超融合流式实时数仓,打造分布式数据库新纪元

亚信AntDB数据库

AntDB AntDB数据库 企业号 5 月 PK 榜

Java常用对象映射工具的介绍和使用

echoes

Photoshop 2023 如何切换语言?

Rose

Photoshop 2023下载 如何切换PS语言 PS 2023破解

全靠这份阿里大佬的“Java进阶面试手册”收获蚂蚁offer

Java你猿哥

Java kafka Spring Boot Netty java面试

【GPT-4理论篇-1】GPT-4核心技术探秘 | 京东云技术团队

京东科技开发者

人工智能 openai GPT-4 企业号 5 月 PK 榜

微服务技术栈2.0_语言 & 开发_禚娴静_InfoQ精选文章