【游戏开发】《Java游戏服务器架构实战》项目在windows上部署

【游戏开发】《Java游戏服务器架构实战》项目在windows上部署

参考《Java游戏服务器架构实战》源码运行介绍 · 语雀

一、配置项目基础环境

1、克隆项目

git clone https://gitee.com/imeetou/book-code.git

2、IDEA导入项目

先配置JDK,接着在pom.xmladd maven project,配置Springboot框架环境

在这里插入图片描述

二、配置服务注册中心 - consul

安装教程参考Windows环境安装consulconsul官网

查看consul版本:consul --version

运行consulconsul agent -dev

浏览器查看consul服务:localhost:8500/

在这里插入图片描述

三、配置缓存数据库 - redis

redis5.0+安装参考Windows安装Redis5.0在windows上配置redis启动脚本

redis服务端启动脚本:

redis-server.exe redis.windows.conf

redis客户端启动脚本:

redis-cli -h 127.0.0.1 -p 6379

四、配置持久化数据库 - mongodb

mongdb_4.2.2安装参考MongoDB4.2在Win10上最强安装教程

启动mongodb:执行mongo.exe即可

设置mongodb密码(在mongo控制台中):

use my-game  #切换my-game数据库

#设置用户名和密码,即admin,123456
db.createUser({
  user: 'admin',    // 用户名(自定义)
  pwd: '123456',  // 密码(自定义)
  roles:[{
    role: 'root',   // 使用超级用户角色
    db: 'admin'     // 指定数据库
  }]
})

mongodb查看用户名密码:参考mongodb 查看用户名密码 - CSDN

> use my-game   #切换my-game数据库
switched to dbmy-gamen
> db.auth('root','123456')
Error: Authentication failed.
0
> db.auth('admin','123456')
1 

五、配置消息中间件 - kafka

kafka_2.13-2.8.0需要先安装zookeeper,安装参考windows下安装kafka 2.13-2.8.0windows环境下安装zookeeper(单机版)

Note

安装并启动zookeeper其实直接安装kafka即可,里面包含zookeeper):

  • 拷贝zoo_sample.cfg,修改zoo.cfg文件:

    # 存放内存数据库快照的目录
    dataDir=D:\programSoftware\Java\kafka_2.13_2.8.0\apache-zookeeper-3.6.3-bin\data
    # 存放事务日志目录
    dataLogDir=D:\programSoftware\Java\kafka_2.13_2.8.0\apache-zookeeper-3.6.3-bin\logs
    
    # the port at which the clients will connect
    audit.enable=true
    clientPort=2181   #zookeeper的默认端口2181
    admin.serverPort=7070   #zookeeper服务启动时会启动一个AdminServer的服务,这里端口设置为7070
    
  • 在配制好conf/zoo.cfg之后,启动zookeeper:参考windows下载安装zookeeper

    • 开启zookeeper服务端:双击zkServer.cmd

    • 启动zookeeper客户端:双击zkCli.cmd

安装并启动kafka

  • 修改如下配置:编辑文件Kafka配置文件:\config\server.properties

    • 找到并编辑log.dirs=D:\\Tools\\kafka_2.13-2.8.0\\kafka-logs, (自定义文件夹)

    • 找到并编辑zookeeper.connect=localhost:2181。表示本地运行(默认的可以不改)

    • Kafka会按照默认,在9092端口上运行,并连接zookeeper的默认端口:2181

  • 启动kafka

    • 进入kafka_2.13-2.8.0\bin\windows,编写zookeeper启动脚本(start_zookeeper.bat或者start_zookeeper.cmd):

      start_zookeeper.bat ..\..\config\zookeeper.properties
      

      执行命令之前,先根据上面zoo.cfg修改zookeeper.properties

    • 进入kafka_2.13-2.8.0\bin\windows,编写启动脚本(start_kafka.bat或者start_kafka.cmd):

      kafka-server-start.bat ..\..\config\server.properties
      

六、运行项目

1、修改项目中的配置文件

将配置文件中consulkafkaredismongodb(注意配好指定数据库和密码)的配置换成自己电脑上的地址。 需要修改的项目有:my-game-centermy-game-gatewaymy-game-im

  • 例如游戏服务中心项目:my-game-center,进入到此项目的config目录下,将application-yourenv.yml配置文件复制一份,然后重命名,比如命名为application-local.yml,将此配置文件中的配置信息换成自己电脑的配置。然后修改application.yml配置,如下所示:

    spring:
     application:
     name: game-center-server
     profiles:
     active:
     - local # 在这里指定你的配置文件
    

    其它项目依次类推。

  • 修改配置文件中的mongodb数据库的连接信息

    spring:
      data:
        mongodb:  # 将数据库信息换成自己电脑的配置
          uri: mongodb://admin:123456@localhost:27017/my-game
      #      host: localhost
      #      port: 27017
      #      username: root
      #      password: 123456
      #      authentication-database: admin
      #      database: my-game
      redis:  # 将redis配置换成自己电脑的配置
        host: localhost
        port: 6379
        password:
    
2、服务器项目启动

