SpringCloud微服务系列- 分布式能力建设之微服务网关

SpringCloud微服务系列- 分布式能力建设之微服务网关

   概要

    在微服务环境中,网关是微服务集群中必不可少的设施之一。

    微服务中网关的首要职责,就是以统一的地址对外提供服务,将外部访问这个地址的流量,根据适当的规则路由到内部集群中正确的服务节点之上。也正是因为这样,微服务中的网关,也常被称为“服务网关”或者“API 网关”。

    网关 = 路由器(基础职能) + 过滤器(可选职能)

    一、 Spring Cloud Gateway的相关介绍

   在各种微服务网关组件中,Zuul、Zuul2基于servlet阻塞式IO开发出来的,性能比较差,已经被淘汰了。

   Spring Cloud Gateway是Spring Cloud生态系统中的网关,它是基于Spring5.0、SpringBoot2.O和Project Reactor等技术开发的,旨在为微服务架构提供一种简单有效的、
统一的API路由管理方式,并为微服务架构提供安全、监控、指标和弹性等功能。其目标是替代Zuul。

   注意:Spring Cloud Gateway用 "Netty + Webflux" 实现,不要加入Web依赖,否则会报错,它需要加入Webflux依赖。

   1) 什么是Webflux

   Webflux模式替换了旧的Servlet线程模型。用少量的线程处理request和response io操作,这些线程称为Looρ线程,而业务交给响应式编程框架处理,响应式编程是非常灵活
的,用户可以将业务中阻塞的操作提交到响应式框架的wok线程中执行,而不阻塞的操作依然可以在Loop线程中进行处理,大大提高了Loop线程的利用率。   

   注意:Webflux虽然可以兼容多个底层的通信框架,但是一般情况下,底层使用的还是Netty,毕竟,Netty是目前业界认可的最高性能的通信框架。而webflux的Loop线程
正好就是著名的Reactor模式lO处理模型的Reactor线程,如果使用的是高性能的通信框架Netty。

   2)什么是Netty

   Netty是一个基于NIO的客户、服务器端的编程框架。提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。


   二、 Spring Cloud Gateway 特点

   1)易于编写谓词(Predicates)和过滤器(Filters)。其Predicates和Filters可作用于特定路由。

   2)支持路径重写。

   3)支持动态路由。

   4)集成了Spring Cloud DiscoveryClient(服务发现)

   三、Spring Cloud Stream 

   1. 什么是Spring Cloud Stream?
   官方定义Spring Cloud Stream是一个构建消息驱动微服务的框架。实现了一套轻量级的消息驱动的微服务框架。通过使用Spring Cloud Stream,可以有效简化开发人员对消息中间件的使用复杂度,让系统开发人员可以有更多的精力关注于核心业务逻辑的处理。

   2. 为什么使用Spring Cloud Stream?

   流行的消息中间件过多,有可能一个工程中使用MQ,比方说我们用到了RabbitMQ和Kafka,由于这两个消息中间件的架构上的不同,像RabbitMQ有exchange,kafka有
Topic,partitions 分区,这些中间件的差异性导致我们实际项目开发给我们造成了一定的困扰,我们如果用了两个消息队列的其中一种,后面的业务需求,我想往另外一种消息队列进行迁移,这时候无疑就是一个灾难性的,一大堆东西都要重新推倒重新做,因为它跟我们的系统耦合了,这时候springcloud Stream给我们提供了一种解耦合的方式。

   作用:屏蔽底层消息中间件的差异,降低了切换成本,统一了消息的编程模型

   注意:
   Stream解决了开发人员无感知的使用消息中间件的问题,因为Stream对消息中间件的进一步封装,可以做到代码层面对中间件的无感知,甚至于动态的切换中间件,使得微
服务开发的高度解耦,服务可以关注更多自己的业务流程。

   我们之前使用的数据库链接工具:JDBC

posted @ 2024-06-29 14:33  欢乐豆123  阅读(2)  评论(0编辑  收藏  举报