架构演进两大方向,一个是Serverless,另一个是什么? | 技术前沿
2020.01.10 06:27浏览量:2450简介:在《沉寂多年,无服务器爆发,其硬核是什么?》一文中,我们就什么是无服务器技术,它是如何发展的,它的优点、缺点是什么,对企业的价值在哪里进行了梳理。本文讲讲Ser
在《沉寂多年,无服务器爆发,其硬核是什么?》一文中,我们就什么是无服务器技术,它是如何发展的,它的优点、缺点是什么,对企业的价值在哪里进行了梳理。本文讲讲Service Mesh。在架构领域,Service Mesh和Serverless一样,是非常重要的一个方向。 这么说吧,掌握了Service Mesh,你就选择了一条未来技术框架的道路。至于这条道路会怎么发展,还要再观察。这篇文章将解释什么是Service Mesh,为什么需要Service Mesh,以及Service Mesh的现状如何。
初识Service Mesh
Service Mesh很新,最早在2016年9月29日由开发Linkerd的Buoyant公司提出。 时间回到2016年10月,Alex Leong开始在Buoyant公司的官方博客中连载一系列关于“A Service Mesh for Kubernetes”的文章。 随着2017年Linkerd加入CNCF,Service Mesh开始大规模出现在各个技术论坛上,Service Mesh在国内被翻译为“服务网格” 。 那么到底什么是Service Mesh呢?目前比较公认的定义是Buoyant的CEO William Morgan在博客中给出的具体描述,如下:现在,Service Mesh逐步发展为一个独立的基础设施层。 在Cloud Native架构下,单个应用程序可能由数百个服务组成;每个服务可能有数千个实例;并且这些实例中的每一个实例都可能处于不断变化的状态,因为它们是由诸如Kubernetes之类的资源调度系统动态调度的。这个世界中的服务通信不仅非常复杂,而且是运行时的普遍行为之一,管理它对于确保端到端的性能和可靠性至关重要。
Sidecar的比喻从何而来?
业内也有类似“Sidecar”的说法。这个概念很形象,就是我们以前在战争影片中看到的那种挎斗车。
在模式库中,Sidecar被这样描述:
将应用程序的组件部署到单独的进程或容器中以提供隔离和封装。这种模式还可以使应用程序由异构组件和技术组成。这种模式被命名为Sidecar,因为它类似于连接到摩托车的辅助车。在该模式中,辅助车被附加到父应用程序并为应用程序提供支持功能。辅助车也与父应用程序共享相同的生命周期,与父进程一起被创建和推出。 解释了这么多,一句话来说的话,那就是:Service Mesh帮助应用程序在海量服务、复杂的架构和网络中建立稳定的通信机制,业务所有的流量都转发到Service Mesh的代理服务中。 不仅如此,Service Mesh还承担了微服务框架所有的功能,包括服务注册发现、负载均衡、熔断限流、认证鉴权、缓存加速等。不同的是,Service Mesh强调的是通过独立的进程代理的方式,除此之外,还承担了上报日志、监控的责任。Service Mesh架构如下。
轻量、自治促进不断发展
Service Mesh的出现是由微服务架构推动的,随着一个应用被拆分为几百个甚至几万个应用,服务治理面临巨大的挑战。这个时候,微服务框架出现,例如,Finagle、Dubbo、SpringCloud、Netflix OSS等。这些框架都是基于客户端负载均衡直连的方式,此方案的优势是性能高、应用性好,如Spring Cloud。 归根结底,在微服务架构中,我们要解决的问题是,让开发人员感觉不到微服务之间的通信。当服务数量越来越多,升级微服务框架变得越来越复杂的时候,你不可能要求微服务框架一直不变,而且是没有bug的。在技术更新如此之快的年代,就更不可能了。 因此,微服务框架的部分功能开始逐步向服务端移动,希望客户端可以尽量“薄”,但是客户端不可能无限制的“薄”,剩余部分仍然比较“厚”。 因为使用客户端更像一种交付的模式,不容易变更,控制力较差,而Service Mesh则从业务进程集成客户端的方式演进为独立进程的方式,也就是说,原本的客户端变成了一个独立进程。对这个独立进程升级、运维要比绑在一起强得多。 微服务架构更强调去中心化、独立自治、跨语言,但是通常微服务框架限制了这一点,不可能为每种语言都实现一种框架,要么都用一种语言,要么实现多种语言的框架。而Service Mesh通过独立进程的方式进行了隔离,可以低成本实现跨语言。 随着Docker及Kubernetes的崛起,微服务的部署模式开始发生转变,越来越趋向于轻量级,越来越强调隔离自治。每个服务独立占用一个容器,将服务、依赖包、操作系统、监控运维所需的代理打包成一个镜像。这种模式促成了Service Mesh的发展,让Service Mesh实现起来更容易。否则开发人员需要额外维护Service Mesh进程,就非常麻烦了。
发表评论
登录后可评论,请前往 登录 或 注册