微服务架构 | 青训营笔记

81 阅读5分钟

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

课程内容与选题缘由

现在团队的项目是基于gin框架的,而我自己也有意向将项目移植为微服务架构的项目,因此也往回翻看了微服务框架的课程,也趁这个机会汇总一篇相关的笔记。

微服务架构的原理

1.png 微服务架构的原理,是将一个应用程序拆分成一组小型、松耦合的服务,每个服务都运行在自己的进程中,通过轻量级的通信机制相互协作。

微服务的本质就是使整个应用程序中的所有功能都拆分成服务,并将这些服务部署在云上或容器化平台上,从而实现服务的可扩展性和可靠性。这种架构可以使得应用程序更容易管理和部署,并可以更加灵活地进行功能更新和维护。

将程序彻底服务化也可以提高应用程序的可伸缩性,使得应用程序可以在需要时自动扩展缩减服务的数量,从而更好地应对流量峰值和变化。

微服务的核心要素

微服务的核心要素主要有如下三点:

  • 服务治理
  • 可观测性
  • 安全

服务治理

微服务架构中包含大量的服务,因此服务治理是微服务中的重要一环。

服务治理包括服务注册服务发现服务路由服务负载均衡等功能,以确保每个服务都能够被正确地发现和访问

此外,服务治理需要提供熔断、降级、限流等功能,保障服务的可靠性和稳定性。

可观测性

由于微服务架构的分布式特性,服务间的通信变得更加复杂,因此可观测性变得尤为重要。

微服务架构的项目需要实现日志采集分析指标监控链路追踪、异常报警等功能,可以帮助我们更好地理解和排查服务间的问题

安全

微服务架构更需要考虑安全性,包括身份认证、授权、数据加密等。由于服务间的通信往往是通过网络进行的,因此需要确保服务之间的通信是安全的。此外,还需要保护服务端点免受恶意攻击和数据泄露的威胁,比如黑产攻击等。

服务注册与发现

2.png

在微服务架构中,服务注册和服务发现是非常重要的概念。

服务注册是指将微服务的信息(如服务名、IP地址、端口等)注册到服务注册中心。

服务发现是指客户端从服务注册中心获取所需服务的信息,以便与服务进行通信。

服务注册和服务发现的具体过程如下:

  1. 服务注册:微服务启动时,会向服务注册中心发送注册请求,并将自己的信息注册到服务注册中心中。服务注册中心通常使用键值存储来记录所有已注册的服务信息,例如ZooKeeper和etcd等。
  2. 服务发现:客户端想要使用某个微服务时,会向服务注册中心发送查询请求,以获取所需服务的信息。服务注册中心会返回一个包含所需服务信息的响应,例如服务名、IP地址、端口号等。客户端可以使用这些信息来与所需服务进行通信。
  3. 心跳机制:为了确保服务注册中心中的服务信息是最新的,微服务需要定期向服务注册中心发送心跳请求,以表明它仍然处于活动状态。服务注册中心会根据心跳请求的响应来判断微服务是否还处于活动状态,并将不再发送心跳请求的服务信息从服务注册中心中移除。

服务发布

常见的服务发布方式有如下两种:

  • 蓝绿发布
  • 灰度发布(金丝雀发布)

蓝绿发布

3.png

蓝绿发布是指在生产环境中同时维护两个相同的环境,一个是蓝色环境,一个是绿色环境。在蓝色环境中运行当前稳定的版本,而在绿色环境中运行新版本。发布新版本时,将流量逐渐从蓝色环境切换到绿色环境直到所有流量都切换到绿色环境。此时,蓝色环境可以被关闭或保留为备份环境。

蓝绿发布的过程

  • 在绿色环境中发布新版本。
  • 使用负载均衡器逐渐将流量从蓝色环境切换到绿色环境。
  • 监控新版本的运行情况,如果发现问题,则可以迅速将流量切换回蓝色环境。

蓝绿发布的特点

可以提供无缝的升级和回退,能够最大程度地减少停机时间。

但需要准备两套相同的环境,一定程度上会增加成本。

灰度发布

4.png

灰度发布是指在生产环境中,逐步将新版本的功能发布给一小部分用户,以便测试新版本的稳定性和功能。如果测试成功,逐步将新版本的功能扩展到所有用户。如果出现问题,可以快速回滚到旧版本。

灰度发布的过程

  • 将新版本的功能发布给一小部分用户。
  • 监控新版本的运行情况,如果发现问题,则可以迅速回滚到旧版本。
  • 逐步将新版本的功能扩展到所有用户。

灰度发布的特点

灰度发布可以最大程度地减少风险,让新功能逐渐扩展到所有用户,避免对所有用户造成影响。但需要特别注意监控和回滚机制,以避免影响正常用户的体验。