在之前关于Service Mesh(服务网格)的系列文章中,我们从实战的角度分享了一些关于Istio的入门安装、服务发现、熔断限流及流量管理(灰度发布)等细节方面的内容(可参考文末推荐阅读)。
今天的文章将从更宏观的概念和架构入手,来全面介绍Istio这一最著名的服务网格开源解决方案,以求从整体上将Istio实现服务网格的核心原理阐述清楚!
Istio中的关键概念
要学习Istio需要先明确以下几个关键术语。
1.容器/容器镜像
进入到云原生时代(不了解云原生的概念可以参考《什么是云原生?》)的服务网格架构,应用的发布、部署都是围绕Kubernetes为代表的容器基础设施展开的。这就需要对容器及容器镜像的概念有清晰的理解。
实际上,容器的普及要归功于Docker技术的流行,而从本质上说容器就是运行在操作系统中的,受资源隔离限制的一组进程,也称为“容器运行时”。它可以将用户打包的代码及其所赖的关系完整的还原出来。通过容器化运行的应用程序,可以更快、更可靠地运行,而不受具体计算环境的影响。
容器镜像,是容器化的重要介质和载体。从形式上来说,它就是一个轻量级的、独立的、可执行的软件包文件,包括了运行应用程序所需要的一切:代码、工具、系统库及各种设置。
容器技术的出现,彻底颠覆了应用构建、发布及运行的方式,目前已经成为服务端应用发布的事实标准。后续要聊到的Istio服务网格技术,无论是“网格基础组件”还是“应用程序”,都是以容器的方式运行在Kubernetes容器平台之上的。
2.微服务
微服务是一种架构风格,它将一个庞大的单体服务拆分为一组松散耦合的微服务集合,该微服务集合提供了与单个单体应用相同的功能。但微服务可以独立于其他服务进行独立的开发和部署