国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Web Api 基于Zookeeper的服務(wù)注冊與發(fā)現(xiàn)

Jiavan / 1061人閱讀

摘要:差異基于的服務(wù)提供和消費基于的服務(wù)注冊和發(fā)現(xiàn)的負(fù)載均衡是可以調(diào)控,只是能調(diào)權(quán)重,其他需要可控的都需要自己寫插件但是的吞吐量比大很多,可以根據(jù)業(yè)務(wù)選擇用哪種方式。

差異

基于Nginx的服務(wù)提供和消費

 
 

基于zookeeper的服務(wù)注冊和發(fā)現(xiàn)

  

zk的負(fù)載均衡是可以調(diào)控,nginx只是能調(diào)權(quán)重,其他需要可控的都需要自己寫插件;但是nginx的吞吐量比zk大很多,可以根據(jù)業(yè)務(wù)選擇用哪種方式。

服務(wù)端注冊

1.創(chuàng)建WEB API 程序,使用NuGet下載ZookeeperNet安裝包

    

    

?

2.WEB API 我只提供了一個測試方法

public class DataIndexController : ApiController
    {
        [HttpGet]
        public List GetList()
        {
            List result = new List();
            result.Add("111");
            result.Add("222");
            return result;
        }
    }

3.WEB API?Global文件中注冊服務(wù)地址到Zookeeper

public class WebApiApplication : System.Web.HttpApplication
    {
       
        protected void Application_Start()
        {
            GlobalConfiguration.Configure(WebApiConfig.Register);
            GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();
            CreateZkNode();
        }
        /// 
        /// 注冊服務(wù)節(jié)點
        /// 
        private void CreateZkNode()
        {
            ZkHelper zk = new ZkHelper();
 
            string node = AppSettingsHelper.GetStringValue("ServiceNode");
            ///創(chuàng)建節(jié)點
            zk.CreateNode(node, "data");
        }
    }

    

ZkHelper核心代碼如下

連接ZooKeeper并創(chuàng)建監(jiān)聽

zk = new ZooKeeper(ZkConnectString, new TimeSpan(0, 0, 0, CONST_TIMEOUT), new Watcher());

創(chuàng)建Zookeeper臨時節(jié)點和永久節(jié)點

if (index == lt.Count - 1)
                {
                    ///葉節(jié)點設(shè)置臨時節(jié)點
                    zk.Create(path, "".GetBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.Ephemeral);
                }
                else
                {
                    ///父節(jié)點設(shè)置永久節(jié)點
                    zk.Create(path, "".GetBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.Persistent);
                }

創(chuàng)建Zookeeper監(jiān)聽類

public class Watcher : IWatcher
    {
        public void Process(WatchedEvent @event)
        {
            if (@event.Type == EventType.NodeDataChanged)
            {
                Console.WriteLine(@event.Path);
            }
            if (@event.Type == EventType.NodeChildrenChanged)
            {
                Console.WriteLine(@event.Path);
            }
        }
    }

監(jiān)聽分 數(shù)據(jù)變化和節(jié)點變化

?

4.將web api部署三套

5.利用ZooInspector工具查看Zookeeper節(jié)點信息

此時服務(wù)地址已經(jīng)注冊上去了

如果我們將IIS應(yīng)用程序池停止或者網(wǎng)站停止,響應(yīng)的臨時節(jié)點也會刪掉

具體數(shù)據(jù)一致性可以參考https://www.cnblogs.com/leesf...

客戶端服務(wù)發(fā)現(xiàn)
  static void Main(string[] args)
        {
            string result = string.Empty;
            string strService = ZKService.Instanc.GetNode(ZKService.zkNode);
            if (!string.IsNullOrEmpty(strService))
            {
                result = WebHelper.Get(string.Format("http://{0}//api/dataindex/getlist", strService));
            }
            System.Console.WriteLine(result);
            System.Console.Read();
        }
 
    

加群895244712,免費獲取架構(gòu)師進(jìn)階學(xué)習(xí)資料

ZkHelper核心代碼

