後臺開發的範圍十分廣泛:服務器開發,網站後端,高性能網絡框架,安全等等。
我做的是服務器開發,平時寫業務比較多,linux、網絡這些不是特別常用,但是是基本功。平時用到的一些知識:linux的相關知識是必須的,C++語言的一些特性,多線程,設計模式……
項目用到的:
1. OpenSSL
OpenSSL是一個安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及SSL協議,並提供豐富的應用程序供測試或其它目的使用。
下載地址: https://www.openssl.org/source/
2.TinyXML
簡單,高效,靈活的一套操作XML文件的開源庫。
下載地址: http://www.grinninglizard.com/tinyxml2/
http://www.grinninglizard.com/tinyxml/
3. JsonCPP
下載地址: https://sourceforge.net/projects/jsoncpp/http://www.json.org/
4. Protobuf
下載地址:https://developers.google.com/protocol-buffers/docs/downloads
5. Libevent
下載地址: http://libevent.org/
自行搭建單線程epoll服務器、多線程epoll服務器、基於libevent搭建高併發TCP服務器、基於google的grpc搭建後臺服務框架
基於thrift搭建後臺服務框架、
( linux下高併發必用,libev,libevent和boost的asio,redis的網絡部分也是epoll實現的)
6. tcmalloc
(google-perftools)是用於優化C++寫的多線程應用,比glibc 2.3的malloc快。這個模塊可以用來讓MySQL在高併發下內存佔用更加穩定。
下載地址:https://github.com/gperftools/gperftools
文檔:https://dirtysalt.github.io/tcmalloc.html
語言工具: c++、go(主) python (瞭解)javascript(瞭解)
數據交互格式:json、xml和protobuffer、MQTT,通常前端後後端交互會採用json,而後端各個模塊的交互:對於HTTP協議的交互,常用的是json;對於tcp協議,常用的是protobuffer。
網絡:
熟悉HTTP協議,深入理解TCP/IP協議
精通至少一種操作系統和網絡方面分析調試工具,如:systemtap、perf、tcpdump等。
熟練使用相關工具進行網絡故障診斷,熟悉iptables,vpn等網絡工具;
運維:
瞭解一家公有云產品,如:AWS,阿里雲,騰訊雲,微軟雲,青雲等
實戰docker(嘗試以下任一開源項目 docker/ containerd/ distribution/ etcd 有二次開發經驗)
實戰kubernetes
直播:
看看FFMPEG、live555、easydarwin等開源項目
如果需要對文件進行一次性編譯,可以嘗試編寫makefile。在後續的開發與調試中需要學會如何追bug,以及如何打印日誌,這樣一出問題了你就能夠快速定位問題的所在。
單純用C++一種語言來開發後端對於現在而言並非是最佳的選擇,但如果能夠配合Python做腳本,那麼對後臺的開發效率會大大增強,畢竟做好一個包之後用Python直接調用即可。(nginx + uWSGI + python 開發棧)
(電商業務主流技術棧,如:LVS/Nginx/Haproxy/DNS/Redis/Zookeeper/Ceph/Kafka/RocketMQ/MySQL)
互聯網架構師:
自定義高性能組件:線程池、內存池、請求池、消息隊列、內部數據緩存結構
開源組件開發:Nginx模塊開發
消息隊列:ZeroMQ、kafka
集羣存儲:(主要是MySQL、Redis的設計、開發和優化(熟悉存儲引擎、索引、數據分庫分表等技術))
A持久存儲:MySQL(MyISAM、InnoDB)、MongoDB
B服務端緩存:Memcached、Redis(其實redis的源碼很少的喲)
C文件系統:fastdfs、TFS、Ceph
D大數據:ElasticSearch/Storm(瞭解)
服務協調:zookeeper
負載均衡:物理機F5、LVS、HAProxy、Nginx
集羣監控:Nagios、Zabbix
分佈式系統測試:jmeter、LoadRunner、tsung、
linux系統開發:內核優化、驅動調試、協程的實現、用戶態協議棧、用戶態文件系統fuse、內核虛擬化KVM、用戶態虛擬化Docker
完成解決方案:
單臺服務器百萬級併發
即時通訊架構
去中心化的架構
物聯網定位技術
Udp協議的實現
塊數據傳輸
多處理的TCP協議棧定製