云原生项目实践DevOps(GitOps)+K8S+BPF+SRE,从0到1使用Golang开发生产级麻将游戏服务器—第1篇(一)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 云原生项目实践DevOps(GitOps)+K8S+BPF+SRE,从0到1使用Golang开发生产级麻将游戏服务器—第1篇(一)

服务端



我调整过后的项目:

原项目

我的本地环境:


go version
# go version go1.14.14 darwin/amd64


使用容器运行 MySQL & Adminer


docker-compose.mysql.yaml


version: '3.1'
services:
  db:
    image: mysql
    command: 
      - --default-authentication-plugin=mysql_native_password
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    restart: always
    networks:
      - db_network
    ports:
      - "3306:3306"
    volumes:
      - 'db_data:/bitnami/mysql/data'
    environment:
      MYSQL_DATABASE: scmj
      MYSQL_ROOT_PASSWORD: 123456
    healthcheck:
      test: ['CMD', '/opt/bitnami/scripts/mysql/healthcheck.sh']
      interval: 15s
      timeout: 5s
      retries: 6
  adminer:
    image: adminer
    restart: always
    networks:
      - db_network
    ports:
      - 8080:8080
volumes:
  db_data:
    driver: local
networks:
  db_network:
    driver: "bridge"


启动


docker-compose -f docker-compose.mysql.yaml up
# docker-compose -f docker-compose.mysql.yaml up -d 后台运行
# docker-compose -f docker-compose.mysql.yaml down 卸载
# docker-compose -f docker-compose.mysql.yaml ps
# 清理数据文件
# docker volume ls
# docker volume rm nanoserver_db_data


容器启动后,会自动帮我们创建数据库 - scmj


启动服务端程序


已启动好 MySql 后,我运行如下命令:


go run .


正常你会看到如下截图(会自动的创建表和索引):


微信图片_20220611151240.png

image.gif

我们可以进入 http://localhost:8080/ 查看一下:


微信图片_20220611151249.png

image.gif

客户端



在 Kirk-Wang/nanoserver 中,为少已经放了一份专注于调试服务器逻辑的 apk。


安装安卓模拟器


这里我推荐网易的 MuMu模拟器。

image.gif微信图片_20220611151304.png

安装 APK


mahjong.apk,已经放到笔者修改过的项目中。这里我们使用多开助手,开4个空来血战。

image.gif

微信图片_20220611151319.png微信图片_20220611151332.pngimage.gif

客户端登录


我们点击微信登录。

image.gif

微信图片_20220611151343.png微信图片_20220611151345.png


发现登录失败……

如何解决?请继续阅读。


解决客户端登录失败问题


当然这问题,也好解决:

  1. 按作者所说那样,反编译 apk,找到 appConfig.luac,使用二进制编辑器改完服务器地址,然后重新打包。

微信图片_20220611151406.png

  1. 直接使用代理,如 Charles 进行请求地址转发。(本地调试服务器程序完全够了)


Charles 对客户端请求地址转发


使用 Map Remote 映射到你本机调试的地址就完全够了。

微信图片_20220611151420.png

微信图片_20220611151433.png

加入 guest 测试渠道 konglai

微信图片_20220611151441.pngimage.gif

重新登录进入游戏

image.gif

微信图片_20220611151453.png微信图片_20220611151455.pngimage.gif

