您的位置:首页 > 新闻 > 资讯 > 电子元器件商城_b2b电子商务网站调研报告电大作业_中国最厉害的营销策划公司_免费的建站平台

电子元器件商城_b2b电子商务网站调研报告电大作业_中国最厉害的营销策划公司_免费的建站平台

2025/8/12 0:10:19 来源:https://blog.csdn.net/qq_27302885/article/details/147282735  浏览:    关键词:电子元器件商城_b2b电子商务网站调研报告电大作业_中国最厉害的营销策划公司_免费的建站平台
电子元器件商城_b2b电子商务网站调研报告电大作业_中国最厉害的营销策划公司_免费的建站平台

目录

1.服务器需求分析

2.面向框架编程简介

3.ZINX框架初始

4.回显标准输入

5.VS结合GIT

6.完善readme范例

7.添加退出功能

8.添加命令处理类

9.添加日期前缀思路

10.添加日期前缀功能


1.服务器需求分析

zinx 描述
zinx 框架是一个处理多路 IO 的框架。在这个框架中提供了若干抽象类,分别在
IO 处理的多个阶段生效。开发者可以重写抽象类中的虚函数完成自己需求的处
理功能。
zinx 框架的使用步骤
1. ZinxKernel::ZinxKernelInit() 初始化框架
2. 写类继承 AZinxHandler ,重写虚函数,在函数中对参数进行处理
(比如将参数内容打印到标准输出)
3. 写类继承 Ichannel ,重写虚函数完成数据收发,重写
GetInputNextStage 函数,返回第二步创建类的对象
4. 添加步骤 3 类创建的对象到框架中
5. 运行框架

2.面向框架编程简介

标准输入回显标准输出的编写思路
1. 创建三个类:标准输入类,回显类,标准输出类
2. 重写标准输入类的读取函数
3. 重写回显类处理函数
4. 重写标准输出类的写出函数
5. 创建以上三个类的全局对象(堆对象),添加通道对象到框架
kernel
6. 运行框架 添加命令处理类
1. 创建命令处理类继承 AzinxHandler ,重写处理函数和获取下一个处
理环节的函数
2. 处理函数内,根据输入内容不同,要么添加输出通道,要么摘除输
出通道
3. 获取下一个处理环节函数中,指定下一个环节是退出或回显
4. 设定输入通道的下一个环节是该类对象

3.ZINX框架初始

添加日期前缀
1. 创建添加日期类,继承 AzinxHandler 。重写处理函数和获取下一环
节函数
2. 处理函数:将日期和输入字符串拼接后, new 一个对象返回
3. 获取下一环节函数:返回回显对象
4. 在命令处理类的处理函数中:根据输入命令设置当前是否要添加前
缀的状态位
5. 在命令处理类的获取下一环节函数中,判断当前状态,需要添加前
-- 》返回添加日期前缀的对象;不需要添加前缀 -- 》返回回显对
需要调用的框架静态函数
初始化,去初始化 ZinxKernel::ZinxKernelInit()
ZinxKernel::ZinxKernelFini()
运行框架 ZinxKernel::Zinx_Run()
通道添加和摘除 ZinxKernel::Zinx_Add_Channel()
ZinxKernel::Zinx_Del_Channel()
退出框架 ZinxKernel::Zinx_Exit()

4.回显标准输入

多个 AzinxHandler 对象之间的信息传递
数据封装成 IzinxMsg 类在多个 AzinxHandler 对象之间传递
使用时,要现将 IZinxMsg 类型引用动态转换成所需类型引用
zinx 框架处理数据的本质
将数据在多个 AzinxHandler 对象之间传递,挨个处理
传递的规则通过重写 GetNextHandler 函数定义

5.VS结合GIT

6.完善readme范例

**需求原型:**

- 用户注册,登陆
- 建房
- 跟房

![1560849263612](商业化部署.assets/1560849263612.png)

- 登陆服务器:管理当前的游戏服务器
- 登陆客户端:提供登陆注册和建房跟房界面(简单的qt编程)
- 游戏服务器:内容不用动,但要部署多份。

## 1.1方案1(多主机或虚拟机)

- 登陆服务器
  - 记录当前启动游戏服务器的服务器IP或主机名
  - 向登陆客户端返回IP或主机名
  - 管理这些主机的状态(启动,停止。,更新)
- 登陆客户端:通过房号查找游戏服务所在的计算机IP
- 游戏服务器:每个主机或虚拟机启动一个。

7.添加退出功能

**优点:** 游戏服务器部署简单,测试简单,跟单个服务器的操作完全相同。

**缺点:** 登陆服务器的业务复杂,不好维护游戏服务器所在的诸多主机。

## 1.2方案2(多进程)

+ 登陆服务器
  + 记录当前启动的游戏服务器的端口号
  + 向登陆客户端返回端口号
  + 管理启动的游戏服务器进程
+ 登陆客户端:向登陆服务器获取游戏服务器端口号
+ 游戏服务器:
  + 支持端口可配
  + 增加多份除进程之外的资源(数据库,日志文件等)
  + 保护对公共资源的访问

8.添加命令处理类

**优点:** 登陆服务器实现简单,只需要要简单的进程管理即可

**缺点:** 游戏服务器的职责变的复杂(增加信号量集等进程间通信),而且不好管理(相同的文件或数据库存在多份)

## 1.3方案3(容器化)

- 登陆服务器
  - 记录当前启动的游戏服务器的端口号
  - 向登陆客户端返回端口号
  - 管理启动的游戏服务器所在容器
- 登陆客户端:向登陆服务器获取游戏服务器端口号
- 游戏服务器:每个容器启动一个游戏服务,启动多个容器映射不同端口

**特点:** 无需修改游戏服务器软件,登陆服务器通过管理容器实现管理游戏服务器。 

## 1.4结论

使用方案3效果最优。

> 那么问题来了,什么是容器?

9.添加日期前缀思路

**容器:** 是一种虚拟化技术,这种技术将操作系统内核虚拟化,可以允许用户空间软件实例(instances)被分割成几个独立的单元,在内核中运行,而不是只有一个单一实例运行。

**解释**: 在操作系统和应用程序之间添加的一层:容器层。容器层对于操作系统来说,就是一个应用程序。容器层对于应用程序来说,好像一个操作系统。![容器运行时](商业化部署.assets/容器运行时.png)

- 一个主机可以有多个相似或相同的容器
- 应用程序不知道自己运行在容器中。
- docker是当前最主流的容器工具

## 1.5计划

1. 将游戏服务器放到docker容器中运行
2. 登陆服务器管理多个容器并提供创建容器和查询容器的功能
3. 登陆客户端发送用户命密码请求和房间创建或跟随请求,根据用户选择,启动游戏连接对应游戏服务器

10.添加日期前缀功能

# 2 docker

docker是一个实现容器技术的软件,用到了linux内核的命名空间原理。

## 2.1 初识docker

**安装**

```bash
# 执行脚本简易安装
$ sudo apt-get install curl
$ curl -sSL https://get.daocloud.io/docker | sh
# 修改添加当前用户到docker用户组,修改socket权限
$ sudo usermod -aG docker dev
$ sudo chmod 777 /var/run/docker.sock
# 退出终端后再次进入测试命令
$ docker --hep
```

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com