中字幕视频在线永久在线,最新免费av在线观看,最近免费mv在线观看,亚洲乱码一区av春药高潮,专区,国产激情毛片,国产成人

IT培訓(xùn)-高端面授IT培訓(xùn)機(jī)構(gòu)
云和教育:云和數(shù)據(jù)集團(tuán)高端IT職業(yè)教育品牌
  • 國(guó)家級(jí)
    全民數(shù)字素養(yǎng)與技能培訓(xùn)基地
  • 河南省
    第一批產(chǎn)教融合型企業(yè)建設(shè)培育單位
  • 鄭州市
    數(shù)字技能人才(碼農(nóng))培養(yǎng)評(píng)價(jià)聯(lián)盟

我所知道的大廠是如何使用用PHP開(kāi)發(fā)業(yè)務(wù)的

  • 發(fā)布時(shí)間:
    2019-10-17
  • 版權(quán)所有:
    云和教育
  • 分享:

最重要的一句話: 未來(lái),PHP開(kāi)發(fā)可能是最好的業(yè)務(wù)系統(tǒng)服務(wù)端編程語(yǔ)言。

配圖4 云和數(shù)據(jù)PHP人工智能精英班高薪就業(yè).jpg

PHP作為服務(wù)端開(kāi)發(fā)的主要語(yǔ)言之一,使用廣泛。很多網(wǎng)站或者APP的服務(wù)端都是用PHP開(kāi)發(fā)的,其中不乏有像百度、新浪之類的大廠。那么,大廠是怎么用PHP開(kāi)發(fā)業(yè)務(wù)的呢?結(jié)合自己的工作經(jīng)驗(yàn)和了解到的一些情況,簡(jiǎn)單說(shuō)一說(shuō)。

1、場(chǎng)景

如果你自認(rèn)為自己是做PHP開(kāi)發(fā)的,那么,請(qǐng)回顧一些自己都用PHP做過(guò)一些什么樣的事情呢?相信絕大多數(shù)PHP工程師尤其是很多初學(xué)者,都會(huì)回答用來(lái)寫(xiě)網(wǎng)站或者服務(wù)端。甚至還會(huì)有人在基于PHP和前端代碼混雜的方式寫(xiě)界面,這是常態(tài)。但是,作為一門語(yǔ)言,難道PHP只能寫(xiě)網(wǎng)站或者服務(wù)端接口嗎?

配圖d 鄭州云和教育PHP培訓(xùn)課程詳解.jpg

其實(shí),從我自己的工作經(jīng)歷來(lái)看,用PHP來(lái)做數(shù)據(jù)清洗、數(shù)據(jù)統(tǒng)計(jì)甚至流式計(jì)算的場(chǎng)景,也并不少。比如,剛開(kāi)始實(shí)習(xí)和工作的時(shí)候,參與的幾個(gè)項(xiàng)目里面,大量的用PHP+crontab定時(shí)任務(wù)來(lái)實(shí)現(xiàn)數(shù)據(jù)的ETL或者數(shù)據(jù)的定時(shí)統(tǒng)計(jì)功能。如果不知道什么叫crontab,大概你需要去翻翻Linux相關(guān)的書(shū)籍或者網(wǎng)站了。再比如,業(yè)界公開(kāi)分享過(guò)的,鏈家用strom+PHP 做流式計(jì)算,這樣的例子在百度也存在很多。再比如用redis做消息隊(duì)列,然后啟動(dòng)若干PHP常駐進(jìn)程來(lái)消費(fèi)隊(duì)列里面的數(shù)據(jù)做類似實(shí)時(shí)計(jì)算之類的數(shù)據(jù)清洗;基于PHP實(shí)現(xiàn)一些簡(jiǎn)單的爬蟲(chóng)功能,并基于此來(lái)做網(wǎng)站或者接口的可用性監(jiān)控;基于PHP構(gòu)建自動(dòng)化測(cè)試用例……等等。

2、框架

