微服务架构 | 青训营笔记

75 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第9天

前言

今天主要讲了现代架构中的基础架构——微服务架构

系统架构演变历史

image.png 最开始,一台单机就可以承担全部的服务。

随着互联网的爆炸性发展,单机的服务不足以承担复杂繁重服务,因此产生了垂直应用服务架构。

由于垂直应用服务架构不易进行业务迭代,且为了将公共模块单独服务,因此出现了分布式架构。

为了解决分布式服务调用关系过于复杂,服务仍然存在冗余的问题,提出了soa架构。

soa架构是一种面向服务的架构,她一定程度上按照服务进行拆分,但是汇总于注册中心,整个系统从设计上仍然是中心化的,需要从上至下去设计划分。并且重构困难。

为了解决上述问题,服务彻底进行拆分,自下而上的设计,提高了迭代效率,同时,使得故障可控。但是这也使得运维治理的难度急剧增加,也增大了整个系统的复杂性。

微服务架构

基本概念

  • 服务:一组具有相同逻辑的运行实体
  • 实例:一个服务中,每个运行实体即为一个实例
  • 实例与进程的关系:没有必然的对应关系,可以一个实例对应一个或多个进程,反之不常见
  • 集群:服务内部的逻辑划分,包含多个实例
  • 服务包含集群,集群包含实例
  • 常见的实例承载形式:进程,VM,k8s pod
  • 有状态/无状态服务:服务实例是否存储了可持久化的数据
  • 服务间通信:对单体服务,不同模块通信只是简单的函数调用;对于微服务,服务间通信意味着网络传输;

服务注册与发现

服务注册

在实现服务注册的时候,因为服务的地址总是动态变化的,因此不能使用硬编码的形式指定地址。同时由于本地dns存在缓存,因此也不能使用dns服务。为了解决上述问题,这里使用一个注册中心用于存储服务名到地址的映射。

服务发现

上线

  1. 启动实例
  2. 健康检查
  3. 添加到注册中心

下线

  1. 从服务中心删除映射
  2. 删除实例

总结

通过学习了解了系统架构的发展历史,以及各种架构的优缺点和使用条件,也学习了微服务的基本概念和服务注册与发现的原理。