最近在使用 node 構建一個數(shù)據(jù)處理系統(tǒng),涉及到的模塊較多,因此打算采用微服務架構,目前使用了一個微服務框架 Seneca,采用 tcp 進行通信。
Seneca 微服務主要負責和db通信、以及數(shù)據(jù)處理計算(不是很耗時的計算)。
這里大部分數(shù)據(jù)處理計算的工作都可以延時完成,但是前端 http 的返回和其中的一部分工作比如數(shù)據(jù)庫查詢工作有關,所以需要等待某些微服務模塊有返回結果了(或返回部分結果了)再返回給前端。
于是我通過ab測試發(fā)現(xiàn):采用 Seneca 的方式比原來各個模塊寫在一起直接引入的方式,效率要低好多,比較壞的情況下,甚至平均響應時間是原來的 1.5 倍。
這個也不難理解,畢竟會有通信的開銷,還可能因為采用了 Seneca 造成其他的隱形成本。
我現(xiàn)在有點迷茫,采用了微服務的話,可以使模塊之間解藕,對開發(fā)有一定方便,但是卻會降低效率,感覺有些得不償失。
我對微服務的理解也并不深刻,只是覺得能在代碼維護上給這種單體系統(tǒng)帶來好處,另外就是微服務的單個服務方便擴容。
是不是我的使用方式不對?還是說微服務本來就有降低效率這個問題?各位是如何解決的呢?希望能指點一二。
你的理解是正確的,微服務本來就會降低效率。但是為什么我們還要采用微服務?答案也是顯而易見的,你自己也提出了:解耦。但是不能為了解耦而解耦,解耦也是有目的的,而且目的絕不僅僅只是為了開發(fā)方便。不采用微服務,你所有的模塊都必須跑在同一臺主機上,如果模塊很多,占用內(nèi)存過大,CPU消耗過多怎么辦?這時候你勢必要把一部分模塊分出來放置到另一臺服務器上去,這時候就產(chǎn)生了微服務的需求,兩臺服務器之間總要通過網(wǎng)絡進行通信吧,通過網(wǎng)絡進行通信的兩個模塊無論如何也會比運行在同一臺服務器上的兩個模塊要慢。但是架構就是這么個架構,剩下的只是如何提高速度的問題,比如考慮加一些緩存了,負載均衡了等等。
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產(chǎn)業(yè)為響應國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復興的升級產(chǎn)業(yè)鏈。利用北京大學優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓領域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術, 熟練的跨平臺面向對象開發(fā)經(jīng)驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。