1 微服务架构
从【单体应用】向【微服务架构】的转型,已成为企业数字化转型的主流趋势。
微服务架构的问题?
分布式架构的4个核心问题?
1 这么多服务,客户端如何访问? - 客户端访问 => API网关
2 这么多服务,服务(端)之间如何通信? - 服务端通信 => HTTP/RPC调用
3 这么多服务,如何治理? - 微服务治理 => 服务注册/发现
4 服务挂了,该怎么办? - 容灾 => 熔断机制
2 解决方案
Spring Cloud 是一套生态,就是来解决上述分布式架构的问题的。
1 Spring Cloud的生态中存在众多的解决方案/子框架
例如:
Spring Cloud Netflix
[ Apache Dubbo Zookeeper ]
Spring Cloud Alibaba
...
2 想使用Spring Cloud,必须掌握Spring Boot,因为Spring Cloud是基于/依赖于 Spring Boot
=> Spring boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开Spring boot
PS: 如果某不知名团队X,基于上述4个核心问题开发一套解决方案,也叫 Spring Cloud!
-
Spring Boot 与 Spring Cloud的关系?
Spring Cloud 基于/依赖于 Spring Boot
Spring Cloud 包含:
- 微服务(Spring Boot) /
- API网关: API Gateway /
- 服务注册/发现 : Service Registry Center / Config Server /
- 通信调用
- 熔断机制
- ...
Spring Boot - Build Anything
Spring Cloud - Coordinate(协调) Anything
Spring Cloud Data Flow - Connect Everything
2-1 Spring Cloud Netflix
NetFlix: 出来了一套解决方案——Spring Cloud Netflix!
-
API网关 - zuul组件 (NetFlix开源)
-
网络通信/HTTP调用 - Feign (NetFlix开源)
Feign --> 基于 HTTPClient --> HTTP的通信方式 [同步且阻塞]
-
服务注册/发现 - Eureka (NetFlix开源)
-
熔断机制 - Hystrix (NetFlix开源)
Hystrix [hɪst'rɪks],译为 豪猪(因其背上长满棘刺,从而拥有了自我保护的能力)
Hystrix是Netflix开源的一款容错框架,同样具有自我保护能力。
2018年底,NetFlix宣布无限期停止维护。
开源软件不再维护,就会脱节,乃至被社区和生态弃用? 下一步怎么走?
2-2 Apache Dubbo Zookeeper
Alibaba: 出来了一套解决方案——Apache Dubbo Zookeeper!
Alibaba开源的, 一款基于Java的、高性能的RPC通信框架
http://dubbo.apache.org/zh-cn/ / https://zookeeper.apache.org/
- API网关 - 无
需使用第三方组件 或 自己实现
- 网络通信/RPC调用 - Dubbo (Alibaba开源)
- 服务注册/发现 - Zookeeper
Zookeeper: 动物园管理者 (Hadoop / Hive / ...)
- 熔断机制 - Hystrix (NetFlix开源)
继续 借用 Hystrix
2-3 Spring Cloud Alibaba
Alibaba: 又出来了一套解决方案——Spring Cloud Alibaba
...
2-4 Future: 服务网格——Service Mesh
目前,又提出了一种解决方案————服务网格(下一代微服务标准, Service Mesh)
代表性的具体解决方案: Istio (未来,可能需要掌握)
3 小结: Spring Cloud
万变不离其宗,一通百通!
- API网关 - 服务路由
Tyk / Kong / Orange / Netflix zuul / apiaxle / api-umbrella /
- 通信/调用 - HTTP/RPC框架 (同步/异步 | 阻塞/非阻塞)
RPC调用框架: Dubbo(Alibaba/Java) / gRPC(Google/支持多语言) / Thrift (Facebook/支持多语言) / Tars(Tencent/C++) / ...
若项目涉及多个语言平台之间的相互调用,就应该选择跨语言平台的 RPC 框架。
HTTP调用框架: Feign(from NetFlix)
注: RestFul API规范
底层网络通信框架: Netty / ...
- 服务注册/发现 - 解决高可用/...
Nacos / Eureka / Zookeeper / consul
- 熔断机制 - 解决服务降级(服务崩溃后怎么办?)
Hystrix /