zoukankan      html  css  js  c++  java
  • 使用Spring Cloud Gateway搭建游戏服务网关(1)

    在游戏服务器构架中,Web服务是其中重要的部分之一,像获取公告,游戏区列表,账号登陆与注册,礼包码的使用充值等,这些都可以使用Web服务实现,快捷又方便扩展,通过简单的配置就可以以集群的方式​提供服务。 在架构设计中,最重要的一个概念就是架构必须有足够的扩展性,可以随着业务量的增加,可以通加增加服务器的数量来提升服务能力,以适应业务的增涨。​

    比如初始的构架部署是这样的:

    再过段时间,随着业务的增涨,架构的部署是这样的:

    最后会进化为终极的部署方式,这种方式就是传说的的微服务架构,是这样的:

    这是根据业务发展,服务器架构在不同的阶段的相应的部署方式,各有自己的优缺点,但都是适应那个阶段的需求的。所以在构架设计的时候,要预料到最终极的部署方式,前期可以不用实现这么复杂的功能,但是一定要为将来实现这些复杂的功能预留好扩展接口。
    在目前开源的框架中,Spring Cloud 为微服务的开发提供了一套比较成熟的​方案。完全适应服务的动态伸缩需求。初级架构就不用说了,基本上刚开始都是以这种方式进行开发的,在这里,为了服务的扩展,可以采用Spring Boot开发单体服务,后期需要扩展为多服务时,只需要添加Spring Cloud Gateway网关即可。
    下面我们来简单配置一下Spring Cloud Gateway的网关开发。这里使用Maven管理项目,在项目中添加group为org.springframework.cloud和artifact id为spring-cloud-starter-gateway的starter。如下面的Maven依赖所示:

    <!-- 配置Spring Boot -->
      <parent>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-parent</artifactId>
           <version>2.1.3.RELEASE</version>
      </parent>
    <!-- 配置Spring Clound 依赖管理 --><br>  <dependencyManagement>
           <dependencies>
                  <dependency>
                      <groupId>org.springframework.cloud</groupId>
                              <artifactId>spring-cloud-dependencies</artifactId>
                              <version>Greenwich.RELEASE</version><!--注意这里面的版本,不同的版本,代码会有一些差别 -->
                              <type>pom</type>
                    <scope>import</scope>
                              </dependency>
           </dependencies>
       </dependencyManagement>
      <dependencies>
          <dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter</artifactId>
    			<exclusions>
    				<!-- 去掉Spring boot默认的日志,使用下面配置的log4j2 -->
    				<exclusion>
    					<groupId>org.springframework.boot</groupId>
    					<artifactId>spring-boot-starter-logging</artifactId>
    				</exclusion>
    				<exclusion>
    					<groupId>org.slf4j</groupId>
    					<artifactId>log4j-over-slf4j</artifactId>
    				</exclusion>
    			</exclusions>
    		</dependency>
    		<dependency>
    		   <!-- 引入log4j2的日志框架 -->
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-log4j2</artifactId>
    		</dependency>
           <dependency>
             <!--引入spring cloud gateway-->
               <groupId>org.springframework.cloud</groupId>
               <artifactId>spring-cloud-starter-gateway</artifactId>
               </dependency>
    </dependencies>
    

    注意,Spring Cloud Gateway需要Spring Boot和Spring Webflux提供的Netty的运行时环境,因此,它不可以打包成war包,也不可以在传统的Servlet容器(比如tomcat)中运行。所以Spring Cloud Gateway项目中不能依赖spring-boot-starter-web,要不然会报错。
    做为网关,它的首要职责就是对请求的转发和负载。但是网关如何知道有哪些服务需要它负责管理呢?为了解决这个问题,Spring Cloud提供了一个叫服务注册中心的服务,比较常用的有Consul,Alibaba的Nacos。它负责服务端的服务治理,包括服务注册,服务发现,服务移除等。这里我们先使用Consul做为服务治理服务。
    可以从官网下载Consul,然后使用这个命令运行(在consul所在目录运行):

    • mac或Linux命令:./consul agent -http-port=7777 -dev -server -ui
    • win 命令:.consul.exe agent -dev -http-port=7777 -ui -server -data-dir=./data
      我们先不纠结Consul的具体用法,这个以后再具体的说,或有兴趣的先去查一下官方的文档即可。在Spring Cloud Gateway中要从Consul中获取所有的注册服务,所以需要再添加一个服务发现的客户端依赖
    		<dependency><!-- 引入Consul客户端,用于服务发现 -->
    			<groupId>org.springframework.cloud</groupId>
    			<artifactId>spring-cloud-starter-consul-discovery</artifactId>
    		</dependency>
    

    然后添加application.yml配置 文件,如下所示:

    logging:
      config: classpath:log4j2.xml
    
    server:
      port: 8080
      application:
        name: gateway-server
      cloud:
        consul:
          host: localhost
          port: 7777
          discovery:
            prefer-ip-address: true
            ip-address: 127.0.0.1
            register: false   # 网关不需要被其它服务发现,不需要向服务中心注册
        gateway:
          discovery:
            locator:
              enabled: true
    


    欧莱雅男士锐能抗初老护肤套装(元气露+多效霜+眼霜+洁面膏50ml2+面膜10) 视黄醇紧致 洗面奶男

    在启动网关服务的时候,需要先启动Consul服务。这样就简单的网关服务就搭建成功了。下回我们接着再添加网关后面的服务,使用网关实现请求的转发。
    可以从这里下载源:https://gitee.com/wgslucky/SpringCloud,需要将application.yml中的active修改为auto,让服务在启动的时候,加载application-auto.yml配置文件。


    关注左上角公众号,了解更多信息 ![](https://img2018.cnblogs.com/blog/562410/201910/562410-20191028014837476-265913234.jpg)
  • 相关阅读:
    《深入浅出WPF》4.0x名称空间
    《深入浅出WPF》3.0 XAML语法
    DataGridview 自动切换到 下一行
    C# 生成条形码图片,效果不错
    将DataTable 导出为csv
    DataTable,DataGridVIew转换到xls 方法 (转)
    NPOI读取Excel 数据 转。。。
    修改 字段大小
    VC
    统计每天 指定 时间段内 的数据
  • 原文地址:https://www.cnblogs.com/wgslucky/p/11750133.html
Copyright © 2011-2022 走看看