java网关详解_一篇让你彻底理解网关是什么的文章
前言
沉寂了一个周末,去思考自己的职业规划,想了很多。总起来说,还是努力,坚持自己的那份本心。希望大家也能够坚持本心,砥砺前行。
近来,在想着重构一个新的产品。准备采用微服务的技术解决方案,来搭建基础设施框架。网关,是一个必不可少的组件。那么,网关到底是什么?
其又有什么特点或者特性,成为微服务必不可少的组件呢?今天,我们就来探讨下这个问题。希望通过本文,大家能够明白,为何用。
演变过程
传统的单体技术架构,所有的内容,被打包进一个包内。为了保证,系统的稳定、安全,需要开发一些过滤器、拦截器,来实现对客户端请求的过滤与拦截,以及完成最终请求的转发。如下图所示
微服务技术解决方案下,同样需要为每个服务开发过滤器、拦截器来进行请求管理。但由于服务数量众多,同时,客户端形式多样化,如果在每个服务身上开发,将会造成很大的代码冗余与开发负担。因此,期待,将相同的一些功能,抽取到一个服务内实现,这便成为了一个组件,就是现在的网关。
网关存在的原因:
解决微服务技术架构下,请求管理功能
解决微服务技术架构下,多客户端的适配,采用单一入口,完成协议适配
网关的基本功能
微服务技术解决方案下的,网关,至少需要具备图示基本功能。
网关作为单点入口,完成统一的请求管理
免去客户端直接对接众多微服务的复杂性,采用单点入口,实现路由转发,从而实现服务调用
服务对于整个系统来讲,是不稳定的,那么网关,需要进行限流熔断,保持系统的稳定与分区容错性
对于服务调用的链路,网关有职责进行记录,日志监控,保证整个系统,在监控下工作
系统可能不仅仅是由自有客户端调用,很多时候,系统开放能力API给外部,因此网关需要安全认证,来保证安全
网关的高级应用
蓝绿部署
红绿部署,将新旧版本并存发布,为了解决发布时间问题。将流量导向新版本,如果生产没有问题,则去除老版本,如果有问题,快速切换到老版本。
采用网关,可以简易实现蓝绿部署。
开发者测试分支
开发者对于生产,有些时候需要进行一定的测试。因此采用网关,可以实现,流量导向,路由转发到测试分支内,完成测试。
埋点测试
埋点测试,用来进行特殊业务需求或者技术需求下的测试。提前埋好点,可以按照埋点,检查整个调用链路情况。采用网关,快速实现流量导向。路由转发至需要埋点的服务集群。
压力测试
使用集群中一个或一组服务作为压力测试服务。那么必然还是使用到网关的流量导向、路由转发功能
调试路由
生产上,不方便测试的,可以采用网关,进行导向测试路由。
金丝雀测试
金丝雀测试,用于测试流量的可行性。类似于蓝绿部署。
粘性金丝雀测试
有些场景下,是需要客户端进入同样的服务内。粘性金丝雀,就是将客户流量粘住,保证流量导向单一。
失败注入测试
人为的测试系统的安全与稳定,需要进行失败注入。那么采用网关,即可实现流量的导向。
降级测试
服务具有不稳定性,因此微服务中,常见系统测试涵盖了降级测试这个方面。网关很好的可以承担起该职责。
防爬防攻击
网关作为请求的入口,自然可以承担起流量的管控。
健康检查与坏点检测
网关同样会作为服务注册到服务发现注册中心,因此,可以作为健康检查与坏点检测的工具,采用自动断开等手段,保证系统的稳定与及时通知。
跨区高可用
网关部署集群、跨区,可以实现,地域流量导向。
推荐阅读
看完三件事
如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
关注公众号 『 Java斗帝 』,不定期分享原创知识。
同时可以期待后续文章ing
java网关详解_一篇让你彻底理解网关是什么的文章相关推荐
- java callable 详解_详解Java Callable接口实现多线程的方式
在Java 1.5以前,创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口.无论我们以怎样的形式实现多线程,都需要调用Thread类中的start方法去向操作系统请求 ...
- java executors 详解_线程池—Executors 详解
各位志同道合的朋友们大家好,我是一个一直在一线互联网踩坑十余年的编码爱好者,现在将我们的各种经验以及架构实战分享出来,如果大家喜欢,就关注我,一起将技术学深学透,我会每一篇分享结束都会预告下一专题 线 ...
- java velocity详解_[velocity] velocity详解
(1)为什么要使用模版语言? 在服务器端可以使用 Velocity处理模板和生成的动态内容(HTML.XML等).这和JSP技术的目标非常接近.但是,JSP模型可以毫无阻碍地访问底层的Servlet ...
- iostat命令详解_对iostat输出结果的理解
前言: 日常工作中,线上服务会出现各种奇奇怪怪的问题,每次出现问题都是根据现象猜测出现问题的原因,比如请求响应慢了,就排查整个请求的逻辑,每一步花了多少时间,分析半天终于发现是某一步慢了以后,在分析为 ...
- java 开发详解_面向接口编程详解-Java篇
相信看到这篇文字的人已经不需要了解什么是接口了,我就不再过多的做介绍了,直接步入正题,接口测试如何编写.那么在这一篇里,我们用一个例子,让各位对这个重要的编程思想有个直观的印象.为充分考虑到初学者,所 ...
- java集合类详解_【Java入门提高篇】Day20 Java集合类详解(三)List接口
今天要说的是Collection族长下的三名大将之一,List,Set,Queue中的List,它们都继承自Collection接口,所以Collection接口的所有操作,它们自然也是有的. Lis ...
- java容器详解_详解Java 容器(第①篇)——概览
![](http://img.blog.itpub.net/blog/2020/04/02/9d89d3008962c127.png?x-oss-process=style/bb) 容器主要包括 Co ...
- java unsafe 详解_死磕 java魔法类之Unsafe解析
问题 (1)Unsafe是什么? (2)Unsafe具有哪些功能? (3)Unsafe为什么是不安全的? (4)怎么使用Unsafe? 简介 本章是java并发包专题的第一章,但是第一篇写的却不是ja ...
- java集合详解_「软帝学院」Java进阶者专栏:集合框架详解3
软帝学院笔记Day14 集合框架(HashSet存储字符串并遍历) A:Set集合概述及特点 通过API查看即可 B:案例演示 HashSet存储字符串并遍历 HashSet hs = new Has ...
- java保留字详解_下列( )不是Java中的保留字?
[论述题]You are required to write a note according to the information given below in Chinese. 假设你是 John ...
最新文章
- CNN模型 int8量化实现方式(二)
- php中四种webservice实现的简单架构方法及实例
- Django 使用 HttpResponse 返回 json 字符串显示 Unicode 编码
- c语言ox32左移一位的值,程序设计基础 (C)(32+32) 实验指导书.docx
- stm32c语言设计以及注释,13个基于STM32的经典项目设计实例,全套资料~-嵌入式系统-与非网...
- 怎么修剪_幸福树怎么修剪——武汉花卉租摆
- 前端rem单位的使用研究
- UBUNTU安装 SSH 服务
- ORACLE的Copy命令和create table,insert into的比较
- linux centos7 配置ftp,Linux Centos7配置ftp服务器
- 软件管理 --软件仓库的搭建
- r2游戏服务器网站,神秘揭晓《R2》公测服务器名称首度公布
- 固体火箭发动机零维内弹道方程组
- 我的 iPhone XS Max 终于装上了这款高逼格数字时钟,优秀不优秀?!
- 【翻译】Chromium 网络栈 disk cache 设计原理
- 《Real-Time Rendering》第四版学习笔记——Chapter 9 Physically Based Shading(二)
- 【Vue】解决 Vue 视图不刷新和组件循环引用不加载问题
- 最近进行的一次技术选型(工作流引擎)及相关知识介绍
- 前端Q知识体系梳理与面试准备直播回顾
- 时钟抖动(Clock Jitter)和时钟偏斜(Clock Skew)