该栏目讲叙微服务概念、注册中心、负载均衡、配置中心、服务熔断、服务消费等知识


文章目录

  • 简介
    • 1、概述
    • 2、场景
    • 3、优点
  • Nginx 实现 API网关
  • Zuul 实现 API网关
    • 1、路由配置规则
    • 2、网关过滤器
    • 3、案例

简介

1、概述

  • :API 网关就像一个安检站,所有外部的请求都需要经过它的调度与过滤,然后由 API 网关根据请求标识解析出具体的微服务地址,再把请求转发到该微服务

2、场景

  • 路由
  • 过滤
  • 监控
  • 安全认证
  • 限流

3、优点

  • 易于监控
  • 易于认证
  • 减少了客户端与各个微服务之间的交互次数

Nginx 实现 API网关

下载:http://nginx.org/en/download.html
配置规则

# 打开nginx.confhttp {server {listen 80;server_name localhost;# 路由到商品服务localhost /api-order {   # 当客户端访问这个路径时转发到proxy_pass指定的路径proxy_pass http://localhost:7070/;}# 路由到订单服务localhost /api-product {   # 当客户端访问这个路径时转发到proxy_pass指定的路径proxy_pass http://localhost:9090/;}}
}

Zuul 实现 API网关

1、路由配置规则

  • 服务名称路由
zuul:routes:product-service: # 路由Id自定义path: /product-service/**  # 配置请求URL的映射路径serviceId: product-service # 根据serviceId自动从注册中心获取服务地址并转发
# 当路由Id和服务名称一致时,可以省略serviceId
  • 路由排除
zuul:ignored-services: order-service # 服务名称排除,多个服务名称用逗号分隔,'*'排除所有# 不受路由排除影响routes:product-service:path: /product-service/**serviceId: product-service
  • 服务名称路由
