分布式系統服務器上下線方法及服務器的制造方法
【技術領域】
[0001]本申請涉及計算機網絡技術領域,尤其涉及一種分布式系統服務器上下線方法及服務器。
【背景技術】
[0002]隨著電子商務網站(例如,淘寶網等)的用戶數量和網站流量的不斷增長,應用系統的數量和復雜程度也急劇增加。諸多前臺系統都需要使用一些公共的業務邏輯,這些業務邏輯通常具有一些共性,比如,獲取用戶信息或查詢寶貝詳情等。如果將這些業務邏輯在各個系統內部都實現一遍,則大大增加了開發成本和后期維護成本,按照業務領域模型進行垂直拆分實現SOA架構是勢在必行。面向服務的架構(Service Oriented Architecture,S0A)是一個組件模型,它將應用程序的不同功能單元(稱為服務)通過這些服務之間定義良好的接口和契約聯系起來。接口是采用中立的方式進行定義的,它獨立于實現服務的硬件平臺、操作系統和編程語言。這使得構建在各種各樣的系統中的服務可以使用一種統一和通用的方式進行交互。面向服務架構可以根據需求通過網絡對松散耦合的粗粒度應用組件進行分布式部署、組合和使用。
[0003]遠程調用框架(High Speed Framework, HSF)是淘寶網的分布式服務框架,是淘網寶服務化架構中的基礎組件,是基于傳輸控制協議(Transmiss1n Control Protocol,TCP)長連接的遠程調用框架,可以幫助各個應用系統將那些相似的業務邏輯抽離出來,并單獨部署。前臺系統在需要調用這些業務邏輯時,只需要通過服務框架遠程調用即可,大大節約了前端系統的開發成本,也提高了系統的可維護性和可擴展性。
[0004]隨著分布式服務框架規模的日益龐大,各個應用系統之間的依賴關系錯綜復雜,在分布式服務框架中牽一發動全身,容易出現因為某個應用系統提供的服務下線而導致客戶端調用失敗的現象,造成短時間內的數據有較大波動,影響分布式系統的穩定性。例如,在現有的分布式服務框架中,當遇到某個應用系統(例如,淘寶的某個交易核心系統)重啟時,關閉階段會導致周邊應用系統大量調用失敗,以至于交易有明顯的波動。因為應用系統的服務端還有許多在處理而沒有返回響應到客戶端;另外有一部分請求在網絡發送途中或者客戶端準備發送中,這些調用中的請求基本都會失敗。在應用系統的服務器在啟動階段,服務還沒有完全初始化成功就緒,就有請求進來了,這時候的處理結果就是失敗。最終,應用系統的服務器重啟或上線就會出現調用失敗的問題,對用戶造成影響,導致分布式系統的穩定性差。
【發明內容】
[0005]本申請的目的是,提供一種分布式系統服務器上下線方法及服務器,可以有效避免在應用程序的服務器上下線時,服務器的客戶端出現調用失敗的問題,從而使分布式系統具有較好的穩定性。
[0006]本申請提供了一種分布式系統服務器下線方法,所述方法包括:
[0007]應用程序的服務器接收到所述應用程序的控制端發送的下線指令時,所述服務器運行下線的運維腳本;
[0008]所述服務器向分布式系統的配置中心發送第一通知消息,所述第一通知消息用于通知所述配置中心將所述服務器的地址信息從地址服務簿上刪除,其中,所述地址服務簿用于存儲和維護所述分布式系統中所有的可用服務器的地址信息;
[0009]所述服務器向正在調用所述服務器的客戶端發送第二通知消息,所述第二通知消息用于通知所述客戶端停止發送請求;
[0010]經過預設的第一時間后,所述服務器終止所述服務器的進程,以使所述服務器下線。
[0011]又一方面,本申請還提供了一種分布式系統服務器上線方法,所述方法包括:
[0012]應用程序的服務器上線時進行服務器初始化,判斷是否初始化成功,如果是,則所述服務器將其地址信息注冊到分布式系統配置中心的地址服務簿,提供所述應用程序相應的服務。
[0013]又一方面,本申請還提供了一種分布式系統服務器,所述服務器包括:
[0014]接收單元,用于接收應用程序的控制端發送的下線指令;
[0015]第一處理單元,用于當所述接收單元接收到所述下線指令時,運行下線的運維腳本;
[0016]第一發送單元,用于在所述第一處理單元運行所述下線的運維腳本之后,向分布式系統的配置中心發送第一通知消息,所述第一通知消息用于通知所述配置中心將所述服務器的地址信息從地址服務簿上刪除,其中,所述地址服務簿用于存儲和維護所述分布式系統中所有的可用服務器的地址信息;
[0017]第二發送單元,用于在所述第一處理單元運行所述下線的運維腳本之后,向正在調用所述服務器的客戶端發送第二通知消息,所述第二通知消息用于通知所述客戶端停止發送請求;
[0018]第二處理單元,用于在所述第一發送單元和第二發送單元發送完對應的通知消息之后,經過預設的第一時間后,終止所述服務器的進程,以使所述服務器下線。
[0019]又一方面,本申請還提供了一種分布式系統服務器,所述服務器包括:初始化單元、判斷單元和注冊單元;
[0020]所述初始化單元,用于當所述服務器上線時,進行初始化;
[0021]所述判斷單元,用于判斷所述初始化單元是否初始化成功,如果是,則進入注冊單元;
[0022]所述注冊單元,用于將所述服務器的地址信息注冊到分布式系統配置中心的地址服務簿,提供所述應用程序相應的服務。
[0023]本申請實施例提供的分布式系統服務器上下線方法及服務器,可以有效避免在應用程序的服務器上下線時,服務器的客戶端出現調用失敗的問題,從而使分布式系統具有較好的穩定性,保證客戶端調用的成功率,避免調用失敗帶來的負面影響。
【附圖說明】
[0024]為了更清楚地說明本申請實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
[0025]圖1為本申請實施例提供的一種分布式服務框架的示意圖;
[0026]圖2為本申請實施例一提供的一種分布式系統服務器下線方法流程圖;
[0027]圖3為本申請實施例二提供的一種分布式系統服務器下線方法的具體處理流程圖;
[0028]圖4為本申請實施例三提供的一種分布式系統服務器上線方法流程圖;
[0029]圖5為本申請實施例四提供的一種分布式系統服務器的結構示意圖;
[0030]圖6為本申請實施例五提供的一種分布式系統服務器的結構示意圖;
[0031]圖7為本申請實施例五提供的一種分布式系統服務器的結構示意圖。
【具體實施方式】
[0032]為使得本申請的發明目的、特征、優點能夠更加的明顯和易懂,下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而非全部實施例。基于本申請中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
[0033]本申請實施例提供的分布式系統服務器上下線方法及裝置,適用于面向服務的架構SOA的分布式系統、基于遠程調用的服務框架HSF的分布式系統等等。在本申請實施例中以HSF服務框架為例進行說明,但并不以此作為限制。
[0034]HSF服務框架從分布式應用層面以及統一的發布/調用方式層面為業務系統提供支持,從而可以很容易地開發分布式應用并提供和使用公用功能模塊,而不用考慮分布式領域中的各種細節技術,例如,遠程通訊、性能損耗、調用的透明化、同步/異步調用方式的實現等問題。
[0035]在一個HSF服務框架中,集成了大量的應用系統,每一個應用系統對應的應用程序在大量的服務器上運行,即對應了大量的應用系統服務器(或者服務),每個服務器上可以提供至少一種應用系統的服務。這里的服務器是虛擬的服務器,以軟件的形式存在于網絡資源中,能提供或支持特定功能的服務或操作。
[0036]以淘寶網的HSF服務框架為例,應用系統可以包括前端應用系統和后端服務系統,前端應用系統,例如搜索系統、商品詳情系統、商鋪系統等等,對應于搜索系統服務器、商品詳情服務器、商品系統服務器等等;后端服務系統包括商品中心、用戶中心、交易中心等等,對應于商品中心服務器、用戶中心服務器、交易中心服務器等等。HSF是基于配置中心(Configserver)來管理和發現服務地址信息,在HSF架構中,所有應用系統服務器都需要在系統的配置中心的地址服務簿上注冊,統一管理服務器的地址信息,以便需要使用該些服務的客戶端通過地址服務簿調用所需要的服務器。其中,地址服務簿由地址服務器(ConfigServer)管理和維護。
[0037]客戶端發起遠程調用時,從分布式系統的配置中心的地址服務簿上,獲得所需要的服務的服務器的地址信