如果选择微服务架构的话,以上题目都必要我们本身解决,我们也可以拿市场上比力成熟的技术拿来用,在 Java 领域最被广泛利用的就是下面要讲的 Spring Cloud。
Spring Cloud
介绍
可以先辈入 Spring Cloud 的官网看看:Spring Cloud 官网
微服务拆分以后碰到的各种题目都有对应的解决方案和微服务组件,而 Spring Cloud 框架可以说是目前 Java 领域最全面的微服务组件的集合了。它提供了一些可以让开发人员快速构建分布式服务的工具,比如配置管理,服务发现,熔断,智能路由等,它们可以在任何分布式的情况中很好的工作;
简单来说,Spring Cloud 就是分布式微服务架构的一站式解决方案,是微服务架构落地的多种技术的集合:
Distributed/versioned configuration 分布式版本配置
Service registration and discovery 服务注册和发现
Routing 路由
Service-to-service calls 服务调用
Loading balancing 负载均衡
Circuit Breakers 熔断器
Distributed messageing 分布式消息
......
Spring Cloud 并不是 Spring 团队研发的框架,它只是把一些比力优秀的解决微服务架构中常见的题目的开源框架基于 Spring Cloud 规范进行了整合,并基于 Spring Boot 的风格,对这些组件进行封装,屏蔽掉了复杂的配置和实现原理,为开发者提供了开箱即用的微服务开发体验,这些开源技术的框架还是由各个公司来维护的,Spring Cloud 就是把这些管理起来的。
实现方案
在 Spring Cloud 规范下,最为着名的两种实现方案就是:
Spring Cloud Netflix
Spring Cloud Alibaba
之前 Spring Cloud 一度利用 Spring Cloud Netflix 最为默认解决方案,但是由于 Netflix 公司在2018年左右宣布焦点组件 Hystrix,Ribbon,Zuul 等进入维护状态,所以 Spring Cloud 也被迫宣布删除这些维护模块。
spring-cloud-netflix 也并没有从 Spring Cloud 的依赖中全部删除,只是从2020.0版本开始只管理 Eureka 组件。
而且 Cloud 官方也提供了一些替换建议,有些还是自研的:
Hystrix ---> Resilience4i
Hystrix Dashboard/Turbine ---> Micrmeter + Monitoring System
Ribbon ---> Spring Cloud Loadbalancer
Zuul 1 ---> Spring Cloud Gateway
Archaius ---> Spring Boot 外部配置 + Spring Cloud 配置
Spring Cloud Alibaba
Spring Cloud Alibaba 是阿里巴巴集团下的开源组件和云产物在 Spring Cloud 规范下实现。
如果说 Spring Cloud Netflix 是 Spring Cloud 的第一代实现,那么 Spring Cloud Alibaba 也可以看作是 Spring Cloud 的第二代实现,主要由 Nacos,Sentinel,Seate 等组件组成。
利用的 Spring Cloud 版本要与你的 Spring 项目的版本与官网保持一致,利用官网指定的版本,不然会出题目: