用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字

fresh    -  云代码空间

——

企业分布式微服务云SpringCloud SpringBoot mybatis (五)路由网关(zu

2019-01-11|52阅||

摘要:企业分布式微服务云SpringCloud SpringBoot mybatis (五)路由网关(zuul)

在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现、服务消费、负载均衡、断路器、智能路由、配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统。一个简答的微服务系统如下图:

Azure (1).png 
注意:A服务和B服务是可以相互调用的,作图的时候忘记了。并且配置服务也是注册到服务注册中心的。

在Spring Cloud微服务系统中,一种常见的负载均衡方式是,客户端的请求首先经过负载均衡(zuul、Ngnix),再到达服务网关(zuul集群),然后再到具体的服。,服务统一注册到高可用的服务注册中心集群,服务的所有的配置文件由配置服务管理(下一篇文章讲述),配置服务的配置文件放在git仓库,方便开发人员随时改配置。

一、Zuul简介

Zuul的主要功能是路由转发和过滤器。路由功能是微服务的一部分,比如/api/user转发到到user服务,/api/shop转发到到shop服务。zuul默认和Ribbon结合实现了负载均衡的功能。

zuul有以下功能:

  • Authentication
  • Insights
  • Stress Testing
  • Canary Testing
  • Dynamic Routing
  • Service Migration
  • Load Shedding
  • Security
  • Static Response handling
  • Active/Active traffic management

二、准备工作

继续使用上一节的工程。在原有的工程上,创建一个新的工程。

三、创建service-zuul工程

其pom.xml文件如下:

复制代码
<?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.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.forezp</groupId>
    <artifactId>service-zuul</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>service-zuul</name>
    <description>Demo project for Spring Boot</description>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zuul</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Dalston.RC1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url> <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
</project>
复制代码

在其入口applicaton类加上注解@EnableZuulProxy,开启zuul的功能:

复制代码
@EnableZuulProxy
@EnableEurekaClient
@SpringBootApplication public class ServiceZuulApplication { public static void main(String[] args) {
        SpringApplication.run(ServiceZuulApplication.class, args);
    }
}
复制代码

加上配置文件application.yml加上以下的配置代码:

复制代码
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/ server:
  port: 8769 spring:
  application:
    name: service-zuul
zuul:
  routes:
    api-a:
      path: /api-a/** serviceId: service-ribbon
    api-b:
      path: /api-b/**
      serviceId: service-feign
复制代码

首先指定服务注册中心的地址为http://localhost:8761/eureka/,服务的端口为8769,服务名为service-zuul;以/api-a/ 开头的请求都转发给service-ribbon服务;以/api-b/开头的请求都转发给service-feign服务;

依次运行这五个工程;打开浏览器访问:http://localhost:8769/api-a/hi?name=forezp ;浏览器显示:

hi forezp,i am from port:8762

打开浏览器访问:http://localhost:8769/api-b/hi?name=forezp ;浏览器显示:

hi forezp,i am from port:8762

这说明zuul起到了路由的作用

架构代码如下:

完整项目的源码来源 
Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码请加企鹅求求: 817983997  

顶 0踩 0收藏
分享到:
更多
文章评论
    发表评论

    个人资料

    • 昵称: fresh
    • 等级: 高级设计师
    • 积分: 5300
    • 代码: 0 个
    • 文章: 221 篇
    • 随想: 0 条
    • 访问: 3 次
    • 关注

    人气代码

      标签

      java(76)api(3)教程(25)Spring(41)cache(1)+(3)springmvc(2)mybatis(4)(十)(1)(十一)(1)Cloud(31)Boot(10)源码(7)简介(1)-(29)项目构建过程(3)关于Spring(2)Cloud的核心特性(1)整合spring(8)cloud云服务架构(9)cloud架构(1)HongHu(1)Cloud云架构(10)登出流程(3)(1)Spring+(1)Commons(1)普通抽象(1)项目过程构建(3)commonserv(1)common-ser(1)commonserv(1)SSO单点登录应用认(1)Cloud分布式微服(1)(1)Eureka(1)云架构代码结构构建(3)分享Spring(3)Cloud大型互联网(1)common-ser(1)SpringClou(1)Cloud--Hon(1)Cloud分布式微服(1)springclou(1)Eureka服务器搭(1)SSO单点登录之OA(1)SSO单点登录之OA(1)Cloud-hong(1)Cloud分布式微服(1)Cloud微服务分布(1)Cloud分布式微服(1)Config客户端使(1)Cloud微服务架构(1)Config环境库(2)Cloud分布式微服(1)Cloud--Hon(1)Cloud分布式微服(1)SSO单点登录之OA(1)SSO单点登录之OA(1)SSO单点登录之OA(1)SSO单点登录之OA(1)根据token获取用(1)commonserv(1)Cloud微服务分布(1)mybatis分布式(1)mybatis分布式(1)mybatis分布式(1)4.2.2以上版本和(1)mybatis分布式(1)mybatis分布式(1)Cloud引导应用程(1)Cloud--Hon(1)Cloud分布式微服(1)Cloud大型互联网(1)Cloud-hong(1)Cloud分布式微服(1)SpringBoot(81)common-ser(1)Cloud分布式微服(1)Cloud企业微服务(1)Cloud自定义引导(1)企业级(26)(一)(1)(二)(1)(三)(1)cloud项目(2)(五)(1)(九)整合sprin(1)commonserv(1)SSO单点登录之OA(1)SSO单点登录之OA(1)(十二)(1)SSO单点登录之OA(1)B2B2C(64)关于SpringCl(1)Cloud构建分布式(1)SpringClou(1)mybatis电子商(1)(九)Java(2)o2o多用户商城(21)(十)Java(1)(十三)java(3)b2b2c多用户商城(6)(十四)Java(2)(十五)Java(1)(十六)Java(1)b2b2c多用户商城(1)SSO单点登录之OA(1)springclou(1)springclou(1)springclou(1)springclou(1)springclou(1)springclou(1)(十七)Java(1)springclou(1)springclou(1)springclou(1)springclou(1)B2B2C多租户电子(1)SpringClou(1)SpringClou(1)项目构建过程(七)(1)(八)Java(1)Config)(8)ssm(17)企业级java(14)shop(22)springclou(1)多用户商城系统源码((1)springclou(1)多用户商城系统源码(9)(十二)java(2)多用户商城系统源码-(3)Sleuth)(2)Springclou(1)分布式、微服务、云架(1)多用户商城系统源码((1)springclou(1)B2B2C多租户电子(1)springclou(1)(三):服务提供与调(1)SpringClou(1)springclou(1)企业云架构commo(1)springclou(1)common-ser(1)springclou(1)commonserv(1)springclou(1)springclou(1)springclou(1)springclou(1)springclou(1)(十一)JAVA(1)b2b2c多用户商城(1)b2b2c多用户商城(1)SSO单点登录之OA(1)springclou(1)springclou(1)配置自动刷新(1)beatlsql(1)多用户商城系统(2)(八)springb(1)多用户商城系统源码((1)b2bc商城系统开源(1)(十)用spring(2)Restdocs创建(1)springboot(1)springboot(1)微服务java_b2(1)(十三)spring(1)springboot(1)(十四)在sprin(1)springclou(1)(二)Spring(3)Boot配置文件详解(5)整合JPA(3)企业分布式微服务云S(1)(五)路由网关(zu(1)b2bc商城系统开源(1)springboot(1)springclou(1)b2b2c多用户商城(1)springclou(1)(九)服务链路追踪((1)b2bc商城系统开源(1)b2b2c多用户商城(1)b2bc商城系统开源(1)Dashboard)(1)springclou(1)b2b2c多用户商城(1)b2bc商城系统开源(1)多用户商城系统源码((1)微服务java_b2(1)b2b2c多用户商城(1)SSO单点登录之OA(1)Springboot(1)Springclou(1)多级分销Spring(1)多级分销Spring(1)(二)java(1)springboot(1)springclou(1)(五)JAVA(1)b2b2c多用户商城(1)Dashboard和(1)(六)企业分布式微服(1)分布式配置中心(Sp(1)(六)(1)Java多用户商城系(1)Java版本多用户B(1)B2B2C源码电子商(1)-(五)路由网关(z(1)Springclou(1)Springboot(1)mybatis电子商(1)b2b2c多用户商城(1)b2bc商城系统开源(1)多用户商城系统源码((1)多用户商城系统(三)(1)SpringBoot(1)高可用的分布式配置中(1)微服务java_b2(1)springclou(1)b2b2c多用户商城(1)springboot(1)b2b2c多用户商城(1)springclou(1)springboot(1)b2b2c多用户商城(1)b2bc商城系统开源(1)(九)服务链路追踪((1)SpringBoot(1)多用户商城系统(八)(1)Springboot(1)springclou(1)springclou(1)多级分销Spring(1)多级分销Spring(1)(十一)docker(1)b2bc商城系统开源(1)springclou(1)b2b2c多用户商城(1)多级分销Spring(1)整合企业架构的技术点(1)springclou(1)springclou(1)b2b2c多用户商城(1)springclou(1)b2b2c多用户商城(1)springclou(1)springclou(1)springclou(1)springclou(1)springclou(1)b2b2c多用户商城(1)springclou(1)b2bc商城系统开源(1)springclou(1)b2b2c多用户商城(1)b2bc商城系统开源(1)b2b2c多用户商城(1)springclou(1)b2bc商城系统开源(1)(四)SpringB(1)多用户商城系统源码((1)微服务java_b2(1)(十)高可用的服务注(1)企业分布式微服务云S(1)(十一)docker(1)多用户商城系统-(七(1)springclou(1)Springclou(1)Springclou(1)b2bc商城系统开源(1)多用户商城系统源码-(1)b2b2c多用户商城(1)b2bc商城系统开源(1)多用户商城系统源码-(1)多用户商城系统-(九(1)多用户商城系统源码-(1)springboot(1)b2b2c多用户商城(1)b2b2c多用户商城(1)多用户商城系统源码((1)(九)springb(1)b2bc商城系统开源(1)教程(十五)Spri(1)(十六)用restT(1)企业SpringBo(1)教程(五)sprin(1)企业(1)教程(六)sprin(1)企业分布式微服务云S(1)(一)服务的注册与发(1)(十六)用restT(1)Cloud微服务架构(1)(六)整合sprin(1)企业云架构commo(1)(七)整合sprin(1)common-ser(1)(八)整合sprin(1)commonserv(1)(十四)在sprin(1)(十五)Spring(1)(十六)用restT(1)(十七)上传文件(1)(十八)定时任务(S(1)Tasks)(1)(十九)(1)验证表单信息(1)(二十)处理表单提交(1)SpringClou(1)服务的注册与发现(E(1)SpringClou(1)服务消费者(rest(1)SpringClou(1)服务消费者(Feig(1)SpringClou(1)(四)(1)断路器(Hystri(1)SpringClou(1)(五)路由网关(zu(1)SpringClou(1)(七)(3)高可用的分布式配置中(1)SpringClou(1)高可用的分布式配置中(1)(一)微服务分布式云(1)(二)微服务分布式云(1)cloud整合企业架(1)(三)微服务分布式云(1)cloud集成项目简(1)(四)微服务分布式云(1)企业分布式微服务云架(1)(五)微服务分布式云(1)(五)微服务分布式云(1)SpringClou(1)分布式配置中心(Sp(1)SpringClou(1)高可用的分布式配置中(1)(一)构建第一个Sp(1)(三)SpringB(1)(四)SpringB(1)(九)springb(1)Restdocs创建(1)

      最新提问

        站长推荐