1. 微服务
微服务的引入解决了单体服务的复杂性,将明确定义的功能分成粒度更小的服务,是每个微服务独立迭代、独立部署,独立拓展、独立重启。达到服务之间的松耦合,进而使得业务的频繁变更在用户看来低感知。
相比传统单体架构,微服务的优点如下:
- 单个微服务复杂度降低
- 独立迭代、独立部署,独立拓展
- 跨语言
- 开发敏捷
同时,将单体服务拆分成微服务,也引入一些问题:
- 运维复杂
- 分布式系统复杂
进一步引出需要解决的网络延迟、容错性、消息序列化、网络稳定性、异步机制、版本差异、调用链过长等问题。
你可能会问了,既然微服务会引入这么多问题,那为什么还要用微服务呢?
答案就是:在真正需要使用微服务架构的地方使用微服务,会大大提高生产力。(所以一些单体架构就能满足的简单业务就没有必要使用微服务了)
2. 容器
容器的出现是以虚拟化技术为依托,容器在低级虚拟化的基础上,实现了OS层面之上的虚拟化,或者说进程级别的虚拟化。每个容器有自己的文件空间、网络、计算等资源,虽然它们共享主机的资源,但是这些资源是隔离的。
容器技术分为运行时和编排两个层次。
- 运行时:与容器的计算、存储、网络等实际的计算任务有关
- 编排:对容器集群的调度、服务发现和资源管理等
Docker和Kubernetes的组合实现了从服务打包成镜像、移植、编排、部署、扩缩容、维护等一系列工作。
3. 服务网格
在微服务中可分为两种架构,入侵式架构和非入侵式架构。
- 入侵式架构:服务框架嵌入程序代码,开发者在开发时需要组合各种插件实现业务之外的架构问题;如:RCP、负载均衡、熔断等。
- 非入侵式架构:业务之外的组件以代理的形式与应用程序部署在一起,结果应用程序的网络且对其透明,开发者只需注重业务本身,其中代表的技术就是服务网格。
Service Mesh使系统技术栈下移,可以说作为微服务的基础设施。用于处理服务间的请求响应的可靠传递、服务治理,解耦服务监控、链路追踪、熔断、服务发现等问题。
4. DevOps
关于DevOps,可能给不出一个具体的定义,但是这代表一种思想,一种开发、运维的模式,其主要目的在于将开发和运维之间的关系拉近,它永远是面向业务的。这种实践包括持续集成、持续测试、持续交付、持续部署,使得业务可以滚动式的升级。打通团队从研发、测试、运维甚至产品、客户反馈的业务链条。来适应快速变化的市场和稍纵即逝的风口。