国产精品一区二区在线观看完整版,在线观看91精品国产性色,欧美日韩另类视频

杭州校區(qū)切換校區(qū)
圖片

Java領(lǐng)域從傳統(tǒng)行業(yè)向互聯(lián)網(wǎng)轉(zhuǎn)型你必須知道的那些事兒

發(fā)布時(shí)間: 2017-06-26

武林中,"天下武功出少林"指各門(mén)各派的武功都與少林武學(xué)有一定的淵源,技術(shù)也是相同的道理,對(duì)于Java領(lǐng)域的應(yīng)用而言,傳統(tǒng)行業(yè)與互聯(lián)網(wǎng)行業(yè)的技術(shù)都來(lái)自J2SE和J2EE的生態(tài)圈,但是兩個(gè)行業(yè)的側(cè)重點(diǎn)不同,傳統(tǒng)行業(yè)側(cè)重于嚴(yán)格的規(guī)范、復(fù)雜的流程、豐富的功能,因此或多或少的都會(huì)使用J2EE規(guī)范定義的技術(shù),Appserver是J2EE規(guī)范的完全實(shí)現(xiàn),因此,傳統(tǒng)行業(yè)的企業(yè)級(jí)軟件開(kāi)發(fā)基本都是部署在Appserver上的,這樣可以重復(fù)利用Appserver提供的通用功能而節(jié)省開(kāi)發(fā)和實(shí)現(xiàn)的工作量,而后者更注重互聯(lián)網(wǎng)產(chǎn)品的非功能質(zhì)量需求,通常包括高可用、高性能、安全性、可伸縮、可擴(kuò)展等,“天下武功唯快而不破”,充分看出互聯(lián)網(wǎng)企業(yè)里程序性能的重要性,為了達(dá)到較好的性能,高度抽象的J2EE技術(shù)已經(jīng)沒(méi)法滿足需求,因此互聯(lián)網(wǎng)技術(shù)更傾向于在簡(jiǎn)單的J2SE上發(fā)展具有互聯(lián)網(wǎng)特色的技術(shù)棧,重新定義互聯(lián)網(wǎng)級(jí)的開(kāi)發(fā)工具、平臺(tái)和技術(shù)棧。

本文就是給這些想從傳統(tǒng)行業(yè)跨入互聯(lián)網(wǎng)的小伙伴們準(zhǔn)備的一篇導(dǎo)向性文章,幫助各位了解互聯(lián)網(wǎng)的技術(shù)棧、互聯(lián)網(wǎng)的側(cè)重點(diǎn)、互聯(lián)網(wǎng)的核心技術(shù),并給出如何以傳統(tǒng)行業(yè)的技術(shù)棧為基礎(chǔ)快速掌握互聯(lián)網(wǎng)的核心技術(shù)。

這里需要再次澄清,小編并不認(rèn)為互聯(lián)網(wǎng)行業(yè)的技術(shù)要比傳統(tǒng)技術(shù)深?yuàn)W多少,這些技術(shù)跑不出J2SE和J2EE的生態(tài)圈,只不過(guò)高度抽象的J2EE技術(shù)由于性能上的局限性而被互聯(lián)網(wǎng)撇棄而已,但是不得不承認(rèn)的是兩個(gè)行業(yè)的側(cè)重點(diǎn)不同,傳統(tǒng)行業(yè)側(cè)重于規(guī)范,流程,功能的復(fù)雜性以及正確性,而互聯(lián)網(wǎng)更側(cè)重于“快”,這里的“快”有兩方面的意思,一個(gè)是產(chǎn)品運(yùn)行效率要高,響應(yīng)速度要快,另外一個(gè)是開(kāi)發(fā)效率要快,響應(yīng)市場(chǎng)需求要快。從另外一個(gè)側(cè)面說(shuō),傳統(tǒng)行業(yè)一般關(guān)注一個(gè)復(fù)雜系統(tǒng)的功能完善和豐富,而互聯(lián)網(wǎng)企業(yè)更關(guān)注一個(gè)簡(jiǎn)單的垂直業(yè)務(wù)的非功能質(zhì)量,例如高性能,可用性,高并發(fā),可擴(kuò)展,可伸縮,安全性等,那么,一個(gè)從業(yè)人員從傳統(tǒng)行業(yè)到互聯(lián)網(wǎng)行業(yè),你到底還有多少距離?

小伙伴們從哪里開(kāi)始入手互聯(lián)網(wǎng)

