服务端漫游

注:本文内容源自 polaris 在知识星球 Go项目实战 中的直播,已获得本人许可。

第一站:穿梭于Internet

第二站:协议

重点掌握

  • TCP/UDP
  • HTTP

常考面试题

  • TCP的三次握手过程
  • TCP的四次挥手过程

推荐书籍

  • 《图解http协议》
  • 《图解TCP协议》

建议用 wireshark 抓包软件进行分析。

第三站:Unix/Linux操作系统

掌握对 Unix/Linux 操作系统的常用操作指令操作,例如

shell
vim
sed
awk

多练习,多总结

网络编程方面需掌握

  • Socket、Unix Domain Socket
  • 进程间通讯

推荐书籍

  • 《UNIX网络编程卷一:套接字》
  • 《UNIX环境高级编程》
  • 《Linux/Unix设计思想》

第四站:Nginx、Apache、Caddy、等Web Server和核心功能

介绍

Web Server核心功能

  • HTTP解析
  • HTTPS支持
  • 虚拟主机(一个端口,多个域名)
  • 静态资源
  • URL重写
  • gzip压缩
  • 作为反向代理,和其他进程常用通讯协议的支持

推荐学习了解下 Caddy

第五站:常用的支持Web开发的语言

  • PHP(LAMP、LNMP)
  • Java
  • Python
  • Ruby
  • Go
  • C#(.NET)

另外常用的数据结构和算法要有了解

第六站:数据库

  • 关系数据库:SQLite,MySQL,Postgresql,SQL Server,Oracle
  • NoSQL:Redis,Mongodb,Cassandra,HBase
  • 缓存:Redis,Memcached
  • 其他:Go BoltDB,dgraph,CockroachDB

入门数据库推荐使用 MySQL

推荐书籍

  • 《高性能MySQL》
  • 《MySQL技术内幕InnoDB引擎》
  • 《Redis实战》

第七站:架构

  • 高可用,高性能,可扩展
  • 分布式,CAP理论
  • 分布式消息队列:Redis,ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等
  • 常用的应用场景:异步处理,应用解耦,流量削峰和消息通讯
  • 微服务

写在最后

直播后有个答疑环节,我将此次答疑的收货整理如下:

关于服务端面试

面试考语言的分量比较小,因为服务端涉及的面比较广,需要学习的东西很多,有时候原理比语言更重要。

关于承压

在项目研发过程中,无论是测试还是上线跑,服务端会经常背锅,所以在压力上要及时调整好心态,做好和其他岗位人员的及时有效沟通。

关于未来发展

努力去大公司,做一些大项目,最好流量是千万级别以上的。

学无止境,一起努力!