好雨云的微服務架構實踐
2016-03-04 15:25:13 來源: ITeye管理員 評論:0 點擊:
微服務從去年以來一直受到眾多開發者的熱捧,目前國外使用微服務架構的知名廠商中不乏Amazon、Twitter、Netflix等這樣的科技巨頭,但是國內在微服務領域實踐這塊,真正成功的案例屈指可數,好雨云平臺強調應用一鍵部署,整個平臺的核心正是基于微服務的架構去搭建,可以說,好雨云在微服務領域有著成功的經驗和技術。 那么好雨云究竟是一個怎樣的平臺呢,據
微服務從去年以來一直受到眾多開發者的熱捧,目前國外使用微服務架構的知名廠商中不乏Amazon、Twitter、Netflix等這樣的科技巨頭,但是國內在微服務領域實踐這塊,真正成功的案例屈指可數,好雨云平臺強調應用一鍵部署,整個平臺的核心正是基于微服務的架構去搭建,可以說,好雨云在微服務領域有著成功的經驗和技術。
那么好雨云究竟是一個怎樣的平臺呢,據該平臺創始人劉凡介紹,好雨云平臺是提供一站式,開發、部署、運行和伸縮任何類型應用的云平臺,強調應用的一鍵部署,同時,好雨云平臺還提供數據服務、開發工具和企業信息服務,為產品和企業發展提供全方位支持。 目前和好雨云平臺類似的國外有Heroku和IBM BlueMix。
對于有著超過12年互聯網產品開發和管理經驗劉凡來說,選擇PaaS領域創業并非偶然,在澳客網的時候,他發現企業在產品開發的過程中,浪費了大量的時間在申請服務器、安裝各種依賴服務、配置開發環境、寫構建腳本等上面,當時就思考如果能把每個團隊重復做的事情和有難度的技術問題,做成一個可重用的輪子,產品團隊只要專注于產品本身,那產品的開發效率將大大提升,試錯成本也將更低,于是,他和幾位有類似想法的小伙伴離開了澳客網,創辦了好雨云。
本文來自于對好雨云創始人劉凡的專訪,他給我們詳細介紹了微服務在好雨云的實踐。
微服務架構成功的因素
微服務的眾多優勢讓其成為當前受到眾多廠商和開發者的熱捧, 據劉凡介紹,好雨云平臺在打造之初并沒有為了實施微服務而實施微服務,其實,微服務本質上是好雨云平臺的一個非常核心的功能,簡而言之,用戶只要在他們平臺上部署服務,它本身就是個微服務,實際上好雨云整個平臺的核心就是基于微服務的架構去搭建的,所以用戶不管部署的是程序還是部署傳統服務,或者一個其他的第三方應用程序,在這中間都可以按照微服務的方式進行。
另外,劉凡表示當前對于微服務來說,最大的一個挑戰就是當服務特別多的時候,對于大量服務的管理仍然是一個不小的挑戰,而好雨云從整個服務的部署、伸縮、高可用、容錯、監控以及服務之間一個依賴關系都給出了自己的解決方案。
值得一提的是,目前國外很多的互聯網巨頭包括Google、Netflix、Facebook、Twiter等在微服務實施領域都取得了成功,給國內想要進行微服務實施的企業提供了有益的借鑒。在劉凡看來,微服務要實施成功關鍵在于以下幾個方面:
第一,這些巨頭根據自己的業務特性,研發適合自己的微服務框架。
第二,在經過長期的實踐,對業務重新建模,合理的將業務拆解成微服務。
第三,當微服務的數量增多,為保證服務可用性,需要有可靠的容錯機制。
第四,依賴公有云或自建云服務,滿足互聯網模式下的快速業務伸縮。
微服務的本質是管理
談及國內的微服務情況,劉凡認為當前國內的微服務實踐大多數都還是個概念,實際上很多企業的業務還是一體化架構,在從一體化架構向微服務轉變過程中,國內企業首先需要做的事情就是對業務進行拆解,合理的模塊化業務;其次,需要優化整個服務管理。針對上述兩個問題,他指出,對于希望實施微服務架構的企業來說,首先還是要從梳理自己的業務架構開始,逐步的把一體化架構拆解成微服務化架構;不能為了實施微服務架構而實施微服務架構,需要清晰的認識SOA架構跟微服務架構的差異,真正的有效的去實施微服務架構;最后,要擅于利用工具為實施微服務提供支持,如果可以有效的利用工具,對于提升整個公司微服務的實施效率有很大幫助。
雖然微服務具備很多的優勢,但是由于微服務本身的特性,實施起來的的難度非常大,那么對于國內企業來說真正愿意實施微服務的意愿有多大,劉凡表示,在當前企業架構里面,服務的部署、伸縮、高可用、容錯、監控等,本質上,是對現有服務的管理。如果不談微服務架構,如果只是有微服務架構管理工具支持,照樣能極大提升運維和開發效率,這屬于低層次的價值;而對于高層次來說,微服務架構能解決CTO的管理問題,合理的微服務抽象和拆分對應合理的組織結構劃分, 每個服務就變成一個獨立的小產品,運營這個產品就是組織主要目標,產品的價值決定組織的價值,產品用戶的多少決定組織價值的高低,這種市場化的管理方法是最簡單有效的管理方法。 另外,微服務架構能幫助技術團隊快速開發和迭代產品,對創造一個成功產品有很大幫助。
微服務在好雨云的解決方案

