[Java EE]Spring Boot 与 Spring Cloud的关系/过去-现在-未来

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 /

X 参考/推荐资料

原文地址:https://www.cnblogs.com/johnnyzen/p/13809320.html