“ 编程语言只是工具,没有优劣之分。编程语言选型根本目的主要为了提高生产力。”
网上关于各种编程语言之间的争论很多很多。并且各编程语言之间还有着,让大家随意调侃的鄙视链。A鄙视B,B鄙视C,C鄙视P。最后,P说,我是世界上最好的语言。
后端技术的演进历程都是伴随着业务发展,数据量的增加逐步迭代前行的。如果一个网站比如日均PV只有不到一万。他要升级技术,先要加服务器,然后DB要做读写分离,还要分库分表。到最后,再搞一套微服务来练练手。大概率不存在这种情况,因为技术调整成本其实很大很大的。调整技术,就需要增加人力,人力增加那么成本就会增大。
回到后端开发技术栈这个问题上面来。
第一,要选择WEB应用运行的操作系统。开发的系统到底运行在win系统,还是linux系统呢。大多数都是选择linux系统。如果定好是linux系统的话,那么工程师就相应具备相关的知识技能。最初级的要求,能做到服务器安全。比如服务器密码不能设置“123456”吧。防火墙,硬盘挂载,日志查找等等命令都需要有了解,都需要掌握。会sed,awk,能编写shell脚本就更好了。
第二,操作系统选好后,就需要根据业务来选择WEB server了。目前大多数都会选择Nginx服务器。这个时候,Nginx负载均衡策略,负载均衡语法。Nginx的参数调优都需要掌握。Nginx日志切割,日志记录数据项配置等等也都需要了解清楚。Select,Poll,Epoll模式也得大概有个了解的。
第三,下来就要选择应用数据存储介质了。不论怎么至少需要一个持久存储数据的数据库。Mysql,Oracle,SqlServer等,从这里面根据具体情况需要选定一个。如果选中Mysql。那么Mysql的引擎,主要Innodb引擎相关知识需要必须掌握。Mysql各种数据类型,各种数据类型取值范围,数据存储结构也需要了解。主从同步,悲观锁,乐观锁等概念也需要掌握。慢查询优化也是必备的职业技能。
在关系型数据库之上,可以适当选择Memcache,Redis,Mongodb来做中间的数据存储。Memcache的数据淘汰机制。Redis数据持久化机制,Redis数据结构,各个数据结构适用的应用场景等需要了解清楚。
如果有必要,那么消息队列服务也是必须的。各种消息服务各有优缺点,根据实际情况作出选择即可。有一点,至少在这些消息服务中自己要有一个非常熟悉的。如有业务需求,也可以马上应用。
不过,在实际项目中,任何一种技术引入,一个规则的引入,在以后的日子里面,都需要额外的,更大的成本来维护这个规则。没有一套通用的准则来解决所有的业务问题。正如没有银弹一样。
第四,我们要说说编程语言了。到了这一步,其实不管选择哪种语言,前三步的知识储备,知识技能都需要掌握到位的。
具体在WEB服务端开发中,其实选哪种语言都可行。核心还是前面说到的,语言选型要奔着提高生产力来操作的。公司所在地软件从业人员情况,从业人员高级、中级、低级人数分布,各种语言从业人员薪资情况等等都可以作为参考。
不论go,java,还是php,目前来看都不会造成系统的性能瓶颈。一般系统的性能瓶颈会出现在DB层,比如慢查询。还会出现在网络层面上,比如瞬时带宽不够等等。DB,网络两个层面是现在WEB服务的两大性能瓶颈。其他都是次要矛盾,主要矛盾是这两者。
假如说,选择的PHP语言来作开发。那么PHP数据结构,常用各种函数,类库都要了如指掌。运行原理,参数优化也要掌握。还需要了解常用的框架,各种调优工具,比如xhprof,xdebug等。除此之外,还需要了解网络基础知识,一些算法知识。
以上来看PHP工程师,不单单只是写写PHP代码,他还需要掌握其他的必备技能,了解整个LAMP,LNMP生态的知识体系。想要了解更多php教程欢迎关注编程学习网
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/8448/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料