1 架构演变

单体应用架构—->垂直应用架构—->分布式架构—->SOA架构—->微服务架构
微服务架构是通过应用领域模型等理论,将庞大的单体应用拆分为更细粒度的小型服务,每个服务都可以独立部署、测试和发布,满足了快速迭代高可用保障的要求。

2 服务组件

image.png

3 服务治理和配置-Nacos

什么是服务治理

服务治理是微服务架构中最核心最基本的模块。用于实现各个微服务的自动化注册与发现
image.png

常见的注册中心

  • Eureka:AP原则
  • Zookeeper:CP原则
  • Nacos:同时支持CP和AP原则,支持切换

    Nacos概念

    (1)领域模型
    Nacos 领域模型描述了服务与实例之间的边界和层级关系。
概念 描述
服务 可以配置元数据和服务保护阈值等信息
集群 可以配置元数据
实例 编辑实例的元数据信息、修改它的状态或者配置路由权重

(2)数据模型
通过 Namespace + Group + Service/DataID,我们就可以精准定位到一个具体的微服务。

概念 描述
Namespace 用来区分环境
Group 用来区分项目
Service/DataID 用来区分具体的服务

(3)基本架构
image.png
Naming Service,用来做服务发现的模块;
Config Service,用来提供配置项管理、动态更新配置和元数据的功能
Nacos Core 模块,提供一系列的平台基础功能

Nacos使用

  1. docker pull nacos/nacos-server
docker run -p 9901:8848 
--env MODE=cluster 
--env MYSQL_SERVICE_DB_NAME=nacos 
--env MYSQL_SERVICE_HOST=192.168.223.128 
--env MYSQL_SERVICE_PASSWORD=root 
--env MYSQL_SERVICE_PORT=3306
--env MYSQL_SERVICE_USER=root 
--env NACOS_SERVERS="192.168.223.128:9902 192.168.223.128:9903" 
--env PREFER_HOST_MODE=ip 
--env SPRING_DATASOURCE_PLATFORM=mysql 
--name nacos01
--restart always
<!-- 服务发现 -->
<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 配置管理Nacos Config -->
<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

Nacos底层实现

(1)服务发现
Nacos Client 通过一种主动轮询的机制从 Nacos Server 获取服务注册信息,包括地址列表、group 分组、cluster 名称等一系列数据。即客户端定时主动从服务端拉取的模式。负责拉取服务的任务是 UpdateTask 类。

2 负载均衡

(1)负载均衡简单分类

  • 集中式
    即在服务的提供方和消费方之间使用独立的LB设施,如Nginx,由该设施负责把访问请求通过某种策略转发至服务的提供方!
  • 进程式
    将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选出一个合适的服务器。Ribbon 就属于进程内LB,它只是一个类库,集成于消费方进程,消费方通过它来获取到服务提供方的地址!

    3 服务调用

4 服务配置

5 服务容错

Sentinel

docker pull bladex/sentinel-dashboard
docker run 
-p 8858:8858
--name sentinel 
--restart=always  
-d bladex/sentinel-dashboard:latest

6 链路追踪


7服务网关

8 消息驱动

9 分布式事务

微服务架构是一种架构模式,或者说是一种架构风格,它体长将单一的应用程序划分成一组小的服务,每个服务运行在其独立的自己的进程内,服务之间互相协调,互相配置,为用户提供最终价值,服务之间采用轻量级的通信机制(HTTP)互相沟通。

3 微服务理论

1 CAP是什么?

  • C (Consistency) 强一致性
  • A (Availability) 可用性
  • P (Partition tolerance) 分区容错性
    一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求
  • CA:单点集群,满足一致性,可用性的系统,通常可扩展性较差
  • CP:满足一致性,分区容错的系统,通常性能不是特别高
  • AP:满足可用性,分区容错的系统,通常可能对一致性要求低一些
    Zookeeper保证的是CP,如果客户端心跳消失的时候,zookeeper会很快剔除该服务,之后就无法提供需求
    Eureka保证的是AP,当Eureka客户端心跳消失的时候,那Eureka服务端就会启动自我保护机制,不会剔除该EurekaClient客户端的服务,依然可以提供需求

Nacaos默认是AP可以