不同游戏类型的游戏服务端设计与电商的不同

星期四, 2017-01-05 | Author: Lee | webgame, 游戏开发 | 没有评论

本文来源于 DBAplus社群 韩伟 讲师的微信分享整理 (因无法获取微信中此文章的永久链接,故无法提供原文链接,见谅)

韩伟(腾讯科技互娱研发部架构师)
曾在网易任职8年,担任无线事业部产品总监。
多年来一直从事技术开发,擅长开发高性能系统,对于软件架构设计也有丰富的经验。
个人的技术兴趣在设计模式、软件体系架构等提高软件开发效率方面的知识

剖析的很不错,转载给以后回头总结及分享给更多游戏开发者

主题简介:
1、游戏类业务的通信模型分析
2、游戏类业务的数据处理流程分析
3、‍一般缓存系统的特点在游戏中的问题
4、现代游戏服务器端的几个典型运行时架构

一、背景

在中国的互联网诸多业务领域中,游戏一直是充当“现金牛”而存在的。常言道“隔行如隔山”,游戏领域和互联网其他领域确实可以说是不同的两个行业。但是,在游戏服务器端开发领域中的很多重要问题,并没有被明确的分辨出其特异性,从而得到专门的对待。

我们不管是在业界开源领域,还是内部分享中,很少会有专门针对游戏业务特征进行专门设计的组件、类库或者框架。我们从游戏的客户端方面来看,一款专业的游戏客户端引擎,已经是游戏开发的标配,比如最早的Flash Builder,到后期的Cocos2d-X,Unity,Unreal;但是服务器端,我们几乎找不到同样重量级的产品。

在游戏服务器端开发所有要面对的问题中,有两个是最核心和最普遍的:一是和客户端的通讯;二是游戏登录用户的数据处理。对于和客户端通讯的这个问题,大量的游戏开发者会使用“通用”的开源组件,比如Protocol Buffer、Thrift、Jetty、Node.js等等通信或RPC框架。虽然针对游戏,还是要做大量的改造,但一般都有很多现成的代码可供修改。

› Continue reading

Tags:

nginx和php隐藏版本号信息

星期四, 2016-12-29 | Author: Lee | php | 没有评论

nginx 隐藏版本号 配置nginx.cnf server_tokens off; 即可

1
2
3
4
http {
    # ...省略一些配置
    server_tokens off;
  }

2.php 的版本信息 会在 HTTP头,以类似X-Powered-By: PHP/7.0.14 这种形式
在php.ini 中关闭 expose_php = Off 即可

1
2
3
4
5
6
7
8
9
10
;;;;;;;;;;;;;;;;;
; Miscellaneous ;
;;;;;;;;;;;;;;;;;
 
; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header).  It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
; http://php.net/expose-php
expose_php = On

对应改为记得重启下php 和对应的nginx

Tags: ,

webp的格式的转换

星期五, 2016-12-16 | Author: Lee | html5 | 没有评论

webp出来的有年头了,最近在看微信分享处理的文章 在 chrome浏览器下图片都是webp的格式,想另存为发现无法直接打开.

想从微信获取 jpg和png格式图片:可以使用 Mozilla Firefox 和IE 打开 都会正常显示 成jpg 和png 格式.

貌似是js检测了是否支持webp 再来加载图片的策略来 节省大规模的流量带宽.

对webp的格式一直想自动转换,去了google官方 提供的对应的转换lib包可以用命令行直接调用,也是蛮方便的.

试验了一个图片,果然压缩率 很厉害 从 31K(webp) –>408K (png),质量基本上无差

本地win-x64下载包:libwebp-0-5-1-windows-x86

› Continue reading

Tags:

nginx支持lua的编译配置及Nginx rewrite对post数据的影响

星期四, 2016-12-08 | Author: Lee | JAVA-and-J2EE, linux | 没有评论

nginx+lua 可以很方便做限流,路由等其他配置很是方便

编译配置如下:
lua-nginx-module 是 openresty(集成nginx版本) 下的一个模块可以独立编译挂载
https://github.com/openresty/lua-nginx-module

Alternatively, ngx_lua can be manually compiled into Nginx:

1.Install LuaJIT 2.0 or 2.1 (recommended) or Lua 5.1 (Lua 5.2 is not supported yet). LuaJIT can be downloaded from the LuaJIT project website and Lua 5.1, from the Lua project website. Some distribution package managers also distribute LuaJIT and/or Lua.

2.Download the latest version of the ngx_devel_kit (NDK) module HERE.

3.Download the latest version of ngx_lua HERE.

4.Download the latest version of Nginx HERE (See Nginx Compatibility)

下载编译安装:
› Continue reading

Tags: ,

理解java里一年中第多少周的定义

