对于服务端开发的理解

最近一段时间,开始了解并完成了一些后端需求。大致的过程如下:

  • 熟悉PHP,看了《PHP核心技术与最佳实践》、《PHP内核剖析》、《深入理解PHP内核》;
  • 熟悉MySQL,看了《MySQL必知必会》,接下来会看《高性能MySQL》;
  • 熟悉Redis,看了《Redis实战》;
  • 阅读Symfony官网文档,了解其基本原理;
  • 由于本地使用docker开发环境,所以对docker相关知识点也进行了一轮复习;

整体来看,想使用PHP相关技术栈进行后端开发,经过上面的学习后,写写业务代码,一点问题都没有。公司使用PHP这一套技术栈,也是基于人力成本、开发效率各方面
因素综合考虑而定的。在现有体量下也确实是比较好的选择。因为自己本身有其他语言的底子在,学习的过程中还是蛮顺利的。现在回过头看看,后端的整体架构设计也是
根据体量的大小一步步进化来的。

当一个(小)项目刚开始时,使用Nginx+Symfony+MySQL,当业务量有所增长,这个时候需要加上缓存Redis;当业务继续增长,这个时候需要多台机器部署了,需要
使用负载均衡,Nginx进行反向代理,将流量分发到不同的机器;当业务继续增长,这个时候需要考虑部署多个数据库,进行主从同步;当业务继续增长,这个时候Redis也要
考虑使用集群。随着业务继续增长,数据库表的设计,如何分表。如何分库,业务代码如何写效率高,等等问题都要进行考虑了。当业务还在继续增长,可能有些事情用PHP来干
已经不是最优解了!

除了上面所说的一些技术选择外,为了保证服务器的稳定,还有很多事情要做的,比如要对服务器相关数据进行监控,比如请求数、慢请求数、服务器流量消耗情况等;要有
一套完善的日志系统;对数据库的监控;容灾机制等等。

这些知识的获取途径无外乎两种,一是业务增长喜人,给了你机会把这些坑都踩一遍;二是在大公司,现成的解决方案供你学习。所以,刚毕业的小菜鸟们,还是建议能去
大公司就尽量去大公司,做大做强的小公司太少了,不一定能被你撞上。

服务端需要用到的技术或软件:

  • 开发框架:Symfony、ThinkPHP等
  • 消息队列:RabbitMQ等
  • 服务器:Nginx、Apache等
  • 缓存:Redis、MemCached等
  • 数据存储:MySQL、PostgreSQL等
  • 代码部署:Walle等
  • 数据监控:Zabbix等
  • 日志分析系统:elk等