來(lái)自于傳統(tǒng)行業(yè)的技術(shù)人員,他們大多數(shù)掌握的技能是SSH,稍微資深一點(diǎn)的工程師對(duì)J2EE規(guī)范有所了解,他們?nèi)匀辉谑褂肑2EE規(guī)范的EJB、JPA、JMS、JCA、JAAS等技術(shù),數(shù)據(jù)庫(kù)基本上使用Oracle、DB2、Sqlserver等等。傳統(tǒng)行業(yè)的開(kāi)發(fā)人員基本實(shí)施“模塊包攬制”,這得益于J2EE規(guī)范的完整性,以及Appserver提供了基本所有架構(gòu)需要的功能,開(kāi)發(fā)人員只需要將各個(gè)業(yè)務(wù)模塊填入J2EE和Appserver提供給你的框架即可,因此,一個(gè)傳統(tǒng)的開(kāi)發(fā)人員會(huì)包攬一個(gè)模塊從前臺(tái)到后臺(tái)所有的工作,這包括HTML、JS、CSS、EJB、JPA、SQL、PLSQL等等。這些技術(shù)是不是一無(wú)是處,當(dāng)然不是,反而是非常有價(jià)值的,那有了這些技術(shù),我們是否可以一步跨入互聯(lián)網(wǎng),也不是,還需要以這些技術(shù)為基礎(chǔ),進(jìn)一步擴(kuò)展技術(shù)視野,對(duì)欠缺的技術(shù)廣度和深度進(jìn)行不足。下面就學(xué)習(xí)傳統(tǒng)行業(yè)技術(shù)人員擁有哪些技術(shù)積累,下一步又如何補(bǔ)充自己的知識(shí)面,成為能夠勝任互聯(lián)網(wǎng)行業(yè)的優(yōu)秀技術(shù)人員呢?

消息隊(duì)列

在傳統(tǒng)行業(yè),相信你一定用過(guò)JMS,作為J2EE規(guī)范的一部分,所有的Aappserver都有JMS的實(shí)現(xiàn),那你一定知道JMS包含Queue和Topic兩種Subject,你也知道Send/Receive和Publish/Subscribe兩種收發(fā)模式,那在互聯(lián)網(wǎng)為什么就不用這些呢?原因主要有兩個(gè),一個(gè)是商業(yè)的Appserver都是收費(fèi)的,然而,互聯(lián)網(wǎng)提供的產(chǎn)品是免費(fèi)的,互聯(lián)網(wǎng)使用的產(chǎn)品也多是免費(fèi)的,另外一個(gè)原因就是這些Appserver的實(shí)現(xiàn)性能差,有測(cè)評(píng)顯示ActiveMQ比JbossMQ速度要高出10倍,在某些應(yīng)用場(chǎng)景下ZeroMQ的速度要高出一個(gè)數(shù)量級(jí),可達(dá)到微妙級(jí)別的延遲。除此之外,一些開(kāi)源的MQ的實(shí)現(xiàn)針對(duì)互聯(lián)網(wǎng)業(yè)務(wù),提供了除Queue和Topic的支持,還有partition、group、broker等更復(fù)雜的消息模型,具體參考Kafka。 Kafka的設(shè)計(jì)具有使用簡(jiǎn)單、功能豐富、高性能等優(yōu)點(diǎn),不但天生具有持久、分片、復(fù)制等功能,而且在使用上對(duì)開(kāi)發(fā)者和運(yùn)維的體驗(yàn)也很好。那么如果你在傳統(tǒng)行業(yè)掌握了JMS規(guī)范定義的消息隊(duì)列技術(shù),你只需要再往前走一步,請(qǐng)深入學(xué)習(xí)開(kāi)源的Kafka、RockitMQ、ActiveMQ、RabbitMQ、ZeroMQ、MSQ等。

緩存

