博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于zuul 实现API 网关
阅读量:5064 次
发布时间:2019-06-12

本文共 3235 字,大约阅读时间需要 10 分钟。

1、Nginx与Zuul的区别

相同点:Zuul和Nginx都可以实现负载均衡、反向代理(隐藏真实ip地址),过滤请求,实现网关的效果

不同点:Nginx--c语言开发

               Zuul--java语言开发

Zuul负载均衡实现:采用ribbon+eureka实现本地负载均衡

Nginx负载均衡实现:采用服务器实现负载均衡

 

Nginx相比zuul功能会更加强大,因为Nginx整合一些脚本语言(Nginx+lua)

Nginx适合于服务器端负载均衡

Zuul适合微服务中实现网关

Zuul 因为是java 写的,所以框架设计的更容易些

 

2,

,

 

zuul,projectA,projectB 全都要注册到注册中心eureka上,让eureka 来管控: 

 

step1: 简历eureka 服务

server:  port: 8100eureka:  instance:    hostname: server1  client:    serviceUrl:          defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/    register-with-eureka: false    fetch-registry: false

启动类:

package com.aiyuesheng;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBootApplication@EnableEurekaServerpublic class EurekaApplication {    public static void main(final String[] args) {        SpringApplication.run(EurekaApplication.class, args);    }}

step2: projectA

server:  port: 8000spring:    application:        name: projectAeureka:  client:    service-url:           defaultZone: http://localhost:8100/eureka

启动类:

@SpringBootApplication@EnableDiscoveryClientpublic class App {    public static void main(String[] args) {        SpringApplication.run(App.class, args);    }}

controller:

@RestControllerpublic class Index {    @RequestMapping("/")    public String index() {        return "PROJECTA";    }}

step2: projectB

server:  port: 8001spring:    application:        name: projectBeureka:  client:    service-url:           defaultZone: http://localhost:8100/eureka

启动类:

@SpringBootApplication@EnableDiscoveryClientpublic class App {    public static void main(String[] args) {        SpringApplication.run(App.class, args);    }}

controller:

@RestControllerpublic class Index {    @RequestMapping("/")    public String index() {        return "PROJECTB";    }}

step4: zuul 配置网关

eureka:  client:    serviceUrl:      defaultZone: http://localhost:8100/eureka/server:  port: 8080spring:  application:    name: service-zuulzuul:  routes:    projectA:      path: /projectA/**      serviceId: projectA    projectB:      path: /projectB/**      serviceId: projectBzuul:  routes:    api-a:      path: /api-a/**      serviceId: itmayiedu_a    api-b:      path: /api-b/**      serviceId: itmayiedu_b

启动类:

import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.cloud.netflix.zuul.EnableZuulProxy;import org.springframework.context.annotation.Bean;@EnableZuulProxy@SpringBootApplication@EnableDiscoveryClientpublic class ZuulApplication  {    public static void main(String[] args) {        SpringApplication.run(ZuulApplication.class, args);    }//    @Bean//    public TokenFilter accessFilter() {//        return new TokenFilter();//    }}

 

先启动eureka 注册中心,再启动其他三个服务,启动之后,可以web 页面查看服务是否注册上去:

 

我就可以通过网关配置的routes 

routes:    projectA:      path: /projectA/**      serviceId: projectA    projectB:      path: /projectB/**      serviceId: projectB

 

127.0.0.1/projectA  就自动跳到A项目

127.0.0.1/projectB  就自动跳到B项目

 

转载于:https://www.cnblogs.com/pickKnow/p/11284148.html

你可能感兴趣的文章
Python 3.X 练习集100题 05
查看>>
设计器 和后台代码的转换 快捷键
查看>>
Monkey测试结果分析
查看>>
STL——配接器、常用算法使用
查看>>
STL容器之vector
查看>>
无法向会话状态服务器发出会话状态请求
查看>>
数据中心虚拟化技术
查看>>
01入门
查看>>
复习文件操作
查看>>
SQL Server 使用作业设置定时任务之一(转载)
查看>>
第二阶段冲刺-01
查看>>
BZOJ1045 HAOI2008 糖果传递
查看>>
发送请求时params和data的区别
查看>>
JavaScript 克隆数组
查看>>
eggs
查看>>
一步步学习微软InfoPath2010和SP2010--第七章节--从SP列表和业务数据连接接收数据(4)--外部项目选取器和业务数据连接...
查看>>
如何增强你的SharePoint 团队网站首页
查看>>
FZU 1914 Funny Positive Sequence(线性算法)
查看>>
oracle 报错ORA-12514: TNS:listener does not currently know of service requested in connec
查看>>
基于grunt构建的前端集成开发环境
查看>>