好雨云平臺的底層是通過Docker實現的,只是用戶感受不到Docker。通過這種內部封裝,用戶不用管理計算資源和網絡資源,把復雜技術包裝在內部。通過服務整體對外。

只要提供代碼就能一鍵部署在各種環境。
開發語言支持Java、Python、PHP、Ruby、Golang,Node.JS等,代碼倉庫支持Github,好雨托管倉庫。

垂直伸縮只需要設置資源的大小,水平伸縮只需要設置節點的個數。

通過高可用調度器,所有服務都具備了高可用特性。

類似Spring的依賴注入,要調整服務的依賴關系只需要界面點擊久能輕松完成。

類似保險絲,當服務B變慢,達到斷路器的閥值,服務B將自動下線,不至于影響其他服務,當延遲變小,服務逐步恢復。

業務指標:平均響應時間,吞吐率 ,在線人數。在實際場景中,使用業務監控可以替代技術監控,而且更加簡單容易理解。
Docker的出現將簡化微服務的管理
對于當前Docker的火熱,劉凡表示,Docker的出現第一讓部署更加快捷,第二,統一打包方式之后,對于整個微服務的管理更加簡化。
好雨云平臺的產品是基于Docker之上,當在好雨云的產品中,用戶使用不需要學習docker,也感受不到容器的存在,他們對Docker做了包裝,所有的特性都是面向應用的,而不是面向容器的,面向應用的方式,用戶在簡單友好的體驗下就能管理,用戶在部署應用的過程中是感受不到Docker的,從另一個角度簡化了Docker的使用。
從之前的敏捷開發到現在的PaaS平臺創業,作為技術出身的劉凡認為最大的挑戰還是對于B端產品設計的把握,因為過去C端用戶的產品打造經驗對于當前的B端產品設計來說可能不一定適用,而對于這樣一個有著十多年產品打造經驗的劉凡來說,并沒有刻意回避,相反,在他的帶領下,專注應用一鍵部署的好雨云平臺正在PaaS領域開創中國的Heroku。
好雨云微服務實踐
微服務架構是好雨云基礎組件,好雨云的很多功能都跑在它上,好雨微服務架構的第一個用戶就是好雨云自身,在這個過程中我們也體會到微服務架構給我們帶來的便捷。
好雨云的微服務包括:
控制臺服務 —— python 實現
實時消息服務 —— java 實現
計費服務 —— python實現
統計服務 —— java實現
日志服務 —— c 實現
redis服務 —— dockerfile 構建
mysql服務 —— dockerfile構建
我們技術團隊每個人擅長的開發語言不同,在微服務中也有體現,喜歡python的開發者用python開發微服務,喜歡java的開發者用java開發,適合用c的微服務用c開發,開源的服務直接用dockerfile構建。新來的開發人員不需要學習就可以開始開發。
好雨云微服務的開發過程全部在云平臺上進行,本地沒有設置開發和測試環境,我們為每一個微服務建立兩個應用,一套是開發測試應用,另一套是生產應用,開發測試應用關聯開發代碼分支,依賴測試數據服務,生產應用關聯代碼主干,依賴生產數據服務,開發人員日常開發調試在開發測試應用進行,代碼提交開發分支,點擊部署,馬上就能看見應用的效果,測試通過的應用,將代碼合并到主干,點擊生產應用的部署,完成上線過程,如果代碼有重大bug,點擊日志中的“代碼回滾”就能迅速回滾到上一個代碼版本。除此之外服務高可用、服務伸縮、服務容錯這些需求都交給好雨微服務架構組件去解決,通過這樣的方法我們一天最多上線50多個版本,而過程中用戶的服務沒有異常中斷。
控制臺服務是用戶使用量比較大的服務,為了優化性能,我們重度依賴應用實時性能分析,它可以分析出對性能影響最大的SQL和URL,優化完SQL和對應的程序,上線后立馬就能看見效果。并根據效果繼續優化。對服務的伸縮,我們依賴于實時業務監控,通過監測總體響應時間和吞吐率決定服務是擴容還是縮容。
通過好雨微服務架構來開發好雨云的特性, 我們踐行了“吃自己的狗糧”,并持續優化著好雨微服務架構,做為第一個微服務架構的用戶我們也從中受益,我們在環境問題、系統管理、性能優化、服務伸縮和代碼發布上線上幾乎沒有浪費時間,讓我們更加專注產品本身,快速迭代。
那么好雨云究竟是一個怎樣的平臺呢,據該平臺創始人劉凡介紹,好雨云平臺是提供一站式,開發、部署、運行和伸縮任何類型應用的云平臺,強調應用的一鍵部署,同時,好雨云平臺還提供數據服務、開發工具和企業信息服務,為產品和企業發展提供全方位支持。 目前和好雨云平臺類似的國外有Heroku和IBM BlueMix。
對于有著超過12年互聯網產品開發和管理經驗劉凡來說,選擇PaaS領域創業并非偶然,在澳客網的時候,他發現企業在產品開發的過程中,浪費了大量的時間在申請服務器、安裝各種依賴服務、配置開發環境、寫構建腳本等上面,當時就思考如果能把每個團隊重復做的事情和有難度的技術問題,做成一個可重用的輪子,產品團隊只要專注于產品本身,那產品的開發效率將大大提升,試錯成本也將更低,于是,他和幾位有類似想法的小伙伴離開了澳客網,創辦了好雨云。
本文來自于對好雨云創始人劉凡的專訪,他給我們詳細介紹了微服務在好雨云的實踐。
微服務架構成功的因素
微服務的眾多優勢讓其成為當前受到眾多廠商和開發者的熱捧, 據劉凡介紹,好雨云平臺在打造之初并沒有為了實施微服務而實施微服務,其實,微服務本質上是好雨云平臺的一個非常核心的功能,簡而言之,用戶只要在他們平臺上部署服務,它本身就是個微服務,實際上好雨云整個平臺的核心就是基于微服務的架構去搭建的,所以用戶不管部署的是程序還是部署傳統服務,或者一個其他的第三方應用程序,在這中間都可以按照微服務的方式進行。
另外,劉凡表示當前對于微服務來說,最大的一個挑戰就是當服務特別多的時候,對于大量服務的管理仍然是一個不小的挑戰,而好雨云從整個服務的部署、伸縮、高可用、容錯、監控以及服務之間一個依賴關系都給出了自己的解決方案。
值得一提的是,目前國外很多的互聯網巨頭包括Google、Netflix、Facebook、Twiter等在微服務實施領域都取得了成功,給國內想要進行微服務實施的企業提供了有益的借鑒。在劉凡看來,微服務要實施成功關鍵在于以下幾個方面:
第一,這些巨頭根據自己的業務特性,研發適合自己的微服務框架。
第二,在經過長期的實踐,對業務重新建模,合理的將業務拆解成微服務。
第三,當微服務的數量增多,為保證服務可用性,需要有可靠的容錯機制。
第四,依賴公有云或自建云服務,滿足互聯網模式下的快速業務伸縮。
微服務的本質是管理
談及國內的微服務情況,劉凡認為當前國內的微服務實踐大多數都還是個概念,實際上很多企業的業務還是一體化架構,在從一體化架構向微服務轉變過程中,國內企業首先需要做的事情就是對業務進行拆解,合理的模塊化業務;其次,需要優化整個服務管理。針對上述兩個問題,他指出,對于希望實施微服務架構的企業來說,首先還是要從梳理自己的業務架構開始,逐步的把一體化架構拆解成微服務化架構;不能為了實施微服務架構而實施微服務架構,需要清晰的認識SOA架構跟微服務架構的差異,真正的有效的去實施微服務架構;最后,要擅于利用工具為實施微服務提供支持,如果可以有效的利用工具,對于提升整個公司微服務的實施效率有很大幫助。
雖然微服務具備很多的優勢,但是由于微服務本身的特性,實施起來的的難度非常大,那么對于國內企業來說真正愿意實施微服務的意愿有多大,劉凡表示,在當前企業架構里面,服務的部署、伸縮、高可用、容錯、監控等,本質上,是對現有服務的管理。如果不談微服務架構,如果只是有微服務架構管理工具支持,照樣能極大提升運維和開發效率,這屬于低層次的價值;而對于高層次來說,微服務架構能解決CTO的管理問題,合理的微服務抽象和拆分對應合理的組織結構劃分, 每個服務就變成一個獨立的小產品,運營這個產品就是組織主要目標,產品的價值決定組織的價值,產品用戶的多少決定組織價值的高低,這種市場化的管理方法是最簡單有效的管理方法。 另外,微服務架構能幫助技術團隊快速開發和迭代產品,對創造一個成功產品有很大幫助。
微服務在好雨云的解決方案