在傳統(tǒng)行業(yè),相信大家都用過(guò)Oscache和Ehcache, 前者主要針對(duì)網(wǎng)頁(yè)的緩存,后者主要針對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的緩存,通??勺鳛镠ibernate的二級(jí)緩存,相信有些人還用過(guò)Jboss Cache,這是一個(gè)分布式企業(yè)級(jí)可實(shí)時(shí)復(fù)制的Cache,有些人在項(xiàng)目中也寫(xiě)了自己的緩存,甚至在一些項(xiàng)目中直接使用Hashtable作為緩存,其實(shí)這些緩存加速了特定場(chǎng)景下的數(shù)據(jù)訪問(wèn),對(duì)你的項(xiàng)目成功起到了至關(guān)重要的作用。但是互聯(lián)網(wǎng)行業(yè)則從另外一個(gè)角度來(lái)使用緩存,主要應(yīng)用場(chǎng)景有兩個(gè):第一,大量的數(shù)據(jù)需要集中保存,在服務(wù)的任意節(jié)點(diǎn)上可以訪問(wèn)緩存中的任意數(shù)據(jù),也就是需要數(shù)據(jù)的中心存儲(chǔ),而且還要滿足快速的查詢需求的場(chǎng)景;第二,數(shù)據(jù)庫(kù)讀性能是有瓶頸的,廉價(jià)硬件機(jī)器上的單機(jī)Mysql讀操作吞吐量在1000/s左右,大量的讀查詢會(huì)壓垮數(shù)據(jù)庫(kù),這需要使用緩存來(lái)抗住讀流量,通常應(yīng)用在有熱點(diǎn)數(shù)據(jù)的場(chǎng)景。從這兩個(gè)應(yīng)用場(chǎng)景來(lái)看,互聯(lián)網(wǎng)行業(yè)更關(guān)心分布式緩存,那數(shù)據(jù)如何分布呢?很簡(jiǎn)單,Hash或者一致性Hash,所以,咱們可不可以先把Oscache和Ehcache放一邊,來(lái)研究一下Redis,Memcache或者淘寶的Tair呢?最簡(jiǎn)單的辦法從Redis和Memcache的區(qū)別開(kāi)始入手?除了要學(xué)習(xí)分布式緩存,例如Redis、Memcache本身的功能和技術(shù)點(diǎn)外,最主要的要有緩存分片的思想,在互聯(lián)網(wǎng)里大多數(shù)的熱數(shù)據(jù)都是緩存在緩存服務(wù)中的,這需要大量的緩存服務(wù)器,單臺(tái)機(jī)器是不能滿足需求的,緩存分片是一個(gè)大話題,就不在這里深入討論了。

服務(wù)框架

在傳統(tǒng)行業(yè),相信大家都使用EJB和Webservice來(lái)提供服務(wù)的導(dǎo)出和導(dǎo)入,有些個(gè)別傳統(tǒng)行業(yè)不用APP服務(wù)器,僅僅使用JDK的RMI來(lái)導(dǎo)出和導(dǎo)入服務(wù),但是為什么互聯(lián)網(wǎng)偏偏不喜歡這些技術(shù)呢?Webservice使用重量級(jí)的SOAP協(xié)議,臃腫的XML滿世界都是,性能上的去嗎? 那互聯(lián)網(wǎng)用什么,互聯(lián)網(wǎng)使用輕量級(jí)的RPC框架和RESTful服務(wù),前者使用輕量級(jí)的序列化框架,例如:Google的ProtoBuffer, 還有Hessian和Burlap等序列化協(xié)議,后者則使用簡(jiǎn)單的HTTP協(xié)議,前者適合在內(nèi)網(wǎng)做高性能的服務(wù)調(diào)用,而后者適合異構(gòu)平臺(tái)的服務(wù)調(diào)用,例如跨語(yǔ)言、跨防火墻、前后臺(tái)之間等。在互聯(lián)網(wǎng)的世界里,幾乎所有的公司都實(shí)現(xiàn)了服務(wù)化,服務(wù)化導(dǎo)致的問(wèn)題就是一致性問(wèn)題,如何解決高并發(fā)系統(tǒng)的一致性呢?使用兩階段提交協(xié)議、三階段提交協(xié)議、TCC?還是遵循ACID原理、CAP原理、BASE原理?如果我們保證的是最終一致性模型,我們都有哪些模式可以應(yīng)用。最近微服務(wù)變得越來(lái)越流行,微服務(wù)實(shí)際上是服務(wù)化的一個(gè)延續(xù),是更細(xì)致化的服務(wù)化的架構(gòu),微服務(wù)的服務(wù)框架的代表是Spring Cloud,它與Netflix集成,提供了限流、熔斷、倉(cāng)壁隔離、失效轉(zhuǎn)移等為服務(wù)化中必不可少的高級(jí)特性。

數(shù)據(jù)庫(kù)

在傳統(tǒng)行業(yè),大多數(shù)人開(kāi)發(fā)人員都使用Oracle、DB2、Sqlserver數(shù)據(jù)庫(kù),其實(shí),從功能和性能上來(lái)講,他們都不亞于Mysql, 甚至比Mysql更優(yōu)秀,但是Mysql是免費(fèi)的,這使得Mysql得到互聯(lián)網(wǎng)行業(yè)的青睞。

