zookeeper算法
1. 分佈式協調服務:咱們的程序運行在不一樣的機器上,這些機器可能位於同一個機架,同一個機房又或不一樣的數據中心。在這樣的環境中,咱們要實現協調該怎麼辦?那麼這就是分佈式協調服務要乾的事情。緩存
2. Zookeeper能夠幹什麼:配置管理,名字服務,分佈式鎖,集羣管理服務器
3. Zookeeper的配置:clientPort,dataDir,dataLogDir,tickTime,maxClientCnxns ,minSessionTimeout, maxSessionTimeout,autopurge.snapRetainCount,autopurge.purgeInterval()app
配置-myid:在dataDir裏會放置一個myid文件,裏面就一個數字,用來惟一標識這個服務。這個id是很重要的,必定要保證整個集羣中惟一。負載均衡
zookeeper會根據這個id來取出server.x上的配置。好比當前id爲1,則對應着zoo.cfg裏的server.1的配置。框架
下面是集羣中服務的列表分佈式
server.1=127.0.0.1:20881:30881ide
server.2=127.0.0.1:20882:30882性能
server.3=127.0.0.1:20883:30883測試
在上面的例子中,我把三個zookeeper服務放到同一臺機器上。上面的配置中有兩個TCP port。後面一個是用於Zookeeper選舉用的,而前一個是
Leader和Follower或Observer交換數據使用的。咱們還注意到server.後面的數字。這個就是myid(關於myid是什麼下一節會介紹)。
4. Zookeeper leader選舉:
5. Zookeeper client:create,delete(須要version,樂觀鎖),exists,setData/getData,getChildren ,sync zookeeper
Dubbo
1. Dubbo是什麼
Dubbo是一個分佈式服務框架,致力於提供高性能和透明化的RPC遠程服務調用方案,以及SOA服務治理方案。簡單的說,dubbo就是個服務框架,若是沒有分佈式的需求,實際上是不須要用的,只有在分佈式的時候,
纔有dubbo這樣的分佈式服務框架的需求,而且本質上是個服務調用的東東,說白了就是個遠程服務調用的分佈式框架
其核心部分包含:
1).遠程通信: 提供對多種基於長鏈接的NIO框架抽象封裝,包括多種線程模型,序列化,以及「請求-響應」模式的信息交換方式。
2).集羣容錯: 提供基於接口方法的透明遠程過程調用,包括多協議支持,以及軟負載均衡,失敗容錯,地址路由,動態配置等集羣支持。
3).自動發現: 基於註冊中心目錄服務,使服務消費方能動態的查找服務提供方,使地址透明,使服務提供方能夠平滑增長或減小機器。
2. Dubbo能作什麼?
1).透明化的遠程方法調用,就像調用本地方法同樣調用遠程方法,只需簡單配置,沒有任何API侵入。
2).軟負載均衡及容錯機制,可在內網替代F5等硬件負載均衡器,下降成本,減小單點。
3).服務自動註冊與發現,再也不須要寫死服務提供方地址,註冊中心基於接口名查詢服務提供者的IP地址,而且可以平滑添加或刪除服務提供者。
3. Dubbo採用全Spring配置方式,透明化接入應用,對應用沒有任何API侵入,只需用Spring加載Dubbo的配置便可,Dubbo基於Spring的Schema擴展進行加載。
4. 調用關係說明:
1).服務容器負責啓動,加載,運行服務提供者。
2).服務提供者在啓動時,向註冊中心註冊本身提供的服務。
3).服務消費者在啓動時,向註冊中心訂閱本身所需的服務。
4).註冊中心返回服務提供者地址列表給消費者,若是有變動,註冊中心將基於長鏈接推送變動數據給消費者。
5).服務消費者,從提供者地址列表中,基於軟負載均衡算法,選一臺提供者進行調用,若是調用失敗,再選另外一臺調用。
6).服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心。
5. 連通性,健狀性,伸縮性,升級性
6. dubbo基本配置:
<dubbo:service/> 服務配置,用於暴露一個服務,定義服務的元信息,一個服務能夠用多個協議暴露,一個服務也能夠註冊到多個註冊中心。
eg、<dubbo:service ref="demoService" interface="com.unj.dubbotest.provider.DemoService" />
<dubbo:reference/> 引用服務配置,用於建立一個遠程服務代理,一個引用能夠指向多個註冊中心。
eg、<dubbo:reference id="demoService" interface="com.unj.dubbotest.provider.DemoService" />
<dubbo:protocol/> 協議配置,用於配置提供服務的協議信息,協議由提供方指定,消費方被動接受。
eg、<dubbo:protocol name="dubbo" port="20880" />
<dubbo:application/> 應用配置,用於配置當前應用信息,無論該應用是提供者仍是消費者。
eg、<dubbo:application name="xixi_provider" />
<dubbo:application name="hehe_consumer" />
<dubbo:module/> 模塊配置,用於配置當前模塊信息,可選。
<dubbo:registry/> 註冊中心配置,用於配置鏈接註冊中心相關信息。
eg、<dubbo:registry address="zookeeper://192.168.2.249:2181" />
<dubbo:monitor/> 監控中心配置,用於配置鏈接監控中心相關信息,可選。
<dubbo:provider/> 提供方的缺省值,當ProtocolConfig和ServiceConfig某屬性沒有配置時,採用此缺省值,可選。
<dubbo:consumer/> 消費方缺省配置,當ReferenceConfig某屬性沒有配置時,採用此缺省值,可選。
<dubbo:method/> 方法配置,用於ServiceConfig和ReferenceConfig指定方法級的配置信息。
<dubbo:argument/> 用於指定方法參數配置。
7. 服務調用超時設置,啓動時檢查 ,訂閱,回聲測試(測試服務是否可用),延遲鏈接,令牌驗證,日誌適配,配置Dubbo緩存文件
8. 配置文件: dubbo.properties
dubbo.registry.address=zookeeper://127.0.0.1:2181 dubbo.admin.root.password=admin dubbo.admin.guest.password=guest
登錄:輸入用戶名:admin,密碼:admin,結果打死都登錄不上。
這個時候,請仔細看配置文件,文件配置的意思是:
用戶名:root,密碼:admin
root.password=admin
用戶名:guest,密碼:guest
guest.password=admin
轉自:http://blog.csdn.net/tengdazhang770960436/article/details/51781480
dubbo admin
1. dubbo admin 能夠手動刷新。默認狀況下,關閉某個接口,admin上通常會正常消失。
2. 接口的狀態分爲:正常,沒有消費者,沒有提供者。以此能夠看看註冊中心有沒有對應的消費(提供)者。
3. 服務治理中的服務,對應全部註冊中心的服務
服務治理中的應用,應用的名稱對應dubbo:application中的name
服務治理中的機器,對應註冊中心對應機器
服務治理中的提供者,對應註冊中心提供服務的接口
服務治理中的消費者,對應註冊中心須要消費的接口
服務治理中的路由規則,彷佛能夠操做更細的規則(白名單?試着操做,沒法保存規則)
服務治理中的動態配置,未知
服務治理中的訪問控制,能夠設置黑名單,禁用某些服務器調用指定接口
服務治理中的權重調節,未知
服務治理中的負載均衡,未知
服務治理中的負責人,未知
4. 能夠搜索服務名,應用名,機器IP。注意,須要選擇對應標籤。