美團.點評服務治理框架

来源:http://www.cnblogs.com/xiexj/archive/2017/09/11/7496347.html
-Advertisement-
Play Games

7年前我飛去廈門幫男神做項目,得到的結果他們老闆驚呆了,真是大牛啊。說一定要意思一下,不能讓大牛白做,結果還是什麼也沒給,所以我衷心祝福那個老闆儘快破產。但是男神卻很鄙視我,鄙視了很多年。因為他看到了我的過程,覺得沒有技術含量。事情是這樣:當時男神做了一個extjs框架的管理系統。這個框架現在基本沒 ...


  7年前我飛去廈門幫男神做項目,得到的結果他們老闆驚呆了,真是大牛啊。說一定要意思一下,不能讓大牛白做,結果還是什麼也沒給,所以我衷心祝福那個老闆儘快破產。但是男神卻很鄙視我,鄙視了很多年。因為他看到了我的過程,覺得沒有技術含量。事情是這樣:當時男神做了一個extjs框架的管理系統。這個框架現在基本沒有用了,因為它很重,頁面渲染很慢。我的做法是服務一啟動我就預測操作人員要載入哪個頁面,偷偷給它預先載入上。雖然當時也用了壓縮等很多別的技術,時間長了,不記得了。但是都是為了寫文檔好看,真正起作用的還是預先載入。被男神鄙視了很多年,我也思考了很多年,我的做法真的沒有技術含量嗎?後來知道了真正大牛的一些做法:谷歌曾靜用一行代碼代替了一個幾萬行的大文件,搜索速度提高60%。這行有名的代碼有個官方名字,叫:jquery mini[汗]。其最核心思想是去掉空行,空白,註釋。後來我學習了jvm,spring框架,他們都在預載入和懶載入上頗費苦心。仔細研究linux內核看到的也是大牛儘量將底層的複雜性抽象成一些簡單的概念。如果現在讓我說我當時是怎麼做的,我可以用一些很專業名詞:預載入,人工智慧預測,大數據分析等等。金庸筆下的喬峰,遇強則強,平平無奇的招式到他手中都可以威力無比。關鍵是怎麼用,別人搞不定的東西,到我手裡可以很簡單的方式解決,怎麼就沒有技術含量啦。好吧,為了讓我家高大帥氣,寫得代碼,下得廚房的男神能另眼相看,咱也研究點高大上的。

  我在人人的時候,用的還是簡單的RMI或RPC工具,簡單的暴露和引用遠程服務,通過配置服務的URL地址進行調用。負載均衡,好吧,我那時候那個部門數據量比較小,也就是master-slave做個高可用,都談不上負載均衡。當服務越來越多,服務URL配置管理變得非常困難,單點壓力也越來越大。這時候需要一個服務註冊中心,動態的註冊和發現服務,使服務的位置透明。而且消費方要能獲取到服務提供方的地址列表,實現軟負載均衡和failover。

  像美團.點評現在,服務很多,溝通成本高,調某個服務失敗該找誰?服務的參數都有什麼約束?如何確保服務質量?如何降級或熔斷?機器總是有閑時和忙時,或者榮譽機器防災,如何極高機器的利用率,自動擴容?這些都是服務治理要考慮的問題。

   我在業務部門,對於服務治理只是用。但是原理要知道一些,否則遇到問題難以去排查。美團.點評沒用服務治理時的早期RPC架構:使用的是http+json調用,編碼工作多,介面定義缺乏強Scheme約束,不易規範化。http協議頭較重,應用於內網時鏈路較長,有一定可用性風險。缺乏服務自動註冊發現機制,依賴人工運維。下圖是美團.點評12年的服務治理架構,那時候我還在人人,人人用的也是這套架構。美團和人人還是有很深的淵源的。

  

  這種架構存在服務註冊中心強依賴zk,使用臨時節點,容易因網路抖動導致不穩定。多語言支持帶來的服務註冊/發現需求,需要多次實現相似邏輯,zk出現故障影響面大,不易進行隔離的問題。服務通信框架未支持服務路由分組,機房路由,節點動態啟停等策略。框架內強耦合,過多邏輯放到客戶端,升級迭代困難,缺乏服務數據採集,監控報警等機制。總體上未實現全生命周期的服務治理,運營,難以推進服務規範化,標準化。

   後來我們就進入了OCTO分散式服務通信框架及服務治理系統。OCTO是美團.點評內部公司級基礎設施,為公司所有業務提供統一的高性能服務通信框架,使業務具備良好的服務運營能力,輕鬆實現服務註冊,服務自動發現,負載均衡,容錯,灰度發佈,數據可視化,監控告警等功能,提升服務開放效率,可用性及服務運維效率。

  

  • MTransport - 通信服務框架。支持thrift, http,現包括mtthrift(java),cthrift(C/C++),pthrift(PHP),Turbo thrift(Node.js)
  • MNS - 命名服務。負責服務的註冊,發現等功能。
  • MSGP - 服務治理管理平臺http://coto.sankuai.com 面向服務管理人員提供一站式治理功能。
  • SgAgent - 本地代理,負責Region的劃分,服務分組等特性功能的實現。主要在服務註冊發現的時候採用代理模式,將註冊發現結果保存在本地,策略熱更新。避免了對zk的強依賴帶來的網路抖動。
  • HLB - 彈性負載均衡器。所有http請求/應答流量都會穿過這個系統,類似amazon elb。

 