那么我們分析下,傳統(tǒng)行業(yè)的人員在數(shù)據(jù)庫(kù)方面欠缺什么嗎?首先,Oracle和Mysql都使用B+樹(shù)索引,原理相同,使用方法相同;Oracle支持行級(jí)鎖,Mysql Innodb同樣支持行級(jí)鎖;Oracle Dataguard支持?jǐn)?shù)據(jù)復(fù)制,Mysql也支持?jǐn)?shù)據(jù)復(fù)制,但是Mysql的復(fù)制模式更靈活,并且支持主主配置。前面這些都是大同小異,如果你理解了相應(yīng)的Oracle技術(shù),你用很少的時(shí)間就可以掌握Mysql的相關(guān)技術(shù)。但是不同點(diǎn)是,Oracle雖然支持集群,通過(guò)增加服務(wù)節(jié)點(diǎn)的方式可以增加服務(wù)性能,但是集群的節(jié)點(diǎn)數(shù)量是有限的,并且數(shù)據(jù)存儲(chǔ)是共享的,所以擴(kuò)容基本采用垂直方式,然而使用Mysql則采用水平擴(kuò)展,也就是需要進(jìn)行手工的分區(qū)分表,對(duì)數(shù)據(jù)進(jìn)行分而治之,以滿足日益增長(zhǎng)的讀寫(xiě)壓力以及數(shù)據(jù)存儲(chǔ)壓力。因此,如果想向互聯(lián)網(wǎng)轉(zhuǎn)行,一定要學(xué)好Mysql。在互聯(lián)網(wǎng)行業(yè)里面對(duì)性能追求到達(dá)了極致,因此會(huì)要求開(kāi)發(fā)人員對(duì)數(shù)據(jù)庫(kù)原理有所了解,其中最重要的部分就是索引。

負(fù)載均衡

剛才談到,高并發(fā)系統(tǒng),壓力山大的時(shí)候怎么辦?思想只有一個(gè)分而治之( divide-and-conquer)。因此,負(fù)載均衡則非常重要,傳統(tǒng)行業(yè)以銷售產(chǎn)品為盈利模式,因此,大多數(shù)項(xiàng)目在需要負(fù)載均衡的時(shí)候,多使用F5硬件負(fù)載均衡。實(shí)際上傳統(tǒng)的J2EE規(guī)范的EJB也可以分布式發(fā)布,通過(guò)JNDI的集成,也可以進(jìn)行一定程度的負(fù)載均衡,但是這個(gè)負(fù)載均衡顯得太重量級(jí),用起來(lái)非常的不方便,效率也很低,并且和APP服務(wù)器綁定。那么互聯(lián)網(wǎng)呢?多采用軟負(fù)載均衡,你必須了解LVS、nginx、Apache、Varnish、Haproxy等七層和三四層負(fù)載均衡原理和產(chǎn)品。

性能評(píng)估和容量估算

如果你決定要來(lái)互聯(lián)網(wǎng)一顯身手,你必須學(xué)會(huì)性能評(píng)估和容量估算,這包括對(duì)前端機(jī)、緩存、消息隊(duì)列、數(shù)據(jù)庫(kù)等各個(gè)性能指標(biāo)的估算,例如:吞吞量,響應(yīng)時(shí)間,內(nèi)存,CPU,IO,網(wǎng)絡(luò)IO等。為了確保架構(gòu)設(shè)計(jì)的合理性,性能和容量評(píng)估是在架構(gòu)設(shè)計(jì)初期完成的,用來(lái)證明架構(gòu)方案可行,但是在項(xiàng)目實(shí)施中和實(shí)施后,還需要對(duì)項(xiàng)目的進(jìn)行壓測(cè),來(lái)證明項(xiàng)目按照既定的目標(biāo)而推薦和完成。


希望這篇文章能夠幫助更多的傳統(tǒng)行業(yè)的從業(yè)人員轉(zhuǎn)入互聯(lián)網(wǎng),在互聯(lián)網(wǎng)的大舞臺(tái)上展現(xiàn)你的才能。



上一篇: 騰科快訊-值得你加以了解的五款Material Web設(shè)計(jì)框架

下一篇: 騰科快訊-九種方式快速提升AngularJS性能水平

在線咨詢 ×

您好,請(qǐng)問(wèn)有什么可以幫您?我們將竭誠(chéng)提供最優(yōu)質(zhì)服務(wù)!

<bdo id="pdyax"></bdo>

    <pre id="pdyax"></pre>
    <menuitem id="pdyax"></menuitem>
      <form id="pdyax"><tbody id="pdyax"></tbody></form>

      1. <center id="pdyax"><center id="pdyax"></center></center>
          1. 主站蜘蛛池模板: 微博| 瑞安市| 盘山县| 高安市| 特克斯县| 大邑县| 静海县| 库车县| 吉木乃县| 新兴县| 和林格尔县| 湖南省| 陇南市| 泰州市| 淅川县| 和平区| 溆浦县| 东兰县| 永清县| 东台市| 桃江县| 安宁市| 辰溪县| 宁远县| 周口市| 右玉县| 疏勒县| 邓州市| 建平县| 潼关县| 贵州省| 昌宁县| 林西县| 商丘市| 榆林市| 贡觉县| 扶绥县| 于都县| 德兴市| 磴口县| 宁夏|