星期三, 2016-11-23 | Author: Lee | JAVA-and-J2EE | 没有评论

应用里需要按照周来定义工作量,用到一年的第多少周,如下定义:
美式:(java默认的方式)
1.以周日为一周的开始 (周日到周六)

2.以每年的1月1日为当年的 第一周

在国内还是比较习惯 以
1.周一 为一周的开始 即 (周一,周二,周三,周四,周五,周六,周日)

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static void getWeek() {
	String today = "2016-12-31";  
	SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");  
	Date date = null;  
	try {  
	date = format.parse(today);  
	} catch (Exception e) {  
	 e.printStackTrace();  
	}    
	Calendar calendar = Calendar.getInstance();  
	//calendar.setFirstDayOfWeek(Calendar.MONDAY);  
	calendar.setTime(date); 
 
	System.out.println(calendar.get(Calendar.WEEK_OF_YEAR));  
}

输入结果:默认 为 2016年的 第53周,

如果以周一为一周的开始,则归入2017年的第1周.(因为2017年1月1日 为周日好巧呢.)

Tags:

解决ThinkPHP路由404问题的 nginx 配置文件

星期一, 2016-11-21 | Author: Lee | php | 没有评论

完美支持ThinkPHP的四种url模式, 静态文件不会再跑一次fastcgi浪费资源

ThinkPHP的几种url模式,如果nginx 不做任何配置,代理到php都是返回404错误,要解决也很简单

做好nginx的配置 做到动静分离和路由重写即可,配置如下:

其他日志配置等就不再贴出
› Continue reading

Tags: ,

java 压缩文件夹成zip格式

星期五, 2016-11-18 | Author: Lee | JAVA-and-J2EE | 没有评论

想用java 自动打包文件,由此来的此代码
› Continue reading

Tags: ,

no response “Installing Python packages” when letsencrypt-auto

星期一, 2016-11-07 | Author: Lee | JAVA-and-J2EE, linux | 没有评论

延续https的时间的时候,遭遇no response “Installing Python packages”,卡在一直不动的解决方法

主要执行 三,四即可

一.重新配置pip的源文件

vim ~/.pip/pip.conf
 
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
 
[install]
trusted-host=mirrors.aliyun.com

› Continue reading

Tags: ,

Redis3.2的保护模式

星期四, 2016-10-27 | Author: Lee | linux | 没有评论

Redis3.2的保护模式

针对之前Redis版本,默认无bind和密码设置存在很大安全风险;Redis3.2版本提出新特性protected mode(保护模式)。
如果Redis在启动时,未开启bind和密码设置功能,只能通过回环地址本地访问,如果尝试远程访问redis,会提示以下错误:

DENIED Redis is running protected mode because protected mode is enabled,
no bind address was specified, no authentication password is requested to clients.
In this mode connections are only accepted from the loopback interface.

当然也可直接执行CONFIG SET protected-mode no,关闭保护模式。
类似这种设置在MongoDB3.2或MySQL5.7的默认安全配置都有。

Tags:

Mac系统磁盘空间清理方法

星期一, 2016-10-03 | Author: Lee | computer | 没有评论

Mac同Windows一样,用的时间越久,也会感觉越来越“卡”。 卡顿是高效工作的第一大敌,这里向大家介绍几个简单步骤,保准你的Mac系统” 恢复如新 “。

第一步:磁盘空间清理

大部分Mac用户应该还处于128G磁盘空间下。128G听着挺大,几个月使用下来,App越装越多,再配上几部来不及看的电影,这点空间很容易捉襟见肘。磁盘空间不足不仅仅会让重要的文件无处保存,更会 拖慢 你的系统。原理就不细说了,手段如下:

1.清理应用缓存

简单来说,App运行的时候会生成很多临时的缓存文件,有些App使用频率很低或者已被删除,但这部分磁盘空间却一直占着。这些应用缓存可以直接全部删除,需要时系统会重新生成,这些文件位于目录~/Library/Caches,程序员可以用命令一键搞定,麻瓜按如下步骤:

打开Finder
在菜单栏选择【前往】->【前往文件夹】
输入 ~/Library/Caches
在弹出的Finder里,将所有目录删除
一次性删除数十个文件夹是不是很痛快?保守估计能多出好几个G。

2.清除旧的iOS设备备份

很多用户甚至意识不到自己的iPhone或者iPad备份过多少次,而每个多余的备份又占用了多少额外的空间。这些老旧无用的备份就一直静静的躺在那,看你没空间时干着急。让我们一次全部删除,再做一次干净完整的备份。备份位于:~/Library/Application Support/MobileSync/Backup,非程序员请重复如下步骤:
› Continue reading

Tags:

Search

文章分类

Meta