PHP語(yǔ)言框架眾多,諸如ThinkPHP 、Yii、Laveral、Symfony、CI、Yaf等等,很明顯的一個(gè)問(wèn)題是,PHP做網(wǎng)站開(kāi)發(fā)的框架比Java做網(wǎng)站開(kāi)發(fā)多很多。大概是PHP這門語(yǔ)言太容易造輪子了。各大廠選擇PHP框架也是多種多樣:比如,新浪,之前因?yàn)橛续B(niǎo)哥的存在,PHP部分主要用yaf;比如途牛,PHP層面主要用Yii,比如百度,也是因?yàn)楹芫弥坝续B(niǎo)哥的存在,使用一個(gè)與yaf基本沒(méi)太多差別的框架,只是在內(nèi)部不叫yaf罷了,可以認(rèn)為yaf是百度內(nèi)容框架在開(kāi)源界的產(chǎn)品。當(dāng)然,還有很多公司選擇自己造輪子,基于Cmposer獲取很多基礎(chǔ)庫(kù)然后拼一拼就組成了一個(gè)框架,比如,孫紅雷代言的某二手車電商。

配圖3 云和數(shù)據(jù)PHP人工智能精英班高薪就業(yè).jpg

3、語(yǔ)言及周邊

看到語(yǔ)言部分,可能很多人會(huì)說(shuō),不就是PHP嘛,為什么還要說(shuō)語(yǔ)言。其實(shí),大廠除了PHP之外,還有很多其他的選擇。比如,以百度為例,因?yàn)橹癙HP版本性能問(wèn)題的原因,一直在尋找能夠既能利用PHP開(kāi)發(fā)效率高的優(yōu)勢(shì),又能提高PHP執(zhí)行性能的方案。所以,在很多人很多年的努力之后,百度終于將高大上的HHVM,搬到百度很多業(yè)務(wù)的運(yùn)行環(huán)境上面。當(dāng)然,那個(gè)時(shí)候,很多公司因?yàn)榛A(chǔ)技術(shù)研發(fā)投入的原因,基本還停留在PHP5.*的版本上,直到這兩年P(guān)HP7正式發(fā)布,很多公司,比如新浪微博,才逐漸找到了可以與HHVM性能持平的語(yǔ)言性能解決方案。關(guān)于HHVM是啥,基本就是臉書(shū)大神趙海平先生以前鼓搗的那套hiphop的東西,后來(lái)逐漸演變成了hhvm。多說(shuō)一句,趙海平先生以前就讀于清華,好像是學(xué)生物的,后來(lái)在臉書(shū)工作期間因?yàn)楦愠隽薶iphop而名聲大噪,后來(lái)被挖到阿里做研究員去了,據(jù)說(shuō)還是專注于研究性能方面的東西,此大神實(shí)在是我等非科班出身的程序員的學(xué)習(xí)榜樣。

除了語(yǔ)言之外,說(shuō)一下語(yǔ)言周邊。比如,很久之前,百度為了提升在線業(yè)務(wù)的運(yùn)行性能,調(diào)研了很久之后,最后采用把原來(lái)一種舊的服務(wù)器換成Nginx的方式,來(lái)提升系統(tǒng)性能。再比如,yaf,在一定層面上,也是框架性能方向的一種產(chǎn)物。后來(lái),出于語(yǔ)言性能層面,將hhvm搞到線上業(yè)務(wù)運(yùn)行環(huán)境,則屬于語(yǔ)言性能方向的成功探索和實(shí)踐。再比如,近期比較火的PHP擴(kuò)展swoole,也是一種新的語(yǔ)言周邊的技術(shù)基礎(chǔ)設(shè)施,這東西的出現(xiàn)給PHP的未來(lái)發(fā)展增加了很多的可能。比如,基于擴(kuò)展支持協(xié)程、更強(qiáng)的網(wǎng)絡(luò)通信、自帶http服務(wù)器等等。但是這東西,據(jù)我了解,除了幾家公司并且是部分業(yè)務(wù)使用外,離全量鋪展到線上業(yè)務(wù),完全成為類似mysql.so這樣的基礎(chǔ)性擴(kuò)展還有很遠(yuǎn),最起碼,在百度是這樣。

4、服務(wù)化

說(shuō)道服務(wù)端開(kāi)發(fā),尤其是一些大廠的業(yè)務(wù),都比較復(fù)雜,就不得不提一個(gè)事情,那就是服務(wù)化。這個(gè)方向最近還有一個(gè)非常熱的名次,叫微服務(wù),也是一種新的趨勢(shì)。服務(wù)化的基本思路是,原本需要在一個(gè)接口或者一個(gè)模塊里面寫(xiě)一大坨代碼的邏輯,通過(guò)合理拆分,拆接到不同的模塊里面去,并且通過(guò)調(diào)用模塊暴露的特定協(xié)議的接口,來(lái)將原本冗雜的業(yè)務(wù)黏合在一起。

