随着公司的业务发展,有幸经历了从单体应用迁移到分布式应用,又从分布式应用开始准备搭建微服务应用,以下是公司从零开始搭建微服务的过程,记录并分享出来,希望对大家有所帮助,我们先使用Spring Cloud GateWay作为网关,由于目前还没有服务发现组件,例如eurka,所以需要通过配置文件的方式配置Ribbon作负载均衡 。所以以下重点讲解Spring Cloud GateWay和Ribbon的搭配使用 。
网关的由来微服务提出后,单体应用被拆分成多个服务,为了对外提供统一入口,解耦客户端与内部服务 。
文章插图
单体架构到微服务架构演变
网关的作用网关能做统一的路由转发、熔断、限流、安全认证、日志监控等 。
文章插图
网关的作用
网关zuul与Spring Cloud Gateway对比
文章插图
zuul与Spring Cloud Gateway对比
Spring Cloud Gateway核心概念
文章插图
网关核心概念
1.路由(route) 路由是网关最基础的部分,路由信息由一个ID、一个目的URL、一组断言工厂和一组Filter组成 。如果断言为真,则说明请求URL和配置的路由匹配 。
2.断言(predicates) JAVA8中的断言函数,Spring Cloud Gateway中的断言函数输入类型是Spring5.0框架中的ServerWebExchange 。Spring Cloud Gateway中的断言函数允许开发者去定义匹配来自Http Request中的任何信息,比如请求头和参数等 。
【从零开始的微服务搭建之路】3.过滤器(filter) 一个标准的Spring webFilter,Spring Cloud Gateway中的Filter分为两种类型,分别是Gateway Filter和Global Filter 。过滤器Filter可以对请求和相应进行处理 。
Spring Cloud Gateway工作原理
文章插图
网关工作原理
Spring Cloud Gateway核心处理流程如上图所示,Gateway的客户端向Spring Cloud Gateway发送请求,请求首先被HttpWebHandlerAdapter进行提取组装成网关上下文,然后网关的上下文会传递到DispatcherHandler 。DispatcherHandler是所有请求的分发处理器,DispatcherHandler主要负责分发请求对应的处理器 。比如请求分发到对应的RoutePredicateHandlerMApping(路由断言处理映射器) 。路由断言处理映射器主要作用用于路由查找,以及找到路由后返回对应的FilterWebHandler 。FilterWebHandler主要负责组装Filter链并调用Filter执行一系列的Filter处理,然后再把请求转到后端对应的代理服务处理,处理完毕之后将Response返回到Gateway客户端 。
路由断言Factories整理
- After 路由断言 Factory:在该日期时间之后发生的请求都将被匹配 。
- Before 路由断言 Factory:在该日期时间之前发生的请求都将被匹配 。
- Between 路由断言 Factory:在datetime1和datetime2之间的请求将被匹配 。
- Cookie 路由断言 Factory:Cookie 路由断言 Factory有两个参数,cookie名称和正则表达式 。请求包含以cookie名称且正则表达式为真的将会被匹配 。
- Header 路由断言 Factory:Header 路由断言 Factory有两个参数,header名称和正则表达式 。请求包含以header名称且正则表达式为真的将会被匹配 。
- Host 路由断言 Factory:Host 路由断言 Factory包括一个参数:host name列表 。使用Ant路径匹配规则,.作为分隔符 。
- Method 路由断言 Factory:Method 路由断言 Factory只包含一个参数: 需要匹配的HTTP请求方式 。
- Path 路由断言 Factory:Path 路由断言 Factory 有2个参数: 一个Spring PathMatcher表达式列表和可选 。
- Query 路由断言 Factory:Query 路由断言 Factory 有2个参数: 必选项 param 和可选项 regexp 。
- RemoteAddr 路由断言 Factory:RemoteAddr 路由断言 Factory的参数为 一个CIDR符号(IPv4或IPv6)字符串的列表,最小值为1,例如192.168.0.1/16(其中192.168.0.1是IP地址并且16是子网掩码) 。
- AddRequestHeader GatewayFilter Factory:对于所有匹配的请求,这将向下游请求的头中添加header 。
- AddRequestParameter GatewayFilter Factory:对于所有匹配的请求,这将向下游请求添加查询字符串 。
- AddResponseHeader GatewayFilter Factory:对于所有匹配的请求,这会将头添加到下游响应的header中 。
- Hystrix GatewayFilter Factory:Hystrix 是Netflix开源的断路器组件 。Hystrix GatewayFilter允许你向网关路由引入断路器,保护你的服务不受级联故障的影响 。
推荐阅读
- 在火星上看日出 从火星上看地球的照片
- 十分钟从Java 8到Java 15
- 饮食补充叶酸的方法
- solidworks怎么批量更改零件属性?solidworkstoolbox更改已生成的零件
- 零基础学太极 如何快速掌握动作要领
- 世界品牌不粘锅?不粘锅鼻祖
- 马祖禅师茶语,茶道大师从谂掸师
- 中国水质最好的城市是哪儿?
- 客厅镜子风水知识及讲究
- 详解客厅镜子风水知识及讲究