微服务¶
微服务可以指一种通过多个小型服务组合来构建单个应用的架构风格,也可以指构成该应用的各个小型服务,即一些协同工作、小而自治的服务。 微服务架构具有技术异构、故障隔离、敏捷开发、独立部署,弹性扩缩、代码可复用等优势,因此越来越多的企业开始采用微服务架构开发应用。 但是,随着业务的不断扩展,业务逻辑越来越复杂,微服务的数量呈现出爆发式增长的态势。错综复杂的服务间调用关系、依赖关系影响着整个应用的稳定性和可用性,大大增加了运维的成本。因此,微服务治理工具应运而生。
-
传统微服务
传统微服务指基于传统的微服务注册中心发展而来的微服务治理模式和技术体系。 传统的微服务框架主要有 Spring Cloud、Dubbo 等,传统的注册中心主要有 Eureka、Nacos、Zookeeper、Consul、etcd 等。
-
云原生微服务
云原生微服务指基于 Kubernetes 发展而来的跨技术栈微服务治理模式,自无框架以来逐步向服务网格发展。 这种模式使用云原生的框架(如 Kubernetes、Istio、Linkered),云原生的注册中心(如 Kubernetes 注册中心和 Mesh 注册中心)和云原生的网关(如 Nginx、Envoy、Contour)。
-
微服务框架
微服务框架可以分为侵入式和非侵入式两种。侵入式框架以 Spring Cloud 和 Dubbo 为代表,需要对旧代码进行改造。 非侵入式框架以 Istio 和 Linkerd 为代表,在原有基础上加入边车和服务网格,无需更改旧代码。
-
Spring Cloud 框架
Spring Cloud 是一款基于 Spring Boot 的微服务框架。 Spring Cloud 将市面上成熟的、经过验证的微服务框架整合起来,在 Spring Boot 的基础上进行再封装,屏蔽复杂的配置和实现原理, 最终为开发人员提供了一套简单易懂、易部署和易维护的分布式系统开发工具包。 Spring Cloud 包括 Spring Cloud Config、Spring Cloud Bus 等 20 多个子项目,提供了服务治理、服务网关、智能路由、负载均衡、熔断器、监控跟踪、分布式消息队列、配置管理等领域的解决方案。
-
Dubbo 框架
Apache Dubbo 微服务开发框架提供了 RPC 通信与微服务治理两大关键能力。 这意味着,使用 Dubbo 开发的微服务将具备相互之间的远程发现与通信能力。 同时,利用 Dubbo 丰富的服务治理能力,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。 Dubbo 是高度可扩展的,用户几乎可以在任意功能点去定制自己的实现,从而改变框架的默认行为以满足自己的业务需求。 Dubbo 目前支持 Consul、Nacos、ZooKeeper、Redis 等多种开源组件作为注册中心。
-
Sentinel
Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来保障微服务的稳定性。 Sentinel 具有丰富的应用场景,承接了阿里巴巴近 10 年的双十一大促流量的核心场景。Sentinel 具有完备的实时监控,用户可以在控制台中看到接入应用的单台机器的秒级数据。 Sentinel 提供与其它开源框架 / 库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合,可以开箱即用。 此外,Sentinel 还能提供简单易用、完善的 SPI 扩展接口,用户可以通过实现扩展接口来快速地定制逻辑。