云原生在实践中的技术组成

1. 微服务

微服务的引入解决了单体服务的复杂性,将明确定义的功能分成粒度更小的服务,是每个微服务独立迭代、独立部署,独立拓展、独立重启。达到服务之间的松耦合,进而使得业务的频繁变更在用户看来低感知。

相比传统单体架构,微服务的优点如下:

  • 单个微服务复杂度降低
  • 独立迭代、独立部署,独立拓展
  • 跨语言
  • 开发敏捷

同时,将单体服务拆分成微服务,也引入一些问题:

  • 运维复杂
  • 分布式系统复杂

进一步引出需要解决的网络延迟、容错性、消息序列化、网络稳定性、异步机制、版本差异、调用链过长等问题。

你可能会问了,既然微服务会引入这么多问题,那为什么还要用微服务呢?

答案就是:在真正需要使用微服务架构的地方使用微服务,会大大提高生产力。(所以一些单体架构就能满足的简单业务就没有必要使用微服务了)

2. 容器

容器的出现是以虚拟化技术为依托,容器在低级虚拟化的基础上,实现了OS层面之上的虚拟化,或者说进程级别的虚拟化。每个容器有自己的文件空间、网络、计算等资源,虽然它们共享主机的资源,但是这些资源是隔离的。

容器技术分为运行时编排两个层次。

  • 运行时:与容器的计算、存储、网络等实际的计算任务有关
  • 编排:对容器集群的调度、服务发现和资源管理等

Docker和Kubernetes的组合实现了从服务打包成镜像、移植、编排、部署、扩缩容、维护等一系列工作。

3. 服务网格

在微服务中可分为两种架构,入侵式架构和非入侵式架构。

  • 入侵式架构:服务框架嵌入程序代码,开发者在开发时需要组合各种插件实现业务之外的架构问题;如:RCP、负载均衡、熔断等。
  • 非入侵式架构:业务之外的组件以代理的形式与应用程序部署在一起,结果应用程序的网络且对其透明,开发者只需注重业务本身,其中代表的技术就是服务网格。

Service Mesh使系统技术栈下移,可以说作为微服务的基础设施。用于处理服务间的请求响应的可靠传递、服务治理,解耦服务监控、链路追踪、熔断、服务发现等问题。

4. DevOps

关于DevOps,可能给不出一个具体的定义,但是这代表一种思想,一种开发、运维的模式,其主要目的在于将开发和运维之间的关系拉近,它永远是面向业务的。这种实践包括持续集成、持续测试、持续交付、持续部署,使得业务可以滚动式的升级。打通团队从研发、测试、运维甚至产品、客户反馈的业务链条。来适应快速变化的市场和稍纵即逝的风口。

自认为是幻象波普星的来客
Built with Hugo
主题 StackJimmy 设计