zuul:routes:product-service:path: /product-service/**serviceId: product-serviceprefix: /api # 路由前缀,例:http://localhost:8080/product-service/api/1

2、网关过滤器

  • 概述:对请求进行干预,是实现请求校验,服务聚合等功能的基础
  • 类型
描述 类型
前置过滤 pre
路由后过滤 pre
后置过滤 post
异常过滤 error
  • 生命周期

3、案例

  • 配置依赖
<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-zuul</artifactId></dependency>
</dependencies>
  • 配置规则
server:port: 9000 # 端口spring:application:name: zuul-server  # 应用名称# 配置路由
zuul:ignored-services: order-service # 服务名称排除,多个服务名称用逗号分隔,'*'排除所有prefix: /api # 路由前缀,例:http://localhost:8080/product-service/api/1routes:product-service: # 路由Id自定义path: /product-service/**  # 配置请求URL的映射路径# 配置注册中心
eureka:instance:prefer-ip-address: true  #启用IP地址注册instance-id: ${spring.cloud.client.ip-address}:${server.port}  #ip:portclient:registry-fetch-interval-seconds: 10 # 表示客户端间隔多久向服务端摘取注册信息,默认30秒service-url:   # 设置服务注册中心default-zone: http://localhost:8761/eureka/,http://localhost:8762/eureka/
  • 编写过滤器
// 用户登录过滤器
public class LoginFilter extends ZuulFilter {// 四种类型:pre,routing,error,post@Overridepublic String filterType() {return "pre";}//自定义过滤器执行的顺序,数值越大越靠后执行,越小就越先执行@Overridepublic int filterOrder() {return 0;}//控制过滤器生效不生效,可以在里面写一串逻辑来控制@Overridepublic boolean shouldFilter() {return true;}//执行过滤逻辑@Overridepublic Object run() throws ZuulException {RequestContext context = RequestContext.getCurrentContext();HttpServletRequest request = context.getRequest();String token = request.getParameter("token");if (token == null) {context.setSendZuulResponse(false);context.setResponseStatusCode(401);context.setResponseBody("unAuthrized");}return null;}}
  • 启动网关
@SpringBootApplication
@EnableZuulProxy
public class ZuulServerApplication {public static void main(String[] args) {SpringApplication.run(ZuulServerApplication.class, args);}}

6、API网关 Zuul相关推荐

  1. 【微服务】之六:轻松搞定SpringCloud微服务-API网关zuul

    通过前面几篇文章的介绍,我们可以轻松搭建起来微服务体系中比较重要的几个基础构建服务.那么,在本篇博文中,我们重点讲解一下,如何将所有微服务的API同意对外暴露,这个就设计API网关的概念. 本系列教程 ...

  2. Netflix正式开源其API网关Zuul 2--转

    微信公众号:聊聊架构 5 月 21 日,Netflix 在其官方博客上宣布正式开源微服务网关组件 Zuul 2.Netflix 公司是微服务界的楷模,他们有大规模生产级微服务的成功应用案例,也开源了相 ...

  3. Spring Cloud(四) API网关Zuul

    前文回顾: Spring Cloud(一)Eureka Server-单体及集群搭建 Spring Cloud(二) 配置Eureka Client Spring Cloud(三) 熔断器Hystri ...

  4. 从零学SpringCloud系列(七):API网关Zuul

    一.为什么需要API网关 通过前面对几个组件的 介绍,我们基本可以构建一个下图中的简单的微服务架构系统: 我们聚焦到Open Service 和 外部调用的地方,随着下方服务的增多,我们需要手动维护负 ...

  5. Netflix正式开源其API网关Zuul 2

    5 月 21 日,Netflix 在其官方博客上宣布正式开源微服务网关组件 Zuul 2.Netflix 公司是微服务界的楷模,他们有大规模生产级微服务的成功应用案例,也开源了相当多的微服务组件(详见 ...

  6. SpringCloud 从菜鸟到大牛之七 服务网关 Zuul API网关等等

    话不多说 ,照常理 ,先来一张 整体架构图 服务网关 的要素 常见的网关方案 Nginx +Lua Kong 收费的Kong Tyk(Go语言开发) Spring Cloud Zuul Spring ...

  7. API网关—系统的门面要如何做呢?

    文章出自:阿里巴巴十亿级并发系统设计(2021版)-第27节:API网关:系统的门面要如何做呢? 链接:https://pan.baidu.com/s/1lbqQhDWjdZe1CBU-6U4jhA  ...

  8. 10Wqps 超高并发 API网关 架构演进之路

    说在前面 在尼恩的(50+)读者社群中,经常遇到一个 API网关 架构方面的问题: (1) 尼恩老师,最近公司我们在规划业务出口网关(目的,整合规范外部调用,如短信平台 mqtt 等) 我在做整理技术 ...

  9. 5 种 API 网关技术选型,yyds!

    程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 20 分钟. 来自:https://developer.aliyun.com/article/889271 本文准备围绕七个点 ...

最新文章

  1. python中的协程(二)
  2. 水晶报表printmode的ActiveX打印
  3. 大数据处理平台与案例
  4. php折线图 布局图
  5. C++ static静态成员函数详解
  6. matlab1信号的单边z变换:,实验二 离散时间信号与系统的Z变换分析
  7. rxjs of操作符里subscribeToArray的实现原理示意图及分析
  8. 瘦子的肠道菌群和胖子的区别_瘦身的“秘诀”是什么?做好5个生活习惯,就能变成一个瘦子...
  9. LKT系列加密芯片如何预置openssl生成的rsa密钥完成运算
  10. Mysql show status详解
  11. percona mysql 同步_Percona MySQL5.6 半同步复制
  12. 计算机工程工艺,中国计算机学会第十届计算机工程与工艺学术年会.pdf
  13. 个人中心html界面设计,APP个人中心页面设计
  14. 疫情时代无接触AI人脸识别技术助力智慧工地迅猛发展
  15. HTML超链接怎么做
  16. 【稳定性day4】美团外卖高可用的演进之路 - 日活两千万的挑战
  17. 无聊猿将与 Coinbase 共同制作电影三部曲进军好莱坞
  18. BeanFactory和ApplicationContext的区别
  19. java excel导出 jxl_JAVA利用JXL导出/生成 EXCEL
  20. CP1202官方串口驱动

热门文章

  1. c++实现三国杀小游戏
  2. AT指令(中文详解版)(二)
  3. 贴片电解电容正负极区分
  4. 软件产品检测测试报告找谁做?出测试报告机构推荐
  5. 深度学习中Concat层和Flatten层作用
  6. 人民日报大家谈:少儿编程热,需要冷思考
  7. 简单操作拥有Win7/XP双系统
  8. mint系统用wine打开exe文件
  9. 《军师联盟》把三国带跑偏 是时候温习下这五部剧了
  10. 如何识别一张图片中的字体,并复刻