设为首页 加入收藏

TOP

一起来学Spring Cloud | 第六章:服务网关 ( Zuul)(一)
2019-09-03 01:06:40 】 浏览:42
Tags:起来 Spring Cloud 服务 网关 Zuul

本章节,我们讲解springcloud重要组件:微服务网关Zuul。如果有同学从第一章看到本章的,会发现我们已经讲解了大部分微服务常用的基本组件。

已经讲解过的:

一起来学Spring Cloud | 第一章 :如何搭建一个多模块的springcloud项目

一起来学Spring Cloud | 第二章:服务注册和发现组件 (Eureka)

一起来学Spring Cloud | 第三章:服务消费者 (负载均衡Ribbon)

一起来学Spring Cloud | 第四章:服务消费者 ( Feign )

一起来学Spring Cloud | 第五章:熔断器 ( Hystrix)

本章正在讲解的:一起来学Spring Cloud | 第六章:服务网关 ( Zuul)

下章即将讲解的: 一起来学Spring Cloud | 第七章:分布式配置中心(Spring Cloud Config)

刚入门的同学,如果把前面这七章都理解清楚,并且自己搭建一遍,在工作中,我们已经可以搭建一个最简单的微服务项目了,我曾经看过一个创业公司,他们使用微服务框架时,就用以上的组件在生产上运行着简单的后台业务系统。

一、Zuul简介:

Zuul是Netflix开源的微服务网关,它可以和Eureka、Feign、hystrix等组件配合使用,Zuul的核心是一系列过滤器,它主要功能是路由转发和过滤器。

在实际项目中,一个复杂的业务系统后台,少则几十个服务模块,多则成百上千,随着业务场景的不断变更,我们的系统也会不断在演变,就会遇到如下的几个问题:

1.  如果存在跨域请求,多个微服务在一定的场景下处理相对复杂。

2.  客户端多次请求不同的微服务,增加了客户端的复杂性。

3.  认证复杂,每个微服务都需要独立认证。

4.  难以重构,随着项目的迭代,可能需要重新划分微服务。例如,可能将多个微服务合并成一个或者将一个微服务拆分成多个。如果客户端直接与微服务通信,那么重构将会很能实施。

5.  某些微服务可能使用了防火墙/浏览器不友好的协议,直接访问会有一定困难。

Zuul提供的作用:

1. 提供统一服务入口,微服务对前台透明

2. 聚合后台服务,节省流量,提升性能

3. 安全,过滤,流控等API管理功能

4. 提供统一服务出口,解耦

二、Zuul实现路由功能:

1. 在前面2章讲解的两个服务模块上,新增两个方法,模拟前端请求,做为本次zuul的测试接口
springcloud-ribbon-client模块的RibbonController类,增加/testzuul接口,具体模块信息参考:一起来学Spring Cloud | 第三章:服务消费者 (负载均衡Ribbon)

package com.haly.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.haly.service.RibbonService;


@RestController
public class RibbonController {
    @Autowired
    RibbonService ribbonService;
	
    @GetMapping(value = "/getHello")
    public String getHello(@RequestParam String name) {
        return ribbonService.getHello(name);
    }
	
    @GetMapping(value = "/testzuul")
    public String testzuul(@RequestParam String name) {
        return name +"这是springcloud-ribbon-clientd的服务接口";
    }

}

springcloud-feign-client模块的FeignController类,增加/testzuul接口,具体模块信息参考:一起来学Spring Cloud | 第四章:服务消费者 ( Feign )

package com.haly.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.haly.romote.FeignRemoteService;


@RestController
public class FeignController {
	
    @Autowired
    FeignRemoteService feignRemoteService;

    @GetMapping(value = "/getHello")
    public String getHello(@RequestParam String name) {
        return feignRemoteService.hello(name);
    }

    @GetMapping(value = "/testzuul")
    public String testzuul(@RequestParam String name) {
        return name +",这是springcloud-feign-client的服务接口";
    }
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     

2. 新建一个新的zuul服务工程,名称为:springcloud-zuul-server

①:修改pom.xml文件,parent标签引用的是父文件,具体父文件配置,参考:一起来学Spring Cloud | 第一章 :如何搭建一个多模块的springcloud项目

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Java爬虫系列三:使用Jsoup解析HT.. 下一篇Java关键字及其作用

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目