云原生思想 — 云原生的微服务架构

目录

 

 

容器之于微服务架构

不一样微服务之间可能存在一些异构,为了让每个团队在微服务体系下发挥最大效能,咱们容许不一样团队采用不一样的编程语言,甚至不一样的运行环境来去运行这些微服务。所以,咱们在运维和管理微服务时,最初其实并无一套统一的标准去处理的异构环境,这也是为何后来容器技术变得流行起来,它的一个重要做用就是经过一层标准的封装以及标准的运行时,来标准化微服务部署。这样从生命周期管理的角度来看,每个微服务之间的差别就会变少,共同点变多。编程

在这里插入图片描述

Kubernetes 之于微服务架构

Kubernetes 的做用是帮助把已经标准化的微服务最便捷地运行到底层资源上面。咱们讲到的存储、计算、网络都经过 Kubernetes 这层进行了统一抽象和封装,让已经被容器统一的微服务可以直接运行到 Kubernetes 平台。所以,运维人员不用再苦恼如何去把某个微服务分配到具体的某一个资源或计算单元上去。经过容器和容器平台,大大简化了微服务自己的生命周期管理,简化了微服务自身的运维管理问题,也促进了微服务更多地被企业所采用。网络

在这里插入图片描述

此外,Kubernetes 具备一个 Pod 的概念。一个 Pod 其实是一组容器的集合,在一个 Pod 中能够运行一个或多个容器。通常来说,当咱们采用微服务架构时,会把微服务的主体运行在主容器中,主容器的生命周期跟 Pod 自身的生命周期是一个耦合的状态。架构

除了主容器以外,在同一个 Pod 中还会运行一些边车容器(Sidecar 容器),为主容器提供一些辅助功能,好比:日志采集、网络代理、身份鉴权等,这样微服务除了自身提供的核心业务服务之外,经过 Kubernetes 咱们还能够动态添加一些额外的辅助能力,让微服务管理变得更健壮。运维

另外一方面,Pod 还提供了一些很是有用的功能:编程语言

  • 状态信息:Pod 会提供一个标准接口显示运行状态。例如,是否已经准备好接收流量,若是准备好接收流量,那么从 Ingress 流量就能够打到微服务上。若是运行状态不良,咱们能够尝试对这个容器进行修理、重启或删除,甚至是换到另外一个计算单元上去运行,为微服务总体的稳定性提供了保障。ide

  • 地址服务:每个 Pod 都有一个标准化的 DNS 地址服务,能够被统一的寻址。这样对于须要统一暴露出来 API 的日志、监控、追踪能力都有着很是大的帮助,能够根据这个 DNS 的地址来访问 Pod 所暴露的可观测性信息,便捷及时的发现运行时问题。微服务

因此咱们能够看到容器平台及容器其实在微观上也帮助了微服务具备更多能力、具备更强的健壮性以及具备更好的可观测性。单元测试

在这里插入图片描述

DevOps 之于微服务架构

当咱们将大型的单体应用拆解为多个微服务,也必定会增长 IT 系统研发协同、交付、运维的复杂性。云原生就在于帮助微服务解决生命周期管理以及运维管理难题。测试

由于微服务的数量很是多,部署、管理的工做量很大。代理

  • 开发方面:如何保证各个服务在持续开发的状况下仍然保持协同合做。
  • 测试方面:服务拆分后,几乎全部功能都会涉及多个服务。本来单个程序的测试变为服务间调用的测试。测试变得更加复杂。

而随着 CI/CD 概念推广以及容器技术普及,微服务将这两种理念和技术结合起来,造成新的:“微服务 + API + 平台” 的开发模式,提出了容器化微服务的持续交付概念。

传统单体架构 DevOps 开发方式,要求产品队伍横跨产品管理、开发、QA、DBA 以及系统运维管理。
在这里插入图片描述

微服务架构 DevOps 开发方式,将一个大臃肿的总体产品开发队伍切分为根据不一样微服务的划分的产品队伍,以及一个大的总体的平台队伍负责运营管理,二者之间经过 API 交互,作到了松耦合隔绝。

在这里插入图片描述

在测试方面,微服务架构下的测试分为三个层次:

  1. 端到端(集成)测试:覆盖整个系统,通常在用户界面进行测试。因为端到端测试实施难度较大,通常只对核心功能作端到端测试。一旦端到端测试失败,则须要将其分解到单元测试,分析失败缘由,而后编写单元测试来重现这个问题,这样将来咱们即可以更快地捕获一样的错误。
  2. 服务(功能)测试:针对服务接口进行测试。服务测试的难度在于服务会常常依赖一些其余服务。这个问题能够经过 Mock Server 解决:
  3. 单元测试:针对代码单元进行测试。咱们通常会编写大量的单元测试(包括回归测试)尽可能覆盖全部代码。

三种测试从上到下实施的容易程度递增,可是测试效果递减。端到端测试最费时费力,可是经过测试后咱们对系统最有信心。单元测试最容易实施,效率也最高,可是测试后不能保证整个系统没有问题。

在这里插入图片描述

云原生的微服务架构 — 云原生应用架构

综上,咱们能够感觉到微服务架构与容器、Kubernetes、DevOps 等云原生关键技术天然地走到了一块儿,构成了云原生应用架构的雏形。

在这里插入图片描述

云原生应用架构具备下述特色:

  • 平台化:利用云做为一个平台,为微服务架构进行更多的赋能。
  • 标准化:微服务自己的部署、运维,微服务之间与其它服务之间的通信都能作到标准化,让服务与服务之间的互联互通变得更容易,服务可以跨到不一样的平台上,作到一次编写、一次定义、多处运行。
  • 轻量化:让研发人员关心核心业务代码、业务逻辑的研发,而不是复杂的微服务治理相关的逻辑研发。
  • 产品化:但愿能构建微服务相关的产品,以产品化的方式支持你们使用微服务架构,让它变得更好用、更易用。

在这里插入图片描述

相关文章
相关标签/搜索