做業務的嘛,下麵從使用層面來講一下OCTO服務治理 。

  首先定義服務:區分統一寄出組件服務,業務服務的分層,識別功能職責,邊界。明確服務的負責人,備份負責人。

  然後註冊服務:確定服務的唯一標識,與服務本身有關,和其角色(服務方,調用方)無關。OCTO平臺註冊服務:http://octo.sankuai.com/service/registry。建議格式為:com.公司(內部sankuai,外部meituan).業務線.具體服務名。

   其實這個服務治理是從SOA演化而來的,首先有面向服務,才有的RPC調用,調用的多,垂直切分不能滿足需求,從而有了分散式架構,微服務架構。微服務多了,怎麼保證各個模塊的健康,高效合作,才有了服務治理。所以在小公司的區別和大公司的區別。就好像一個建一間房子,四合院,或者是一個小區,一個城鎮的區別。有了需求規模,才有了對技術的要求。但是在大公司我可能也就是個擰螺絲的,在小公司,我需要自己建一套房子,誰也說不好哪個技術含量更高。有個朋友想挖我去他們公司當技術總監,待遇是我現在的2倍。待遇給到了,活自然也不會少。我有我家男神,還沒被逼到這份兒上,還是想找個有點時間想學點啥學點啥的,走可持續發展的道路。