好雨云平臺的底層是通過Docker實現的,只是用戶感受不到Docker。通過這種內部封裝,用戶不用管理計算資源和網絡資源,把復雜技術包裝在內部。通過服務整體對外。

只要提供代碼就能一鍵部署在各種環境。
開發語言支持Java、Python、PHP、Ruby、Golang,Node.JS等,代碼倉庫支持Github,好雨托管倉庫。

垂直伸縮只需要設置資源的大小,水平伸縮只需要設置節點的個數。

通過高可用調度器,所有服務都具備了高可用特性。

類似Spring的依賴注入,要調整服務的依賴關系只需要界面點擊久能輕松完成。

類似保險絲,當服務B變慢,達到斷路器的閥值,服務B將自動下線,不至于影響其他服務,當延遲變小,服務逐步恢復。

業務指標:平均響應時間,吞吐率 ,在線人數。在實際場景中,使用業務監控可以替代技術監控,而且更加簡單容易理解。
Docker的出現將簡化微服務的管理
對于當前Docker的火熱,劉凡表示,Docker的出現第一讓部署更加快捷,第二,統一打包方式之后,對于整個微服務的管理更加簡化。
好雨云平臺的產品是基于Docker之上,當在好雨云的產品中,用戶使用不需要學習docker,也感受不到容器的存在,他們對Docker做了包裝,所有的特性都是面向應用的,而不是面向容器的,面向應用的方式,用戶在簡單友好的體驗下就能管理,用戶在部署應用的過程中是感受不到Docker的,從另一個角度簡化了Docker的使用。
從之前的敏捷開發到現在的PaaS平臺創業,作為技術出身的劉凡認為最大的挑戰還是對于B端產品設計的把握,因為過去C端用戶的產品打造經驗對于當前的B端產品設計來說可能不一定適用,而對于這樣一個有著十多年產品打造經驗的劉凡來說,并沒有刻意回避,相反,在他的帶領下,專注應用一鍵部署的好雨云平臺正在PaaS領域開創中國的Heroku。
好雨云微服務實踐
微服務架構是好雨云基礎組件,好雨云的很多功能都跑在它上,好雨微服務架構的第一個用戶就是好雨云自身,在這個過程中我們也體會到微服務架構給我們帶來的便捷。
好雨云的微服務包括:
控制臺服務 —— python 實現
實時消息服務 —— java 實現
計費服務 —— python實現
統計服務 —— java實現
日志服務 —— c 實現
redis服務 —— dockerfile 構建
mysql服務 —— dockerfile構建
我們技術團隊每個人擅長的開發語言不同,在微服務中也有體現,喜歡python的開發者用python開發微服務,喜歡java的開發者用java開發,適合用c的微服務用c開發,開源的服務直接用dockerfile構建。新來的開發人員不需要學習就可以開始開發。
好雨云微服務的開發過程全部在云平臺上進行,本地沒有設置開發和測試環境,我們為每一個微服務建立兩個應用,一套是開發測試應用,另一套是生產應用,開發測試應用關聯開發代碼分支,依賴測試數據服務,生產應用關聯代碼主干,依賴生產數據服務,開發人員日常開發調試在開發測試應用進行,代碼提交開發分支,點擊部署,馬上就能看見應用的效果,測試通過的應用,將代碼合并到主干,點擊生產應用的部署,完成上線過程,如果代碼有重大bug,點擊日志中的“代碼回滾”就能迅速回滾到上一個代碼版本。除此之外服務高可用、服務伸縮、服務容錯這些需求都交給好雨微服務架構組件去解決,通過這樣的方法我們一天最多上線50多個版本,而過程中用戶的服務沒有異常中斷。
控制臺服務是用戶使用量比較大的服務,為了優化性能,我們重度依賴應用實時性能分析,它可以分析出對性能影響最大的SQL和URL,優化完SQL和對應的程序,上線后立馬就能看見效果。并根據效果繼續優化。對服務的伸縮,我們依賴于實時業務監控,通過監測總體響應時間和吞吐率決定服務是擴容還是縮容。
通過好雨微服務架構來開發好雨云的特性, 我們踐行了“吃自己的狗糧”,并持續優化著好雨微服務架構,做為第一個微服務架構的用戶我們也從中受益,我們在環境問題、系統管理、性能優化、服務伸縮和代碼發布上線上幾乎沒有浪費時間,讓我們更加專注產品本身,快速迭代。
相關熱詞搜索:微服務 互聯網 架構 architecture 企業架構
上一篇:DB-Engines 2016年3月數據庫排名:Redis成功超越SQLite
下一篇:變不可能為可能,Tachyon幫助Spark變小時級任務到秒
分享到:
收藏
