认识【微服务】 | 青训营笔记

28 阅读3分钟

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

之前很频繁的听过关于微服务这个名词,今天着重学习一下微服务~

主要包括:

微服务架构的由来及原理;

服务治理功能是如何工作的。

微服务架构

微服务架构是当前大多数互联网公司的标准架构。

系统架构的演变历史

  1. 单体架构

:性能最高、冗余小;

: debug 困难、模块相互影响、模块分工、开发流程

  1. 垂直应用架构

按照业务线垂直划分

:业务独立开发维护

:不同业务存在冗余、每个业务还是单体,无法复用

  1. 分布式架构

抽出业务无关的公共模块,分布式独立部署运行。

:业务无关的独立服务

:一个模块服务有问题,可以导致整个系统崩溃;调用关系错综复杂;不同服务依然存在冗余。

  1. SOA 架构(Service Oriented Architecture)

开始引入“服务”“服务注册”的概念

缺陷:整个系统从设计上依然是中心化的;需要从上至下去设计划分;重构困难。

  1. 微服务架构

彻底的服务化、自上而下设计

优势:高效的开发迭代效率;故障可控。

:治理、运维难度;观测挑战;安全性;分布式系统。

image.png

微服务架构概览

cd74abbe094ab818f65bcea3ba00e49.png

微服务架构的核心要素

1. 服务治理

服务注册、服务发现、负载均衡、扩缩容、流量治理、稳定性治理。

2. 可观测性

日志采集、监控打点、链路追踪、日志分析、监控大盘、异常报警。

3. 安全

身份验证、认证授权、访问令牌、审计、传输加密、黑产攻击。

在此之前建议大家恶补一下架构初探分布式架构等课程。

微服务架构原理及特征

了解一些基本概念

  • 服务 (service)

一组具有相同逻辑运行实体

相同逻辑:一个服务它的代码是一样的;

运行实体:即:实例

  • 实例 (instance)

一个服务中,每个运行实体即为一个实例。

一个服务就是运行同一段代码的多个实体。

  • 实例与进程的关系

实例与进程之间没有必然对应关系,可以一个实例可以对应一个或多个进程 (反之不常见)。

  • 集群(cluster)

通常指服务内部的逻辑划分,包含多个实例。

每个逻辑的划分就叫做一个集群(服务包含集群、集群包含实例。)

  • 常见的实例承载形式

进程、VM、k8s pod......

  • 有状态/无状态服务

服务的实例是否存储了可持久化的数据(例如磁盘文件)

用 HDFS 更深入理解微服务的概念。。

  • 服务间通信

对于单体服务,不同模块通信只是简单的函数调用。

对于微服务,服务间通信意味着网络传输。

image.png

服务注册及发现

在代码层面,如何调用一个目标服务的地址(ip:port)?

首先由 DNS 引入

解决思路:新增一个统一的服务注册中心,用于存储服务名到服务实例的映射。

有了一个好的服务注册中心后完成服务实例上线及下线过程。


参考文章: 1)【Go微服务】一文入门go-micro

2)Go 微服务实战之如何使用 go-micro 写微服务应用