这是我参与「第五届青训营」伴学笔记创作活动的第9天
前言
今天主要讲了现代架构中的基础架构——微服务架构
系统架构演变历史
最开始,一台单机就可以承担全部的服务。
随着互联网的爆炸性发展,单机的服务不足以承担复杂繁重服务,因此产生了垂直应用服务架构。
由于垂直应用服务架构不易进行业务迭代,且为了将公共模块单独服务,因此出现了分布式架构。
为了解决分布式服务调用关系过于复杂,服务仍然存在冗余的问题,提出了soa架构。
soa架构是一种面向服务的架构,她一定程度上按照服务进行拆分,但是汇总于注册中心,整个系统从设计上仍然是中心化的,需要从上至下去设计划分。并且重构困难。
为了解决上述问题,服务彻底进行拆分,自下而上的设计,提高了迭代效率,同时,使得故障可控。但是这也使得运维治理的难度急剧增加,也增大了整个系统的复杂性。
微服务架构
基本概念
- 服务:一组具有相同逻辑的运行实体
- 实例:一个服务中,每个运行实体即为一个实例
- 实例与进程的关系:没有必然的对应关系,可以一个实例对应一个或多个进程,反之不常见
- 集群:服务内部的逻辑划分,包含多个实例
- 服务包含集群,集群包含实例
- 常见的实例承载形式:进程,VM,k8s pod
- 有状态/无状态服务:服务实例是否存储了可持久化的数据
- 服务间通信:对单体服务,不同模块通信只是简单的函数调用;对于微服务,服务间通信意味着网络传输;
服务注册与发现
服务注册
在实现服务注册的时候,因为服务的地址总是动态变化的,因此不能使用硬编码的形式指定地址。同时由于本地dns存在缓存,因此也不能使用dns服务。为了解决上述问题,这里使用一个注册中心用于存储服务名到地址的映射。
服务发现
上线
- 启动实例
- 健康检查
- 添加到注册中心
下线
- 从服务中心删除映射
- 删除实例
总结
通过学习了解了系统架构的发展历史,以及各种架构的优缺点和使用条件,也学习了微服务的基本概念和服务注册与发现的原理。