回顾:

  • Java基础
  • jdbc + mysql 数据持久化
  • Servlet 浏览器支持
  • html/css/js -> vue2(vue+router+vuex+cli) GUI 用户界面
  • spring / mybatis(hibernate、jpa) / spring-mvc -> spring-boot 快速开发框架
  • linux / docker / nginx /maven 部署
  • redis / rocketmq / xxl-job (quartz \ spring-task)/ minio + spring-ai、spring-ai-alibaba(agentScope)

规模

联网设备增加 业务场景增多, 共享单车、共享出租车、美团、抖音...

带来数据量,并发量,业务复杂度的几何级增长 ### 企业级架构演进 单体架构 -> SOA架构(基于服务的架构) -> MSA微服务架构 -> 云原生架构(Cloud-Native)-> AI原生架构

image-gLMn.png

微服务架构风格这种开发方法,是以开发一组小型服务的方式来开发一个独立的应用系统。其中每个小型服务都运行在自己的进程中,并经常采用HTTP资源API这样轻量的机制来相互通信。这些服务围绕业务功能进行构建,并能通过全自动的部署机制来进行独立部署。这些微服务可以使用不同的语言来编写,并且可以使用不同的数据存储技术。对这些微服务,我们仅做最低限度的集中管理。 > > 世界级软件架构大师 Martin Fowler >

分布式基本概念

分布式系统就是一组部署在同一个网络下的多个通过网络来通信协调组件,对外部而言表现的如同一个系统。

微服务架构 是 分布式系统 ;

分布式系统 不一定是 微服务架构 ;

分布式系统的两种形式: 1. 微服务架构,每个组件代码不同,互相配合 2. 集群(提升性能,提高可用性)

image-NipD.png

基本原理:

CAP定理 A原子性

C一致性 I隔离性 D持久性 C:一致性,数据处于一致的状态 A:可用性,整个分布式系统是可以使用 P:分区容错性,因为网络故障,产生网络分区,分布式能够处理这种网络分区的错误 CAP不可兼得 意义:降低分布式系统设计和实现的门槛

基本定理:

BASE理论

BA: 基本可用 S: 软状态 E: 最终一致性 意义:降低了分布式系统的设计和实现的门槛

Spring-Cloud介绍

Spring Cloud 为开发者提供了相关工具,以便快速构建分布式系统中的一些常见模式(例如配置管理、服务发现、断路器、智能路由、微型代理、控制总线以及短生命周期的微服务)。分布式系统的协调会引入大量模板化模式,而使用 Spring Cloud,开发者可以快速启动并运行实现了这些模式的服务和应用程序。它们能够在任何分布式环境中良好运行,包括开发者自己的笔记本电脑、裸机数据中心,以及 Cloud Foundry 等托管平台。

spring-cloud 是一个**微服务架构工具集,**伞形项目,由多个子项目以及组件组成

spring-cloud子项目

  • spring-cloud-netflix 第一代微服务
  • spring-cloud-alibaba
  • spring-cloud 官方

技术选型:

  • spring-cloud-netflix 第一代微服务
  • spring-cloud-alibaba + spring-cloud 官方 技术选型:
  • 配置管理: nacos[a]
  • 服务发现:nacos[a]
  • 负载均衡:loadbalancer[c]
  • 服务调用:openfeign[c]
  • 分布式事务:seata[a]
  • 服务容错: sentinel[a]
  • 分布式追踪:zipkin[c]
  • 服务网关:gateway[a] ### 服务划分 服务分层:
  • 聚合服务
  • 原子服务

调用关系:

  1. 上层可以调用下层,下层不能调用上层,如果一定要调用用MQ解耦

  2. 同一层级支持互调

  3. 上层的任意服务可以调用下层的任意服务

  4. 每个服务有自己独立的数据库

    image-Xppr.png