配圖t 鄭州云和教育PHP培訓(xùn)課程詳解.jpg

在這個(gè)方向其實(shí)有很多不同的做法。比如,類似途牛之類的電商業(yè)務(wù)的公司,他們采用的方式是,最底層的服務(wù)化,或者叫平臺(tái)化,采用Java技術(shù)體系的東西來(lái)實(shí)現(xiàn),然后中間層用類似yii或者yaf之類的框架做一層業(yè)務(wù)層,或者叫黏合層,對(duì)底層的服務(wù)接口進(jìn)行封裝,然后給前端暴露http接口供前端使用;也有一些公司,喜歡把最底層的東西用C++實(shí)現(xiàn),剩下的中間層同樣基于PHP做一層黏合;當(dāng)然,還有一種情況,那就是無(wú)論底層的服務(wù)層還是中間層的業(yè)務(wù)黏合層,都用PHP來(lái)搞,比如百度的很多業(yè)務(wù)都是這個(gè)樣子。

服務(wù)化少不了中間件,上面說(shuō)了百度的一些業(yè)務(wù)無(wú)論服務(wù)層還是業(yè)務(wù)層,都用PHP來(lái)搞,一個(gè)非常重要的原因就是百度的基礎(chǔ)中間件比較完善,無(wú)論rpc、資源定位和服務(wù)發(fā)現(xiàn)、還是資源收斂都有很多非??煽康幕A(chǔ)中間件來(lái)搞定。當(dāng)然,關(guān)于這些中間件,開(kāi)源界也有很多其他的方案,比如,鳥(niǎo)哥的yar,基于swoole開(kāi)發(fā)的dora等等。

5、運(yùn)行環(huán)境與運(yùn)維

曾經(jīng)有個(gè)朋友入職某廠,有一天我們聊到一般剛?cè)肼毝甲鲂┦裁吹臅r(shí)候,朋友告訴我說(shuō),在那家公司,前兩天主要在配置開(kāi)發(fā)用到的各種lamp或者lnmp環(huán)境。囧。

在這方面,大廠的做法是怎么樣的呢?相信很多人搭建博客的時(shí)候用過(guò)一個(gè)一鍵部署lnmp環(huán)境的安裝包。很多大廠里也是類似。以百度為例,基礎(chǔ)的lnmp開(kāi)發(fā)環(huán)境是一個(gè)融合好的,組合了nginx\php或hhvm還有各種中間件和擴(kuò)展以及其他的輔助模塊的安裝包,新人入職的時(shí)候wget一些需要使用到的版本的安裝包然后執(zhí)行兩三個(gè)啟動(dòng)腳本,環(huán)境基本就搭建結(jié)束了。其實(shí)這個(gè)融合包,絕大部分跟外面的一鍵搭建環(huán)境很相似,主要是融入了一些公司基礎(chǔ)的中間件。當(dāng)然,也有一些不同,舉個(gè)例子,你是怎么解決在一臺(tái)機(jī)器上搭建多套PHP運(yùn)行環(huán)境的?環(huán)境與環(huán)境之間沒(méi)有相互組件依賴,不相互影響。有思路嗎?建議去lamp.baidu.com上看看,說(shuō)不定會(huì)有一些發(fā)現(xiàn)。

配圖c 鄭州云和教育PHP培訓(xùn)課程詳解.jpg