首先保证consul,redis,kafka,mongodb都已启动成功,并且配置文件已全部修改。然后运行项目中的启动类:

  • my-game-center启动类(游戏服务中心):WebGameCenterServerMain

  • my-game-gateway启动类(游戏服务器网关):GameGatewayMain

  • my-game-web-gateway启动类(web服务器网关):WebGameGatewayServerMain

  • my-game-xinyue启动类(游戏业务处理服务):XinyueGameServerMain

  • my-game-im启动类(即时通讯服务):GameIMMain

本次项目启动以聊天项目为示例演示,其它的请参考书中所述的开发顺序自行演示。

consul服务注册中心界面如下:包括游戏服务中心,游戏网关和游戏业务服务
在这里插入图片描述

其中service-name = game-logic的服务有两个,即存在两个游戏业务服务:
在这里插入图片描述

3、客户端项目启动

因为要以聊天演示,所以客户端需要最少启动两个,为了方便演示,将客户端项目my-game-client项目打包为jar包运行。在my-game-client项目中右键,直接执行Run As -> Maven Install即可。然后打开命令终端,进入到my-game-client的target目录,执行命令:

java -jar my-game-client-0.0.1-SNAPSHOT.jar

再打开另一个终端执行相同的命令即可。

第一步,首先登陆账号,输入:login aaa

第二步,创建角色,输入:create-player one

在这里插入图片描述

第三步,选择要连接的网关,这一步是自动选择,输入:select-gateway,如下图所示:

在这里插入图片描述

第四步,另一个客户端也按上述三个步骤执行,登陆不同的账号,创建角色,连接网关

第五步,发送聊天消息: send "my name is one",双方发送都可以接收到,如下图所示:
在这里插入图片描述

4、客户端打包时可能存在的问题

Q:IDEA如何通过maven打包整个项目中的各个模块?

A:这里给出几个错误演示 和 一个正确演示

  1. 错误演示1 - 单独打包每个模块:由于要对my-game-client进行打包,由pom.xml可以看到my-game-client依赖于项目中的my-game-commonmy-game-network-param

    在这里插入图片描述

    所以先将my-game-commonmy-game-network-param分别打包成不可执行的 jar 包(参考SpringBoot:解决可执行jar包不能被其他项目依赖问题)。

    单独打包my-game-common是没有问题的,maven会将该项目的可调用jar包保存在maven本地仓库中。

    在这里插入图片描述

    但是在单独打包my-game-network-param时会存在这个问题:

    Failed to read artifact descriptor for com.game:my-game-common:jar:0.0.1-SNAPSHOT
    
  2. 错误演示2 - 将本项目某模块的jar包手动导入:由于my-game-common中有可引用的jar包(解压后有META-INF,如果是可执行jar包解压后为BOOT-INF),因此这里尝试在IDEA中手动导入jarlib文件夹中,但是会报错,意思是my-game-commonmy-game-server本项目下的,因此由于全限名原因,无法正常导入
    在这里插入图片描述

  3. 正确演示1 - 直接对整个项目进行打包:对整个项目my-game-server进行mvn install,可以根据各个模块之间的调用关系,找到依赖模块并进行打包(可执行jar/不可执行jar)。

    在这里插入图片描述
    此时会将所有模块打成jar包保存在本地maven
    在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在ARM服务器上使用Kubernetes(k8s)开发部署Java项目,你可以按照以下步骤进行操作: 1. 配置ARM服务器:确保你的ARM服务器已经正确配置和连接到网络。确保服务器上已经安装了操作系统和必要的软件,例如Docker和Kubernetes。 2. 安装和配置Kubernetes:按照Kubernetes官方文档的指引,安装和配置Kubernetes集群。对于ARM架构,可以使用适用于ARM的Kubernetes版本,例如k3s。 3. 构建Java项目:使用Maven或者Gradle等构建工具来构建你的Java项目。确保你的项目可以在本地环境中成功构建和运行。 4. 构建Docker镜像:创建一个Dockerfile来定义你的Java项目的Docker镜像。在Dockerfile中,你可以指定基础镜像、添加依赖项、设置环境变量等。确保你的Docker镜像可以成功构建并且可以运行你的Java应用程序。 5. 推送Docker镜像:将构建好的Docker镜像推送到一个Docker镜像仓库,例如Docker Hub或者私有的镜像仓库。这将为Kubernetes集群中的节点提供访问镜像的方式。 6. 创建Kubernetes部署文件:创建一个Kubernetes部署文件(Deployment),用于定义如何在集群中运行你的Java应用程序。在部署文件中,你需要指定容器镜像、端口映射、环境变量等。 7. 部署Java应用程序:使用kubectl命令将你的Java应用程序部署到Kubernetes集群中。kubectl命令可以从你的本地环境连接到Kubernetes集群,并执行相应的部署操作。 8. 监视和扩展:使用Kubernetes提供的监视和扩展功能来监控和管理你的Java应用程序。你可以使用Kubernetes Dashboard或者其他监控工具来查看应用程序的状态和性能指标,并根据需要扩展应用程序的实例数。 这些步骤提供了一个基本的指导,帮助你在ARM服务器上使用Kubernetes开发部署Java项目。具体的细节和配置可能会因你的具体需求和环境而有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值