互聯網開發人員需知的“108”個技術棧

NoSQL Memcached MySQL Redis IT技術百貨 2017-06-07

在軟件開發行業撲騰了快三年了,多少積累或者瞭解了一些技術,整理總結一下,與諸位共享,歡迎各位補充,評論!

數據層

數據層主要作用是存儲數據,大概分為兩類,一類是關係型數據庫,一類是非關係型數據庫;

【關係型數據庫】mysql & oracle & sqlserver

mysql數據庫目前在互聯網行業中應用最多,主要原因是免費,生態圈好,用的人多,資料多,遇見問題能夠在網上找到很多資料。

mysql的侷限性在於存儲的數據量相對較小(與oracle相比),當表中記錄到千萬級別時,性能下降很快,不過在高手如林的IT行業,很多牛人研發出了相應問題的解決方案,如分表、分庫,同時有很多與之相關的高可用方案,如mycat、Haprox、MHA;


oracle數據庫,目前應用也比較多,但由於收費的原因,失去了很多用戶,當然在數據量不大的情況下,也不會有人找你收費,當向你收費的時候,恭喜你,相信業務已經達到一定規模了。


SqlServer數據庫,在互聯網行業應用較少,一些傳統行業應用較多,關於對SqlServer的瞭解 還是停留在大學的時候水平,不多介紹,不過在傳統行業如:數字礦山,地理信息系統,CAD輔助製圖等還有一定應用。

【非關係型數據庫(NoSQL數據庫)】memcache & redis & mongoDb & Hbase

非關係型數據庫的有點在於數據結構靈活,使用方便。但功能相對於關係型數據庫較為簡單,尤其在事務管理,一致性保證,鎖等方面。

memcache是一種高性能,分佈式內存對象緩存系統。優點在於高性能以及分佈式的實現及其方便,但在數據結構上較為單一,並且不能持久化。關於memcache的使用 會在以後的文章中做詳細介紹。

redis 一種比較典型的NoSQL數據庫,具備豐富的數據類型與高效的存取速度,基於redis可以實現分佈式消息隊列,分佈式鎖等諸多功能。redis不僅可以做緩存,而且具備持久化功能,即便機器宕機後,數據也不會丟失。

mongoDb一種很高效的數據庫,一般用來存儲數據量較大的非結構化數據,如博客、文檔、網頁等。存取速度優於mysql,但在事務性和鎖等方面特性較弱。目前很火的一種數據庫。

Hbase 一種大數據領域的數據庫,瞭解不多。歡迎各位補充其特性... ...

消息中間價

kafka & Active Messenger

消息中間件一般用於各個模塊、系統之間的異步通信,降低各個模塊之間的耦合性。詳細介紹後續總結... ...

互聯網開發人員需知的“108”個技術棧

分佈式技術

LVS+Keepalive & nginx & zookeeper

LVS的全稱是linux virsual server,keepalive用於檢測各個機器是否存活。這種分佈式比較簡單,不需要太多的開發工作,侷限性在於一般只能用於無狀態服務中。

nginx一種很常用的反向代理服務器,具有豐富的負載均衡策略,簡單易用。

zookeeper 分佈式服務的管理者,在hadoop、kafka、分佈式框架中幾乎都有所應用。

互聯網開發人員需知的“108”個技術棧

RPC框架

thrift & dubbo

分佈式通信框架主要是使服務的遠程調用跟調用本地化方法一樣簡單。

thrift支持跨語言調用,定義了IDL語言,支持多種通信方式。使用方便,幾乎是所有RPC框架中通信效率最高的。

dubbo是阿里開發的一套分佈式RPC框架,官方文檔不錯,建議大家閱讀,雖然目前阿里有拋棄的趨勢,但仍有很多企業在用,學其精髓還是很值得的。

互聯網開發人員需知的“108”個技術棧

常用框架

spring & struts & hibernate & mybatis

spring 一個龐大的框架家族,幾乎無人不知;目前比較火的 springBoot springcloud

struts 一個完善的MVC框架,逐漸有被SpringMVC取代的意思

hibernate 一個完全面向對象的ORM框架,個人認為並不靈活

mybatis 一個半自動化的ORM框架

高性能通信

NIO & netty

常用庫

guava & fastJson & druid

guava 谷歌的一個開源庫,功能相當強大,包含基礎的字符串處理,常用容器集合的擴展,緩存,多線程通信等,java開發的利器。

fastJson 阿里開源的JSON處理庫,功能豐富,易用。

druid 阿里開源的數據庫連接池,性能由於其他數據庫連接池

未完待續... ...

也歡迎各位補充,評論。