文章目录
前言
为什么要使用分布式|微服务的架构体系
因为目前开发的应用同时使用的用户越来越多,数量上亿,而且遍布全世界,在天南地北的高并发环境下,既要迅捷无比又要安全稳定,于是诞生了分布式微服务这样的架构体系。本文在此体系下主要就Spring-Cloud的架构体系做一些详细的阐述。
一、分布式微服务的开发模式
分布式微服务的这种开发模式,是将一个完整的项目,划分成多个独立的组件,这些组件分布在不同的网络或者地域,彼此之间通过网络来通信和协调,在天南地北的用户面前,体验上如同一个系统。
与单体系统的区别:这里就不得不说著名的CAP理论。
CAP分别是:1、Consistency :指数据的强一致性。如果写入某个数据成功,之后读取,读到的都是新 写入的数据:如果写入失败,之后读取的都不是写入失败的数据。2、Availability :指服务的可用性。3、Partition-tolerance :指分区容错。
在分布式系统中 P是基本要求,而单体服务是 CA 系统, 微服务系统通常是 AP 系统,即同时满足了可用性和分区容错。
二、Spring-Cloud
1.简介
这里展示一段官方定义
机翻如下:
Spring Cloud 为开发者提供了快速构建分布式系统中一些常用模式的工具(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)。分布式系统的协调导致样板模式,使用 Spring Cloud 开发人员可以快速建立实现这些模式的服务和应用程序。它们将在任何分布式环境中运行良好,包括开发人员自己的笔记本电脑、裸机数据中心和 Cloud Foundry 等托管平台。
主要有以下几个特征:
-
分布式/版本化配置
-
服务注册和发现
-
路由
-
服务到服务调用
-
负载均衡
-
断路器
-
全局锁
-
领导选举和集群状态
-
分布式消息传递
2.具体框架工具选择
Spring-Cloud的项目很多,主要包括:
- spring-cloud-netflix 最早开源
-
- eureka 服务发现
- ribbon 负载均衡
- hyxtrix 服务容错
- archlius 配置管理
- zuul 服务网关
- ...
- spring-cloud-alibaba 国产
-
- nacos 服务发现 配置管理
- dubbo 服务调用
- sentinel 服务容错
- seata 分布式事务
- ...
- spring-cloud 官方
-
- gateway 服务网关
- loadbalancer