这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
这门课程包含了四个大章节
包括 1 微服务架构介绍 2 微服务架构原理与特征 3 核心服务治理能力 4 字节跳动服务治理实践
其中感觉最需要记录的内容是微服务架构原理与特征。
首先课程开始之前的疑问是,什么是微服务架构,从系统架构的演变历史可以明白:
单体架构 => 垂直应用架构 => 分布式架构 => SOA架构 => 微服务架构
从最初的一个项目包含了所有功能(单体架构),逐渐将功能剥离(垂直应用架构),再到抽离公共业务独立(分布式架构),然后进行服务注册(SOA架构),最后演变成为各种业务完全独立的结构(微服务架构)
微服务架构原理与特征
这是本节课的重点。
明确服务和实例的区别。服务就是指对外的服务,比如提供token解析功能。服务可能由多个实例构成。实例其实就是运行中的代码实体。所以服务可以理解为一个或多个完全相同的代码运行实体。
不同服务间需要通信,普通单体服务使用简单的函数调用,微服务的服务通信则使用网络通信。
这面临一个问题,即不同的服务如何知道怎么与其他服务进行通信?难道将IP:PORT写在服务代码中吗?
解决这个问题的关键是使用服务注册及发现。
服务注册及发现的本质是新增一个统一的服务注册中心,用于存储服务名到服务实例的映射。
同时,由于添加了服务注册及发现,那么服务实例的上线和下线就有了一些问题需要解决:上线和下线不能直接关闭服务实例,而是需要先在服务注册中心注销服务实例,将在该服务实例上的流量引流到别的实例,再进行关闭。
最后,微服务在实现最终暴露在外界的接口时,客户端一般可以发送http请求到API Gateway,再往内部的微服务之间的通信一般使用RPC。