SpringCloud学习分享

1. 应用架构对比

单体应用架构
优点易于开发、测试、部署。
请求直接从客户端端直接访问服务(表示层-业务层-数据访问层-DB层)
缺点也很明显,随着项目越来越大,系统灵活度会越来越低,而且启动也会越来越慢,系统的性能和扩展性也会降低。

分布式架构
简单理解可以为,多个单体应用的合集,相互通过某种技术通信,以实现依赖解耦(业务垂直切分)。
但是在这个阶段缺乏技术栈,没有可靠的进程间调用,实现技术复杂。

SOA架构
SOA(Service Oriented Architecture)“面向服务的架构”,是一种设计方法,系统、业务的服务化,解决了分布式架构的通信问题,变成一个可治理的星形网络。(可以说在每个独立业务(服务)上,还是一个单体应用)

微服务架构
是SOA的一种升华,将业务(服务)彻底组件化和服务化,拆分为多个独立开发、设计、运行的小应用,在通过成熟的网络通信技术相互访问,降低了模块之间的耦合度,可以由不同团队负责不同子项目。再加上基础设施(devops、自动化部署、监控等),即可实现完整的去中心化的微服务。

2. SpringCloud技术

Developing distributed systems can be challenging. Complexity is moved from the application layer to the network layer and demands greater interaction between services. Making your code ‘cloud-native’ means dealing with 12-factor issues such as external configuration, statelessness, logging, and connecting to backing services. The Spring Cloud suite of projects contains many of the services you need to make your applications run in the cloud.

功能对应方案
通信方式REST/HTTP
服务发现/注册Eureka
负载均衡Ribbon
熔断机制Hytrix
配置中心Spring Cloud Config
网关Zuul,Gateway
服务监控Turbine
多语言Rest支持多语言
社区活跃

2.1 五大组件

  1. 服务发现
  2. 服务网关
  3. 分布式配置
  4. 断路器
  5. 负载均衡

2.1 服务发现

将服务注册到服务发现模块中;
服务发现维护各个服务模块状态;
轮询查看服务是否能够访问(健康检查);
客户端去服务发现查询需要访问的服务位置;

名称
Zookeeper
Etcd
Consul
Eureka
Doozer
NSQ
Serf
SkyDNS

image.png

image.png

Eureka Server:表示注册中心集群
us-east-xxx:表示集群所在的区域
Application Service:表示服务提供者
Application Client:表示服务消费者
Eureka Client:表示Eureka客户端

Consistency:数据一致性,在数据多副本时,由于网络等问题导致数据写入部分副本成功时,进而造成副本直接数据不一致,存在冲突。要有一致性,要能都能读到,要么都不能读到。
Availability:服务可用性,在任何时候客户端对集群进行读写操作时,请求都能正常响应
Partition Tolerance:分区容忍,在网络发生故障时,整个集群被分割为多个无法相互通信的分区时,集群仍然可用。

2.2 服务网关

微服务架构中标配组件; 具有统一接入功能、协议适配功能、流量管控功能、安全防护功能;

image.png

在微服务中非常有关键作用,主要功能有协议适配,安全策略,路由转发,权限校验,限流控制,日志监控,监控埋点等。

image.png

2.3 分布式配置

集中化管理应用在不同环境、不同集群的配置;
配置修改后能够推送到应用端;
具有版本发布管理功能、权限管理、灰度发布;

对比性Spring Cloud ConfigNetflix archaiusCtrip apollo
动、静态配置管理支持支持支持
统一管理支持不支持支持
配置更新推送手动推送手动推送支持
实例配置监控结合Spring Admin不支持支持
单点故障支持HA部署支持HA部署支持HA部署
多数据中心部署支持支持支持
配置界面Git、数据库、文件统一界面

image.png
image.png

2.4 断路器

解决分布式中,服务与服务之间相互调用中,因网络原因或自身原因,带来的服务不可用问题;
避免出现线程阻塞,故障传播,带来的“雪崩效应”;

image.png
image.png
image.png

2.5 负载均衡

是客户端负载均衡器;
拦截请求、根据应用名称访问;
具有多种均衡策略;

image.png
image.png

3. 云平台架构

image.png

9. 关键词

分布式配置,熔断,限流,降级,注册机制,服务发现,API网关,服务治理,CAP,BASE,日志管理,监控管理,异常处理,容错处理,服务回滚,网络通讯,消息格式,容器,远程备份,遥测,报警,跟踪,共享扩展,时区,API版本,网络延迟,健康检查,负载均衡,CDC测试,动态路由,弹性,伸缩性,服务续约,服务下线,服务剔除,数据一致性,服务可用性,分区容错性,Git ,RocketMQ,Nacos,Alibaba Cloud ACM,Alibaba Cloud OSS,Alibaba Cloud SchedulerX,Spring Cloud Zuul,Spring Cloud Gateway,Spring Cloud Eureka,Spring Cloud Config,Spring Cloud Hystrix, Spring Cloud Ribbon, Spring Cloud Feign