還有一個(gè)問(wèn)題,就是PHP的運(yùn)維的問(wèn)題。大廠一般都是基于Paas平臺(tái)來(lái)解決這樣的問(wèn)題。業(yè)界很多公司,比如頭條等等都是基于Docker的解決方案來(lái)做資源隔離、服務(wù)化以及資源使用率提升。百度也是類似,不同的是,百度最底層并不是基于Docker,而是一種同樣基于cgroup的資源隔離基礎(chǔ)上的獨(dú)特資源調(diào)度和解決方案?;究梢哉J(rèn)為是一臺(tái)原生服務(wù)器上可以啟動(dòng)若干個(gè)坑,好吧,英文叫container,然后每個(gè)坑里各自跑一套lnmp架構(gòu)的組件,然后這套組件里面,自帶一些日志采集、配置熱加載之類的基礎(chǔ)設(shè)置,算是一些輔助的基礎(chǔ)設(shè)施吧。 ?業(yè)界也有越來(lái)越多的公司專注于上述類似的Paas云服務(wù),比如靈雀云、DaoCloud等容器云平臺(tái),當(dāng)然也有一些做云遷移服務(wù)的云服務(wù)提供商,也能提供一些類似的解決方案,來(lái)解決長(zhǎng)久以來(lái)PHP運(yùn)維方面的痛點(diǎn)問(wèn)題。

6、其他輔助設(shè)施

對(duì)于一個(gè)大型復(fù)雜的在線業(yè)務(wù),尤其是在進(jìn)行分布式和服務(wù)化之后,一般而言都是有很多基礎(chǔ)和輔助設(shè)施的。比如,前面提到的資源定位、服務(wù)發(fā)現(xiàn)是一類。當(dāng)然,輔助設(shè)施并不只有這些,一些業(yè)界的,無(wú)論針對(duì)什么語(yǔ)言什么架構(gòu)方案的基礎(chǔ)設(shè)施,在大廠里一個(gè)也少不了。比如,類似于谷歌Dapper和淘寶鷹眼的分布式鏈路追蹤系統(tǒng)、比如接口調(diào)用統(tǒng)計(jì)系統(tǒng)、自如,日志采集傳輸與統(tǒng)計(jì)解決方案等等,該有的,一個(gè)都少不了。關(guān)于這些基礎(chǔ)設(shè)施或者解決方案,如果有時(shí)間的話,其實(shí)每個(gè)都可以展開(kāi)寫(xiě)個(gè)幾千字。

7、PHP的尷尬

PHP還是世界上最好的語(yǔ)言嗎?很多人會(huì)認(rèn)為這句調(diào)侃沒(méi)什么問(wèn)題,并且回答是的。但是,相比于Js呢?想當(dāng)年我入坑PHP的時(shí)候,就是因?yàn)閰⒓影⒗镌频拈_(kāi)發(fā)者大會(huì),發(fā)現(xiàn)阿里和一些參會(huì)的公司好多都用PHP,而不是當(dāng)時(shí)已經(jīng)學(xué)會(huì)的.net、asp之類的微軟的技術(shù)??墒?,當(dāng)我大學(xué)臨近實(shí)習(xí)的時(shí)候,發(fā)現(xiàn),阿里已經(jīng)很少用PHP了,而是轉(zhuǎn)向了nodejs這套技術(shù)棧:相比于數(shù)據(jù)層用Java+業(yè)務(wù)層PHP+前端Js的組合,為什么不能直接用數(shù)據(jù)層Java+業(yè)務(wù)層node.js+前端Js的組合呢?后者在語(yǔ)言層面少了一層,同時(shí)帶來(lái)的,還有人員成本的較低,技術(shù)棧的簡(jiǎn)化等等。

配圖5 云和數(shù)據(jù)PHP人工智能精英班高薪就業(yè).jpg

這就是PHP的尷尬所在:PHP在編程語(yǔ)言的定位層面,做偏前端的東西,不如Js和node;做偏后端的東西,又面臨著Java、C++、Go之類的語(yǔ)言的競(jìng)爭(zhēng);同時(shí)由于PHP的性能問(wèn)題與功能局限等問(wèn)題,導(dǎo)致其在表面被人調(diào)侃為世界上最好的語(yǔ)言的浮冰之下,潛藏著巨大的市場(chǎng)和使用場(chǎng)景危機(jī)。好在,如前面提到的,swoole之類的擴(kuò)展正在逐漸彌補(bǔ)PHP在網(wǎng)絡(luò)編程、協(xié)程編程等方面的功能短板;同時(shí)諸如yaf、swoole、PHP-JIT等技術(shù)的逐步發(fā)展,也在漸漸的把PHP在性能方面的問(wèn)題進(jìn)行逐步改善。

總結(jié)

未來(lái),PHP開(kāi)發(fā)可能是最好的業(yè)務(wù)系統(tǒng)服務(wù)端編程語(yǔ)言。 解釋請(qǐng)看正文,就醬。