在这里我和大家聊一聊我自己对手游服务器端程序员这个职位的一些看法和理解,我是一名北漂的手游服务器端程序员,现在手游服务器端职位的竞争特别惨烈,根据我待过的项目,服务器端和客户端的比例是1:2,甚至是1:3,也就是一个服务器要对接2到3个客户端。
公司新开一个项目,前期可能就只需要一个服务器程序员,最多两个;而一个已经上线运营的项目,一个50人的项目团队,可能最多也就五名服务器端程序员,这其中还包括一名主程,可谓是一个萝卜一个坑,这个职位的竞争之激烈可想而知。
在如此卷的一个环境下,大家只有去提高自己的技术,丰富自己的技术栈,才能抢到这个坑位,在这里,我为大家列一下,想要成为一名合格的手游服务器程序员,所需要掌握的技术,我这里的技术栈只是针对中偏高级的程序员,至于主程或者架构师要掌握的远远不止这些。
目前在北京的手游公司里,服务器端比较主流的开发语言是java和go,而我所在的公司是用的java,这里我就以java作为开发语言通大家讨论。
1. java相关
这个是基础,基础不牢地动山摇。
- java的基础知识、常用的一些算法和数据结构
- java的多线程、线程池
- java的高并发concurrent、synchronize、AQS等
- java常用框架spring、springboot
- java常用操作数据库框架mybatis
- java常用redis客户端Jedis和Lettuce
2.数据库Mysql、MongoDB等
服务器开发那肯定离不开数据库,用户的数据最终是得持久化的。
3.缓存Redis
缓存也是服务器开发必不可少的一部分,如果现在还有服务器程序员不会redis,那得好好自我反省了,redis除了作为缓存还有很多其他的功能,比如redis来做排行榜、加分布式锁。
4.Linux常用的命令
代码最终都是要部署到服务器上去的,不是在自己本地跑,所以Linux的常用命令都不会,那怎么当服务器程序员,在我的理解,一个服务器程序员至少是相当于半个运维。
5.网络通信Netty
Netty是现在比较主流的网络通信框架,我们公司现在所研发的手游里,客户端和服务器的通信,全部用的都是Netty。
6.常用的RPC:gRPC、Dubbo等
服务器之间是需要远程调用的,比如1服玩家要去攻打2服玩家,这些要是要跨服务器远程调用的,可能有同学会问了,为什么不用上面说的Netty,毕竟有大厂给我们提供了很成熟的RPC框架,就不需要我们重复造轮子了。
7.JVM原理和JVM调优
java开发,当然得知道JVM的原理,对象什么时候进新生代什么时候进老年代,什么时候被回收,使用什么垃圾回收器,怎么设计线上的JVM参数。jvm调优或者排查线上问题,一般有两种方式:jdk自带的jvm命令、arthas。
以上就是一个手游服务器程序员在项目中常用到的技术栈,当然还有一些比如zookeeper、消息中间件等,可能在有的项目中用不到,这里就没一一列出。基本掌握的以上技术栈,担当一名手游服务器中级程序员应该是够了。