完美,搞定。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
20天前
|
Kubernetes Cloud Native 开发者
构建高效的云原生应用:Docker与Kubernetes的完美搭档
【5月更文挑战第29天】 在现代软件开发领域,"云原生"这一术语已经成为高效、可扩展和弹性的代名词。本文将深入探讨如何通过Docker容器化技术和Kubernetes集群管理工具实现云原生应用的构建和管理。我们将剖析Docker的核心原理,揭示其轻量级和易于部署的特点,并进一步探索Kubernetes如何为这些容器提供编排,保证应用的高可用性与自动扩缩容。文章不仅讨论了二者的技术细节,还提供了实践案例,帮助开发者理解并运用这些技术构建和维护自己的云原生应用。
|
1天前
|
Go 开发工具 C语言
从零开始使用golang开发
【6月更文挑战第17天】本文介绍 Go 语言安装与配置等操作。包括.下载与安装从[Go官网](https://golang.org/dl/)下载对应平台的安装包,安装时可自定义路径。安装验证,使用 `go version` 检查版本。环境配置和变量设置,包管理等
12 1
|
7天前
|
运维 监控 Devops
如何快速提升项目质量?云效DevOps的秘诀在这里!
【6月更文挑战第11天】云效DevOps是一款集成代码管理、自动化构建、持续集成/部署、测试管理和监控的云原生研发平台,它通过打破开发、测试和运维间的障碍,提升软件质量和效率。关键功能包括:代码质量检查,自动化构建与测试(如Git、Maven集成),持续部署与监控,以及团队协作工具。通过这些,云效DevOps促进高效协同,确保项目质量快速提升。
|
7天前
|
运维 监控 Devops
为什么你的项目总是延期?云效DevOps来拯救你!
【6月更文挑战第11天】项目延期由繁琐流程、沟通不畅和需求变更引起。云效DevOps通过自动化流程、智能化监控和协同工作解决这些问题。自动化流水线减少错误,提升效率;智能监控快速响应故障;协同工具优化资源管理。示例代码展示自动化构建过程。采用云效DevOps,能有效避免项目延期,增强企业竞争力。
|
17天前
|
资源调度 运维 Cloud Native
云原生架构技术之无服务器技术
当这些BaaS云服务日趋完善时,无服务器技术(Serverless)因为屏蔽了服务器的各种运维复杂度,让开发人员可以将更多精力用于业务逻辑设计与实现,而逐渐成为云原生主流技术之一。
35 5
|
18天前
|
存储 Kubernetes 监控
【云原生】Kubernetes----PersistentVolume(PV)与PersistentVolumeClaim(PVC)详解
【云原生】Kubernetes----PersistentVolume(PV)与PersistentVolumeClaim(PVC)详解
|
18天前
|
Kubernetes Cloud Native 开发者
构建高效云原生应用:Kubernetes与微服务架构的融合
【5月更文挑战第31天】 在数字化转型和技术迭代的大潮中,企业对于敏捷、可扩展的IT基础设施需求日益增长。云原生技术以其独特的优势成为推动这一进程的关键力量。本文深入探讨了如何通过结合Kubernetes容器编排和微服务架构来构建和维护高效、可靠的云原生应用。我们将剖析这种技术整合的必要性,揭示其背后的原理,并讨论在实际部署过程中可能遇到的挑战及解决方案。通过案例分析和最佳实践的分享,旨在为开发者和架构师提供一套行之有效的云原生应用构建指南。
|
20天前
|
域名解析 Kubernetes 网络协议
【域名解析DNS专栏】云原生环境下的DNS服务:Kubernetes中的DNS解析
【5月更文挑战第29天】本文探讨了Kubernetes中的DNS解析机制,解释了DNS如何将服务名转换为网络地址,促进集群内服务通信。Kubernetes使用kube-dns或CoreDNS作为内置DNS服务器,每个Service自动分配Cluster IP和DNS条目。通过示例展示了创建Service和使用DNS访问的流程,并提出了优化DNS解析的策略,包括使用高性能DNS解析器、启用DNS缓存及监控日志,以实现更高效、可靠的DNS服务。
|
21天前
|
Kubernetes Cloud Native PHP
构建高效云原生应用:基于Kubernetes的微服务治理实践深入理解PHP中的命名空间
【5月更文挑战第28天】 在当今数字化转型的浪潮中,云原生技术以其独特的弹性、可扩展性和敏捷性成为了企业IT架构的重要选择。本文深入探讨了如何在云平台之上,利用Kubernetes这一容器编排工具,实现微服务架构的有效治理。通过分析微服务设计原则与Kubernetes特性的融合,提出了一套系统的微服务部署、监控和管理策略。文章不仅阐述了关键技术点,还提供了具体实施步骤和最佳实践,以期帮助企业构建出既高效又稳定的云原生应用。 【5月更文挑战第28天】在PHP的编程世界中,命名空间是管理代码和避免名称冲突的强大工具。本文将探讨PHP命名空间的核心概念、实现方式及其在现代PHP开发中的应用。通过深
|
21天前
|
运维 Cloud Native 开发者
云原生架构的未来演进:从容器化到无服务器
【5月更文挑战第28天】 在现代IT领域,云原生技术正成为推动企业数字化转型的核心力量。本文将探讨云原生架构的关键组成部分,包括容器化、微服务以及无服务器计算,并预测这些技术的发展趋势。文章旨在提供一个全面的视角,以理解云原生生态系统如何适应日益复杂的业务需求,并支持构建更加灵活、可扩展的应用程序。