网关gateway的简介和搭建过程

目录

1.什么是网关和网关的应用情景

 2.网关是如何演化来的,在微服务中有什么作用?

3.网关的基本功能

4.Spring Cloud gateway的发展史

5.和网关类似的功能组件:

6.为什么微服务当中一定要有网关

7.微服务网关的优点

8.gateway的搭建过程(做一个网关)


1.什么是网关和网关的应用情景

一个域名对应一个服务器,前端将域名通过dns解析到域名所在的服务器(nginx),网关是一个springboot程序,也是一个集群。由nginx对这三个网关做负载均衡,这三个网关服务一般还有个api,而服务只有rpc远程调用

        ①、api的好处

                a、后台服务只提供RPC接口,传输更加高效。因为dubbo可以用二进制传输文件。

                b、api可以对所有对外暴露的端口做入参出参的限制

 2.网关是如何演化来的,在微服务中有什么作用?

        ①、随着单体架构转化为微服务架构的时候,由一个后台服务由一个单一的服务变成了多个微服务,前端应用需要调用多个服务的接口,为了解决这个问题,网关就产生了。网关就是说微服务架构当中一个对外的统一入口,解耦客户端与内部服务。

3.网关的基本功能

        ①、网关的核心功能就是路由转发(反向代理),因为不要有耗时的操作在网关上处理,比如说特定的业务逻辑,网关需要将请求快速转发到后台各个微服务上。

        ②、网关还能做统一的熔断,限流,认证,日志监控等

4.Spring Cloud gateway的发展史

        ①、在1.X的版本当中,网关采用的Zuul网关,但是2.X版本当中,spring自己研发了一套网关程序,就是Spring Cloud gateway。

5.和网关类似的功能组件:

        ①、nginx:主要作用是反向代理和负载均衡。缺点:配置不灵活

        ②、zuul网关:早期的微服务使用的网关。缺点:功能和性能都不如Spring Cloud gateway。        

        ③、Spring Cloud gateway:优点:性能比zuul要高,而且可以无缝衔接到微服务开发中来。

6.为什么微服务当中一定要有网关

        ①、如果没有网关,客户端要请求不同的微服务后端,增加了客户端的复杂性

        ②、存在跨域问题(客户端访问不同的后端ip和端口号是不一样的)

        ③、认证复杂,每个服务都需要独立认证,比如说登录认证,如果没有网关,所有后台都需要做一次登录认证

        ④、个别的微服务可能没有外网端口,客户端不能直接访问到微服务后端

        ⑤、前后端不能解耦,重构困难,比如说有一天需要将一个微服务,继续拆分为两个微服务,那前端也需要改造。因为前端得需要修改拆分后的ip和端口。如果有网关,前端就不需要改造

7.微服务网关的优点

        ①、反向代理(不需要暴露微服务的真实ip,微服务可以只暴露内网端口,更安全)

        ②、易于监控:通过网关我们可以统计哪些api的调用量最多,哪些api的耗时比较长,从而做特定优化。

        ③、易于认证(只需要网关做登录认证就可以,其他微服务不需要做)

        ④、可以将所有微服务的接口做统计与拦截(微服务接口的管理者)

8.gateway的搭建过程(做一个网关)

        ①、起一个空的springboot程序

        ②、引入pom依赖(注意Springboot和springcloud的版本号要对应)

        

 <dependency>

         <groupId>org.springframework.cloud</groupId>

        <artifactId>spring-cloud-starter-gateway</artifactId>

</dependency>

 <dependencyManagement>

        <dependencies>

                <dependency>

                        <groupId>org.springframework.cloud</groupId>

                        <artifactId>spring-cloud-dependencies</artifactId>

                         <version>${spring-cloud.version}</version>

                        <type>pom</type>

                        <scope>import</scope>

                 </dependency>

         </dependencies>

</dependencyManagement>

        ③、 在启动类上面加一个@RestController

        ④、配置.xml文件

 

 浏览器上的localhost:8888/test会自动转化位uri上的http://localhost:8081

server:port:8888#微服务名称
spring:application:name: gatewaycloud:gateway:routes:#路径匹配id: finduri: http://localhost:8081/predicates:- Path=/user-service/**- Path=/test/**

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/52639.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

InterProcessMutex 类的作用和使用

InterProcessMutex 类是Curator框架中的一个分布式锁的实现&#xff0c;用于在分布式环境下实现互斥锁。 InterProcessMutex 的使用步骤如下&#xff1a; 创建 CuratorFramework 客户端实例&#xff0c;并启动客户端连接到 ZooKeeper 服务器。使用 CuratorFramework 的 creat…

