Spring Cloud微服务脚手架搭建实战——搭建Gateway网关服务注册到Nacos

网关

Zuul:
使用的是阻塞式的 API,不支持长连接,比如 websockets。
底层是servlet,Zuul处理的是http请求
没有提供异步支持,流控等均由hystrix支持。
依赖包spring-cloud-starter-netflix-zuul。

Gateway:
底层依然是servlet,但使用了webflux,多嵌套了一层框架
依赖spring-boot-starter-webflux和/ spring-cloud-starter-gateway
提供了异步支持,提供了抽象负载均衡,提供了抽象流控,并默认实现了RedisRateLimiter。

Gateway与Zuul区别

相同点:
1、底层都是servlet
2、两者均是web网关,处理的是http请求

不同点:
1、内部实现:
  gateway对比zuul多依赖了spring-webflux,在spring的支持下,功能更强大,内部实现了限流、负载均衡等,扩展性也更强,但同时也限制了仅适合于Spring Cloud套件
  zuul则可以扩展至其他微服务框架中,其内部没有实现限流、负载均衡等。
2、是否支持异步
  zuul仅支持同步
  gateway支持异步。理论上gateway则更适合于提高系统吞吐量(但不一定能有更好的性能),最终性能还需要通过严密的压测来决定
3、框架设计的角度
  gateway具有更好的扩展性,并且其已经发布了2.0.0的RELESE版本,稳定性也是非常好的
4、性能
  WebFlux 模块的名称是 spring-webflux,名称中的 Flux 来源于 Reactor 中的类 Flux。Spring webflux 有一个全新的非堵塞的函数式 Reactive Web 框架,可以用来构建异步的、非堵塞的、事件驱动的服务,在伸缩性方面表现非常好。使用非阻塞API。 Websockets得到支持,并且由于它与Spring紧密集成,所以将会是一个更好的 开发 体验。
  Zuul 1.x,是一个基于阻塞io的API Gateway。Zuul已经发布了Zuul 2.x,基于Netty,也是非阻塞的,支持长连接,但Spring Cloud暂时还没有整合计划。

最终我们选择gateway作为微服务脚手架的网关服务。

步骤

1、创建gateway项目
Spring Cloud微服务脚手架搭建实战——搭建Gateway网关服务注册到Nacos_第1张图片
2、导入pom.xml依赖



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.2.6.RELEASE
         
    
    com.bifang
    gateway
    0.0.1-SNAPSHOT
    gateway
    Demo project for Spring Boot

    
        1.8
    

    

        
            org.springframework.cloud
            spring-cloud-starter-gateway
            2.2.2.RELEASE
        

        
            org.springframework.boot
            spring-boot-dependencies
            2.2.5.RELEASE
            pom
            import
        

        
            org.springframework.cloud
            spring-cloud-dependencies
            Hoxton.SR3
            pom
            import
        

        
            com.alibaba.cloud
            spring-cloud-alibaba-dependencies
            2.2.1.RELEASE
            pom
            import
        

        
            org.springframework.cloud
            spring-cloud-starter-openfeign
            2.2.2.RELEASE
        

        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
            2.2.1.RELEASE
        

        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
            2.2.1.RELEASE
        

        
            org.springframework.boot
            spring-boot-starter
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    



3、编写启动类
Spring Cloud微服务脚手架搭建实战——搭建Gateway网关服务注册到Nacos_第2张图片

@SpringBootApplication
@EnableDiscoveryClient  //注册中心连接注解
@EnableFeignClients  //feign客户端启用注解
public class GatewayApplication {
    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication.class,args);
    }
}

4、编写yml配置文件

server:
  port: 9000  # 服务端口号
spring:
  application:
    name: bifang-gateway # 服务名
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:9848 # ,127.0.0.1:9849,127.0.0.1:9850  # Nacos注册中心地址,集群逗号隔开

5.启动Nacos服务
Spring Cloud微服务脚手架搭建实战——搭建Gateway网关服务注册到Nacos_第3张图片
Spring Cloud微服务脚手架搭建实战——搭建Gateway网关服务注册到Nacos_第4张图片
Spring Cloud微服务脚手架搭建实战——搭建Gateway网关服务注册到Nacos_第5张图片
地址栏输入:http://127.0.0.1:9848/nacos/ 访问管理界面,端口默认是8848,我配置文件修改成9848。登陆账号密码默认都是nacos。

查看服务列表发现注册成功
Spring Cloud微服务脚手架搭建实战——搭建Gateway网关服务注册到Nacos_第6张图片

命名空间

命名空间好处是根据不同的环境加载不同配置,比如测试环境test,开发环境dev等等。
Spring Cloud微服务脚手架搭建实战——搭建Gateway网关服务注册到Nacos_第7张图片
配置文件修改
Spring Cloud微服务脚手架搭建实战——搭建Gateway网关服务注册到Nacos_第8张图片
重启网关gateway服务,刷新后
Spring Cloud微服务脚手架搭建实战——搭建Gateway网关服务注册到Nacos_第9张图片

你可能感兴趣的:(Spring,Cloud微服务脚手架搭建实战)