跑題時間:

  周三晚上下班回家路上遇到一隻肥胖的蛤蟆,它在人行道上趴著,嚇了我一跳。然後它開始爬爬停停的走向草叢。讓我想起自己170多斤的時候想跑跑不動的樣子。這隻蛤蟆很漂亮,一看就是蛋白質很充足,皮膚很光亮。自己更年輕的時候走過許多地方,現在已經不屑於為了旅行而旅行。用心去看,在哪裡都會看到不同的世界。春天裡行道樹桃樹和梨樹間隔的排列,每天看到的花開的景象都不同,現在樹上已經結滿了果子。美團.點評的院子里紫薇花開的正好。讓我想起東軟時候滿園的花兒。

  每次換工作我都要給東軟的趙叔叔發封郵件到他公司郵箱,15年他都沒換過工作。他才大我5歲。我是開他玩笑才叫他叔叔,一叫叫了十年。趙叔叔對女孩子相當刻薄。經常見到他劈頭蓋臉的朝著小翻譯罵。我覺得那些小翻譯跟他說過什麼事之後都會去廁所哭一會兒吧。但是他一見到我就會沒了脾氣。我們一起去日本的時候,經常加班到半夜3,4點。有時候他幹完活兒睡著了,我有事兒找他,就毫不客氣的把他叫醒。我們同去的人說我太過分了,但我不覺得,因為他從來沒跟我發過脾氣。我的最愛是巧克力。在日本過情人節之前,我念叨情人節都沒人送我巧克力。結果,情人節當天,我們去公司的時候,每個女孩子的桌子上都有一大塊的巧克力。但是其他女孩子桌子上的巧克力都或多或少的化掉了,只有我的是好的。大家都不知道是誰放的,只有我知道。因為在這前一天我看到趙叔叔買的,然後裝到外套裡面靠近胸口的兜里,因為太熱,巧克力從靠近裡面的部分開始化掉了。

  在沈陽的時候,我吃夠了外面的飯,就會和女同事一起去趙叔叔家蹭飯,每次他都是燉豆角,區別就是這次是排骨燉的,下次是雞腿燉的。好像他還會西紅柿炒雞蛋。後來從日本回來,我們就更熟了。我想吃什麼就讓他帶我去,想KTV也找他。和他一起,都是我想乾什麼就乾什麼,但是我從不掏錢。因為他對其他女孩子那麼凶,都是大男子主義在作怪,大男子主義的男孩子從來都不會讓女孩子掏錢的。但是我的性格,不愛欠別人的,所以我會經常找他買一些電子設備,多給他一些錢。典型的IT gay,一看到電子產品,眼睛就冒光。他會跟我說男孩子在背後都是怎麼說女孩子的,說那個誰誰誰一條腿有點粗,誰誰誰鼻子長得怎樣怎樣。每個女孩都被批的不留情面,我竟然在旁邊笑得前仰後合。但是說到我那時候一個日語老師,也是個專業翻譯。他沒吱聲。我問他人家是怎麼說我的,他自然也不吱聲。我特別能明白,我那個日語老師是標準的情商高,聰明,上進。他看不慣的那些小翻譯,多少有些自己覺得自己比她們聰明的優越感和大男子主義在作祟。比他聰明的女孩子就是他的剋星。他對我尤其的好是因為我相信在他不羈的外表下,有顆比誰都要善良的心。確實是,他從沒換過工作,他卻對我說:“你如果在這裡不開心,你就走吧,什麼金融危機根本不是什麼大問題。你也不用擔心遇到壞人,因為這世界上沒有誰會忍心傷害你。”

  後來我遇到我家男神,讓他先來北京給我鋪路,我也來了北京。還是最愛吃日本本土的明治榛仁巧克力。趙叔叔去出差,回國基本上都是簽證到期了。他在國內只待一天,卻還是會托我家男神的朋友把他給我帶回國的巧克力從沈陽寄到北京到我家男神那裡,最後輾轉到我手裡。這個習慣一直到我告訴趙叔叔說我現在不愛吃巧克力了,愛吃驢肉火燒了,所以每天都吃。我家男神問我為什麼到現在還遇到人生比較重要的事情就給他發郵件,我只簡單說:關係好唄。在內心深處,其實是一種感恩。那段時間遇到許多事情,非常感謝他的陪伴和鼓勵。他跟我說的許多話,都決定了我之後很多大事上的人生選擇。當時覺得他像是天天的星星一樣散髮著智慧。後來發郵件的時候卻覺得簡直是沒法和正常人溝通嘛。我倆都是比正常同屆的同學小一些,都是有些不羈的性格,相似的太多,所以才堅信和理解他內心的善良和溫順。只是只會燉豆角的人做男朋友免談。我去我家男神家,中午滿滿的包括可樂雞翅,鍋包肉,拔絲地瓜,蔥段魚8道自製大菜,留我在客廳和朋友聊天。你就發現,這才是做我男朋友的料。

  今年七夕,是我第一天去我租的8平米小屋住。我家男神問我你確定不回來嗎,今天是七夕耶。爺爺的,除了在一起第一年給我買過一次一鐵盒子hello kitty的巧克力,再也沒給我過過七夕了,這時候想起來了【過分】【過分】。但是當我走在路上,完全沒有感覺孤獨和失落。因為男神想給我租個特別好的,我自己覺得一周根本住不了幾天沒有必要。然後租房子的時候,是我找了個地方和小鮮肉在游樂場玩,我家男神來回跑給我辦的各種手續。我總是在想做什麼事情的時候就去做,所以沒在做什麼事情的時候便是什麼也不想做。沒有愛沒有恨沒有遺憾的狀態。何況手機咣咣咣的響,我家男神一條接一條的消息。打開QQ,男神的對話框里“友誼的巨輪”標識非常扎眼。

  真正的友誼也好,真正的愛情也好。建立的基礎都是好的人品。願意為別人去付出,願意承擔,願意努力。太過自私的人看過再多的風景也總覺得沒什麼不同。他看不懂自己說完沒有誰離不開誰後轉身離去,身後那個人的生無可戀。也不會明白別人死去又活來之後的決絕。

  我認識一個美容行業的姑娘,人真心好,發自內心的好,情商高又上進,愛工作。她經常在朋友圈裡曬朋友帶的小點心,平時大家聚在一起吃的外賣,或者一個好天氣。都是很普通很普通的東西。乍一看會覺得這有什麼可曬的,但是仔細想想就能感覺到她這份感恩的心。這份感恩的心會點亮每一天的生活,看到金錢買不到的快樂。

  我自己覺得開心的事情不是我家買得起寶馬買得起路虎。而是我家明明買得起寶馬買得起路虎,我家男神卻願意周末騎著他的電動車,前面站著小鮮肉後面坐著打著傘的我,三個人一起去兜風,一直到電用完為止。然後請我家男神吃根冰棍,然後他開始人力蹬啊蹬啊,我們一邊給他喊加油一邊笑的前仰後合。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前面我們實現了使用PC端上位機串口發送圖像數據到VGA顯示,通過MATLAB處理的圖像數據直接是灰度圖像,後面我們在此基礎上修改,從而實現,基於FPGA的動態圖片的Sobel邊緣檢測、中值濾波、Canny運算元邊緣檢測、腐蝕和膨脹等。那麼這篇文章我們將來實現基於FPGA的Sobel邊緣檢測。 圖像邊緣 ...
  • 針對入門新手的普及,有過大型網站技術架構牛人路過,別耽誤浪費了時間,閱讀之前,請確保有一定的網路基礎,熟練使用Linux,瀏覽大概需要3 5分鐘的時間,結尾有彩蛋。 目錄 "分散式" "微服務" "負載均衡集群" "高可用集群" "彈性雲" "故障轉移" "總結" 分散式 小馬正在經營一個線上購物網 ...
  • 1.welcome dede 2.計算圓面積 ...
  • H2Engine伺服器引擎架構是輕量級的,與其說是引擎,個人覺得稱之為平臺更為合適。因為它封裝的功能非常精簡,但是提供了非常簡潔方便的擴展機制,使得可以用C++、python、lua、js、php來開發具體的伺服器功能。H2引擎的靈感來源於web伺服器Apache。 H2引擎集成了websocke... ...
  • 實踐環境: 操作系統:Windows 7(X64) Python版本:python-2.7.13.msi 使用插件:pygame-1.9.1.win32-py2.7.msi 軟體下載: 未完,待續... ...
  • 本文介紹的是我在機器學習方面的 實際經歷,想以此給大家提供些建議與思路,供各位參考。希望通過一些途徑,來提高機器學習的興趣:(1)參與打卡活動:45天機器學習實戰(2)加入專門的微信群(3)建立機器學習的Github項目倉庫 ...
  • 1 抽象類 1.1 抽象類概述 在java中,一個沒有方法體的方法應該定義成抽象方法,而類中如果有抽象方法,這個類必須定義為抽象類。 示例: 1.2 抽象類的特點 方法只有聲明沒有實現的時候,該方法就是抽象方法,需要被abstract修飾,抽象方法必須定義在抽象類中。 抽象類不可以被實例化。 抽象類 ...
  • JDBC是什麼: Java Database Connectivity:Java訪問資料庫的解決方案 JDBC是Java應用程式訪問資料庫的里程碑式解決方案。Java研發者希望用相同的方式訪問不同的資料庫,以實現與具體資料庫無關的Java操作界面。 JDBC定義了一套標準介面,即訪問資料庫的通用AP ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...