Arthas GC日志-JVM(十八)

上篇文章说jvm的实际运行情况。 Jvm实际运行情况-JVM&#xff08;十七&#xff09; Arthas介绍 因为arthas完全是java代码写的&#xff0c;我们直接用命令启动&#xff1a; Java -jar arthas-boot.jar 启动成功后&#xff0c;选择我们项目的进程。 进入我们可用dashboard…

python中几个有趣的函数和推导式

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 一、range()函数 1、range()通常用来做循环。 2、range()生成器的特性。 例子&#xff1a;假如range&#xff08;&#xff09;中使用的数值特别大&#xff0c;为100000000000000000000000000000&#xff1f; python解释…

Go学习第四天

Interface空接口万能类型与类型断言机制 package mainimport "fmt"// interface{}是万能数据类型 func myFunc(arg interface{}) {fmt.Println("myFunc is celled....")fmt.Println(arg)// interface{} 该如何区分 此时引用的底层数据类型到底是什么&…

iPhone 7透明屏的显示效果怎么样?

iPhone 7是苹果公司于2016年推出的一款智能手机&#xff0c;它采用了4.7英寸的Retina HD显示屏&#xff0c;分辨率为1334x750像素。 虽然iPhone 7的屏幕并不是透明的&#xff0c;但是苹果公司在设计上采用了一些技术&#xff0c;使得用户在使用iPhone 7时可以有一种透明的感觉…

【实操教程】如何开始用Qt Widgets编程?(一)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写&#xff0c;所有平台无差别运行&#xff0c;更提供了几乎所有开发过程中需要用到的工具。如今&#xff0c;Qt已被运用于超过70个行业、数千家企业&#xff0c;支持数百万设备及应用。 在本文中&#xff0…

乳腺癌CT影像数据的深度学习:R语言与ANN神经网络构建高性能分类诊断模型

一、引言 乳腺癌是全球最常见的女性恶性肿瘤之一&#xff0c;也影响着男性的健康。据统计&#xff0c;每年有数百万人被诊断出患有乳腺癌[1]。乳腺癌的早期检测和准确诊断对于治疗和预后至关重要。然而&#xff0c;乳腺癌的早期诊断面临许多挑战&#xff0c;如图像解读的主观性…

Qt QThread的moveToThread方法使用

Qt线程简介 从 Qt4.4 版本之后&#xff0c;因为 QThread 的 run 方法创建新线程这样实现与 Qt 设计的理念不符&#xff0c;Qt 主推使用 moveToThread 方法来创建新线程。QThread 应该被看做是操作系统线程的接口或控制点&#xff0c;而不应该包含需要在新线程中运行的代码。需…

数据结构10 -查找_树表查找

创建二叉搜索树 二叉搜索树 二叉搜索树是有数值的了&#xff0c;二叉搜索树是一个有序树。 若它的左子树不空&#xff0c;则左子树上所有结点的值均小于它的根结点的值&#xff1b; 若它的右子树不空&#xff0c;则右子树上所有结点的值均大于它的根结点的值&#xff1b; 它…

在线LaTeX公式编辑器编辑公式

在线LaTeX公式编辑器编辑公式 在编辑LaTex文档时候&#xff0c;需要输入公式&#xff0c;可以使用在线LaTeX公式编辑器编辑公式&#xff0c;其链接为: 在线LaTeX公式编辑器&#xff0c;https://www.latexlive.com/home 图1 在线LaTeX公式编辑器界面 图2 在线LaTeX公式编辑器…

Spark、RDD、Hive 、Hadoop-Hive 和传统关系型数据库区别

Hive Hadoop Hive 和传统关系型数据库区别 Spark 概念 基于内存的分布式计算框架 只负责算 不负责存 spark 在离线计算 功能上 类似于mapreduce的作用 MapReduce的缺点 运行速度慢 &#xff08;没有充分利用内存&#xff09;接口比较简单&#xff0c;仅支持Map Reduce功能…

W5100S-EVB-PICO做DNS Client进行域名解析(四)

前言 在上一章节中我们用W5100S-EVB-PICO通过dhcp获取ip地址&#xff08;网关&#xff0c;子网掩码&#xff0c;dns服务器&#xff09;等信息&#xff0c;给我们的开发板配置网络信息&#xff0c;成功的接入网络中&#xff0c;那么本章将教大家如何让我们的开发板进行DNS域名解…