这是我参与「第五届青训营」笔记创作活动的第 10 天
|| 🎶今日笔记🎶 ||
微服务框架
- 概述
- 原理及特征
- 核心服务治理功能
概述?
过去几年中出现了“微服务架构”这一术语,它描述了将软件应用程序设计为若干个可独立部署的服务套件的特定方法。尽管这种架构风格尚未有精确的定义,但围绕业务能力、自动部署、端点智能以及语言和数据的分散控制等组织来说,它们还是存在着某些共同特征。
“微服务”——在拥挤的软件架构街道上又一个新名词。虽然我们的自然倾向是对它轻蔑一瞥,但这一术语描述了一种越来越具有吸引力的软件系统风格。在过去几年中,我们已经看到许多项目使用了这种风格,到目前为止其结果都是正向的,以至于它变成了我们 ThoughtWorks 许多同事构建企业应用程序的默认风格。然而遗憾的是,并没有太多信息可以概述微服务的风格以及如何实现。
简而言之,微服务架构风格是一种将单个应用程序开发为一套小型服务的方法,每个小型服务都在自己的进程中运行,并以轻量级机制(通常是 HTTP 资源 API)进行通信。这些服务围绕业务功能构建,可通过全自动部署机制来独立部署。这些服务共用一个最小型的集中式管理,它们可以使用不同的编程语言编写,并使用不同的数据存储技术。
-
系统架构的演进历史
- 单体架构
- 垂直应用架构
- 分布式架构
- SOA架构
- 微服务架构
优势: 1.开发效率 2业务独立设计 3.自下而上 4.故障隔离
劣势: 1.治理、运维难度 2.观测挑战 3.安全性 4.分布式系统
-
微服务架构的三大要素
- 服务治理
- 可观测性
- 安全
原理及特征
-
微服务架构中的基本概念及组件
- 服务、实例......
-
服务间通信
- RPC、HTTP
- 服务注册及服务发现
基本概念
-
服务(service):一组具有相同逻辑的运行实体。
-
实例(instance):一个服务中,每个运行实体即为一个实例。实例与进程的关系 实例与进程之间没有必然对应关系,可以一个实例可以对应一个或多个进程(反之不常见)。
-
集群(cluster):通常指服务内部的逻辑划分,包含多个实例。常见的实例承载形式:进程、VM、k8s pod … 有状态/无状态服务,服务的实例是否存储了可持久化的数据(例如磁盘文件)。
-
服务间通信:对于单体服务,不同模块通信只是简单的函数调用。对于微服务,服务间通信意味着网络传输。
服务注册及发现
- 问题
在代码层面,如何指定调用一个目标服务的地址(ip:port)?
- 解决思路
新增一个统一的服务注册中心,用于存储服务名到服务实例的映射。
- 服务实例上线及下线过程
流量特征
- 统一网关入口
- 内网通信多数采用 RPC
- 网状调用链路
核心服务治理功能
- 服务发布:蓝绿部署、灰度发布
- 基于地区、集群、实例、请求等维度的流量治理功能
- 几种常见的负载均衡策略
- 微服务架构中的稳定性治理功能
负载均衡
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡 (Load Balance) 其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
负载均衡负责分配请求在每个下游实例上的分布 常见的LB策略:轮询、随机、一致性hash等
~ End ~