後端的輪子(一)

前言

首先,看看這個,想必你們對下面這種簡歷看得比較多了吧?golang

精通JAVA,Python,熟練掌握C++ 精通Redis,Memcached,Mysql 精通Nginx配置,模塊開發 精通Kafka,ActiveMQ 等消息隊列 精通多線程,多進程,IO複用編程算法

這裏面每一個都是輪子,若是都是精通,那能精通這些輪子得多強大,至少我hold不住這麼多東西。可是,這並不妨礙愛學習的咱們來了解和製造這些輪子。sql

咱們這裏造輪子並非真的是爲了造輪子,如今的輪子很是多也很是好用,不到萬不得已,徹底沒有必要去造本身的輪子,咱們造輪子,只是爲了瞭解輪子的構造,知道爲何這東西會成爲輪子,還有就是這個輪子是怎麼造出來的,在造輪子的過程當中,用到的知識基本上會涵蓋整個後端須要涉及到的知識,因此本身造輪子或者瞭解輪子仍是頗有必要的。數據庫

後端的輪子們

提及後端的輪子們,你們均可以說出一大串來,咱們大體來數一數啊。編程

  • 抗在最前面的:LVS,F5,HAProxy這類負載均衡
  • 接下來有Nginx,Apache,Lighttpd這類Http服務
  • 後面還有Redis,Memcached這一類KV存儲器和緩存系統
  • 若是是多機部署,確定還有Kafka,ActiveMQ這種負責解耦的消息隊列
  • 固然也少不了Thrift這種RPC框架和Protobuf這種序列化技術
  • 若是夠高端,到了分佈式領域了,zookeeper也是輪子了

恩,感受上差很少也就這些了吧?和上面的簡歷出現的東西差很少能對上了吧?後端的輪子們,排得上號的也就是這些個方面了吧,能夠作一個技能樹出來,精通了上面這些輪子和輪子的使用,基本上後端的工做就遊刃有餘了,剩下的就是一些業務邏輯了,哦,固然,放心,你精通不了所有的,但瞭解甚至熟悉仍是能作到的,好了,接下來的一段時間,讓咱們一塊兒來點亮這棵技能樹吧。後端

這裏沒有寫數據庫這個東西,一是我認爲他不是輪子了,他比輪子複雜多了,屬於像操做系統同樣的基礎結構了,二是這系列文章都是會對應代碼的,數據庫我寫不出來,這纔是關鍵緣由。緩存

接下來的文章更新不會很頻繁了,我會按照上面這個技能樹,一個技能一個技能的點亮這個技能樹,有些我瞭解得多的就說詳細點,有些瞭解不深的就少說點,反正都會點出來,每一個技能樹都會配上最最最基礎的代碼實現這個輪子,固然這些代碼是不能用在生產環境拉。 最後,我會使用實現的輪子們,打造一個簡單的推薦引擎,也算物有所用了。服務器

恩。。。代碼尚未寫一行,因此這個系列文章更新會比較慢。望耐心:) 另外,不要對代碼抱有很大的但願,都只會是最最基礎的測試代碼,不能用在生產環境,好比http服務器的話,不會實現整個http服務,可能只會實現後面會用到的GET方法,請把關注點聚焦到每篇文章上網絡

輪子的輪轂

既然要造輪子,那首先仍是要有點基礎技術才行,也就是先要知道哪些東西是輪子的輪轂,哪些東西是輪子的胎了,代碼說到底就是數據結構和算法了,因此不管什麼輪子也逃不開這兩個東西,除了這個還須要一些操做系統和網絡相關的知識,要實現上面的那些個輪子,須要用到哪些知識呢?咱們撿最基礎的和最經常使用的說說,後面的文章會一一說到這些東西。數據結構

  • 哈希表,這個是不少輪子都要用到的東西,以前有一篇介紹哈希表的文章,後面還會繼續這個算法和對應的數據結構。
  • 樹,棧,隊列這些個最基礎的數據結構也是會常常用到的,其中包括了各類各樣的樹的實現。
  • 數據編碼的基本知識。
  • 計算機網絡知識,包括一些網絡協議,不只僅是http協議,還有底層一點的tcp協議,由於有些輪子須要在tcp上實現本身的協議。
  • 操做系統和計算機體系結構的一些知識也是必不可少的。
  • 分佈式的一些知識也是須要知道的,最後一個輪子是zookeeper,其實是paxos協議了,我以爲我實現不了一個最簡的paxos(由於這玩意就沒有最簡可言,必需要全實現出來),可是這部分知識仍是會說到的。

好了,大約上面這一些知識就差不太多了,畢竟只是一個最簡的實現,別看每一個也就一句話,要真正瞭解這些也不是一件簡單的事情,更別說精通了,因此看到那種全屏精通的簡歷,確定是扯淡的,找準一個你瞭解的領域,一頓虐吧。

輪子的胎

除了輪子的輪轂,那是支撐整個輪子的,還有一些外圍的基礎技術,構成了輪子的輪胎,這部分東西就是一些編程上的技術了,都包括:

  • 多協程,多線程,多進程編程。
  • 網絡編程,多路複用技術,還有相應的事件輪詢模型。
  • 共享內存,內存映射,管道技術。

這裏也就簡單的三行,要都瞭解而且精通也很不容易,因此這些東西我也不可能講得很好,確定有不正確的地方,歡迎你們指正出來,共同進步哈:)

造輪子的材料

造輪子的材料選golang,有時候可能會直接使用C,由於啊,Java不怎麼會,其餘語言來造輪子也不太常見。

結尾

本篇就是開了個頭,後面咱們慢慢說。

想獲取更多資料的童鞋私戳老十就好啦。

相關文章
相關標籤/搜索