微服务架构该怎么落地?选用什么样的技术栈?所有的互联网公司都在积极尝试自己的微服务落地方案。

Spring Cloud

其中在Java领域最引人注目的就是 Spring Cloud 提供的方案了。

微服务架构 开发语言 微服务开发框架有哪些_微服务架构 开发语言

Spring Cloud 被称为构建分布式微服务系统的“全家桶”,它并不是某一门技术,而是一系列微服务解决方案或框架的有序集合。它将市面上成熟的、经过验证的微服务框架整合起来,并进行封装,最终为开发人员提供的一套简单易懂、易部署和易维护的分布式系统开发工具包。

Spring Cloud 是微服务架构下的一站式解决方案。Spring Cloud 专注于全局微服务的协调和治理工作。换句话说,Spring Cloud 相当于微服务的大管家,负责将 Spring Boot 开发的一个个微服务管理起来,并为它们提供配置管理、服务发现、断路器、路由、等等分布式场景下的服务能力。

Spring Cloud 的常用组件

  • Spring Cloud Consul:服务注册中心组件,包含服务注册与发现功能的实现。
  • Spring Cloud Config:配置管理组件,支持使用 Git 存储配置内容,实现应用配置的外部化存储,并支持在客户端对配置进行刷新、加密、解密等操作。
  • Spring Cloud LoadBalancer:客户端负载均衡组件。
  • Spring Cloud OpenFeign:声明式服务调用组件。
  • Spring Cloud Gateway:网关框架,提供了网关的基本功能,例如安全、监控/指标和限流等。
  • Spring Cloud Sleuth:分布式链路跟踪组件,能完美整合 Zipkin。
  • Spring Cloud Stream:消息中间件组件,集成了 Kafka 和 RabbitMQ 等消息中间件,实现了应用程序与消息中间件之间的隔离。
  • Spring Cloud Sentinel:容错管理组件,为微服务提供流量控制、熔断降级的功能。

Spring Cloud Alibaba

Spring Cloud Alibaba 是 Spring Cloud下的一个子项目,是阿里巴巴结合自身丰富的微服务实践而推出的解决方案,2018 年 7 月,Spring Cloud Alibaba 正式开源,并进入 Spring Cloud 孵化器中孵化。2019 年 7 月,Spring Cloud 官方宣布 Spring Cloud Alibaba 毕业,并将仓库迁移到 Alibaba Github OSS 下。

微服务架构 开发语言 微服务开发框架有哪些_java_02

Spring Cloud Alibaba 吸收了 Spring Cloud Netflix 的核心架构思想,并进行了高性能改进。自 Spring Cloud Netflix 进入停更维护后,Spring Cloud Alibaba 逐渐代替它成为主流的微服务框架,是 Spring Cloud 第二代实现的主要组成部分。

Spring Cloud Alibaba 的常用组件

  • Dubbo:Apache Dubbo 是一款高性能 Java RPC 框架。
  • Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
  • Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
  • Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。
  • RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的 消息发布与订阅服务。

Dubbo

Dubbo 是一款 RPC 服务开发框架,最初在 2008 年由 Alibaba 捐献开源,在 2017 年,Dubbo 正式捐献到 Apache 软件基金会并成为 Apache 顶级项目。

微服务架构 开发语言 微服务开发框架有哪些_spring cloud_03

Dubbo用于解决微服务架构下的服务治理与通信问题,官方提供了 Java、Golang 等多语言 SDK 实现。使用 Dubbo 开发的微服务原生具备相互之间的远程地址发现与通信能力, 利用 Dubbo 提供的丰富服务治理特性,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。