public string GetNode(string path)
      {
          string result = string.Empty;
          try
          {
              var stat = zk.Exists(path, true);
              if (stat != null)
              {
                  //取得/root節(jié)點下的子節(jié)點名稱,返回List 
                  var childData = zk.GetChildren(path, true).OrderBy(l => l).ToList();
 
                  if (childData.Count > 0)
                  {
                      Random random = new Random();
                      int index = random.Next(0, childData.Count);
                      result = childData[index];
                  }
              }
          }
          catch (Exception e)
          {
              throw e;
          }
 
          return result;
      }

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/72251.html

相關(guān)文章

  • PowerDotNet平臺化軟件架構(gòu)設(shè)計實現(xiàn)系列(04):服務(wù)治理平臺

    摘要:的服務(wù)治理平臺發(fā)源于早期的個人項目。客戶端發(fā)現(xiàn)模式要求客戶端負(fù)責(zé)查詢注冊中心,獲取服務(wù)提供者的列表信息,使用負(fù)載均衡算法選擇一個合適的服務(wù)提供者,發(fā)起接口調(diào)用請求。系統(tǒng)和系統(tǒng)之間,少不了數(shù)據(jù)的互聯(lián)互通。隨著微服務(wù)的流行,一個系統(tǒng)內(nèi)的不同應(yīng)用進(jìn)行互聯(lián)互通也是常態(tài)。 PowerDotNet的服務(wù)治理平臺發(fā)源于早期的個人項目Power.Apix。這個項目借鑒了工作過的公司的服務(wù)治理方案,站在...

    reclay 評論0 收藏0
  • 2021 年最新基于 Spring Cloud 服務(wù)架構(gòu)分析

    摘要:是一個相對比較新的微服務(wù)框架,年才推出的版本雖然時間最短但是相比等框架提供的全套的分布式系統(tǒng)解決方案。提供線程池不同的服務(wù)走不同的線程池,實現(xiàn)了不同服務(wù)調(diào)用的隔離,避免了服務(wù)器雪崩的問題。通過互相注冊的方式來進(jìn)行消息同步和保證高可用。 Spring Cloud 是一個相對比較新的微服務(wù)框架,...

    cikenerd 評論0 收藏0
  • Dubbo Cloud Native 之路實踐思考

    摘要:可簡單地認(rèn)為它是的擴(kuò)展,負(fù)載均衡自然成為不可或缺的特性。是基于開發(fā)的服務(wù)代理組件,在使用場景中,它與和整合,打造具備服務(wù)動態(tài)更新和負(fù)載均衡能力的服務(wù)網(wǎng)關(guān)。類似的特性在項目也有體現(xiàn),它是另一種高性能代理的方案,提供服務(wù)發(fā)現(xiàn)健康和負(fù)載均衡。 摘要: Cloud Native 應(yīng)用架構(gòu)隨著云技術(shù)的發(fā)展受到業(yè)界特別重視和關(guān)注,尤其是 CNCF(Cloud Native Computing Fo...

    niceforbear 評論0 收藏0
  • 從容器到容器編排

    摘要:從容器到容器編排平臺以及周邊生態(tài)系統(tǒng)包含很多工具來管理容器的生命周期。終止運行中的容器。發(fā)現(xiàn)在由運行于多個主機上的容器組成的分布式部署容器發(fā)現(xiàn)至關(guān)重要。類似的,當(dāng)容器崩潰時,編排工具可以啟動替換。 從容器到容器編排 Docker平臺以及周邊生態(tài)系統(tǒng)包含很多工具來管理容器的生命周期。例如,Docker Command Line Interface(CLI)支持下面的容器活動: 從注冊表...

    Hydrogen 評論0 收藏0
  • Dubbo Cloud Native 實踐思考

    摘要:可簡單地認(rèn)為它是的擴(kuò)展,負(fù)載均衡自然成為不可或缺的特性。類似的特性在項目也有體現(xiàn),它是另一種高性能代理的方案,提供服務(wù)發(fā)現(xiàn)健康和負(fù)載均衡。 Dubbo Cloud Native 實踐與思考 分享簡介 Cloud Native 應(yīng)用架構(gòu)隨著云技術(shù)的發(fā)展受到業(yè)界特別重視和關(guān)注,尤其是 CNCF(Cloud Native Computing Foundation)項目蓬勃發(fā)展之際。Dubbo...

    邱勇 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<