# 16.microservices微服务

## 16.microservices微服务

## 一 概述

### 1 简介

首先看看传统单体架构服务的缺点：

1. 高耦合：不同模块之间逻辑耦合性高，改了其中一个模块其他的模块也要重新打包部署
2. 容易出错，复杂性变高
   1. 改了一个模块的依赖，其他模块也需要更改依赖版本，容易出错
   2. 任何一块代码逻辑错误可能导致整个系统崩溃
3. 部署时间久
4. 扩展性差，无法按需求伸缩：一些并发量高的模块和一些并发量低的模块部署在一起容易导致服务器压力过大系统效率低下，吞吐量变低

什么是微服务：每个微服务可独立运行在自己的进程里，各个服务可以采用不同的语言编写，使用不同的数据存储技术，每个服务为独立的业务开发，一个微服务一般完成某个特定的功能，比如：订单管理、用户管理等。微服务之间通过一些轻量的通信机制进行通信，例如通过REST API或者RPC的方式进行调用。一系列独立运行的微服务共同构建起了整个系统。

为什么需要微服务、微服务的特点：

1. 低耦合
2. 部署快
3. 扩展性好
   1. 技术栈不受限
   2. 按需伸缩
   3. DevOps

微服务也有代价：

1. 分布式的复杂性
2. 接口调整成本高
3. 运维要求较高
4. 重复劳动

微服务设计原则：

1. 单一职责原则
2. 服务自治原则
3. 轻量级通信原则
4. 接口明确原则

### 4 文档等

1. 马丁·福勒微服务架构博文：<https://martinfowler.com/articles/microservices.html>
2. IBM developer 微服务介绍：<https://developer.ibm.com/zh/tutorials/cl-ibm-cloud-microservices-in-action-part-1-trs/>

## 三 基础

### 1 Distributed Tracing（分布式跟踪、服务追踪）

定位Single Point of Failure

## 五 经验

### 1 他人评价

1. 网友：
   1. 微服务不是银弹，数据库拆分不是万能的。
