婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Python 使用 consul 做服務發現示例詳解

Python 使用 consul 做服務發現示例詳解

熱門標簽:400電話 申請 條件 云南地圖標注 汕頭電商外呼系統供應商 北京外呼電銷機器人招商 鄭州智能外呼系統中心 電銷機器人 金倫通信 crm電銷機器人 賓館能在百度地圖標注嗎 南京crm外呼系統排名

前言

前面一章講了微服務的一些優點和缺點,那如何做到

一、目標

二、使用步驟

1. 安裝 consul

我們可以直接使用官方提供的二進制文件來進行安裝部署,其官網地址為 https://www.consul.io/downloads

下載后為可執行文件,在我們開發試驗過程中,可以直接使用 consul agent -dev 命令來啟動一個單節點的 consul

在啟動的打印日志中可以看到 agent: Started HTTP server on 127.0.0.1:8500 (tcp), 我們可以在瀏覽器直接訪問 127.0.0.1:8500 即可看到如下

這里我們的 consul 就啟動成功了

2. 服務注冊

在網絡編程中,一般會提供項目的 IP、PORT、PROTOCOL,在服務治理中,我們還需要知道對應的服務名、實例名以及一些自定義的擴展信息

在這里使用 ServiceInstance 接口來規定注冊服務時必須的一些信息

class ServiceInstance:

 def __init__(self, service_id: str, host: str, port: int, secure: bool = False, metadata: dict = None,
   instance_id: str = None):
 self.service_id = service_id
 self.host = host
 self.port = port
 self.secure = secure
 self.metadata = metadata
 self.instance_id = instance_id

 def get_instance_id(self):
 return

定義基類

在上面規定了需要注冊的服務的必要信息,下面定義下服務注冊和剔除的方法,方便以后實現 Eureka 和 Redis 的方式

import abc


class ServiceRegistry(abc.ABC):

 @abc.abstractmethod
 def register(self, service_instance: ServiceInstance):
 pass

 @abc.abstractmethod
 def deregister(self):
 pass

具體實現

因為 consul 提供了 http 接口來對consul 進行操作,我們也可以使用 http 請求方式進行注冊和剔除操作,具體 http 接口文檔見 https://www.consul.io/api-docs, consul 并沒有提供 Python 語言的實現,這里使用 python-consul 來訪問 consul

import consul


class ConsulServiceRegistry(ServiceRegistry):
 _consul = None
 _instance_id = None

 def __init__(self, host: str, port: int, token: str = None):
 self.host = host
 self.port = port
 self.token = token
 self._consul = consul.Consul(host, port, token=token)

 def register(self, service_instance: ServiceInstance):
 schema = "http"
 if service_instance.secure:
  schema = "https"
 check = consul.Check.http(f'{schema}:{service_instance.host}:{service_instance.port}/actuator/health', "1s",
     "3s", "10s")
 self._consul.agent.service.register(service_instance.service_id,
      service_id=service_instance.instance_id,
      address=service_instance.host,
      port=service_instance.port,
      check=check)
 self._instance_id = service_instance.instance_id

 def deregister(self):
 if self._instance_id:
  self._consul.agent.service.deregister(service_id=self._instance_id)
  self._instance_id = None

3. 服務發現

在服務發現中,一般會需要兩個方法

  • 獲取所有的服務列表
  • 獲取指定的服務的所有實例信息

基類定義

import abc


class DiscoveryClient(abc.ABC):

 @abc.abstractmethod
 def get_services(self) -> list:
 pass

 @abc.abstractmethod
 def get_instances(self, service_id: str) -> list:
 pass

具體實現

來實現一下

這里是簡化版,所以一些參數直接寫死了,如果需要可以適當修改

import consul


class ConsulServiceDiscovery(DiscoveryClient):

 _consul = None

 def __init__(self, host: str, port: int, token: str = None):
 self.host = host
 self.port = port
 self.token = token
 self._consul = consul.Consul(host, port, token=token)

 def get_services(self) -> list:
 return self._consul.catalog.services()[1].keys()

 def get_instances(self, service_id: str) -> list:
 origin_instances = self._consul.catalog.service(service_id)[1]
 result = []
 for oi in origin_instances:
  result.append(ServiceInstance(
  oi.get('ServiceName'),
  oi.get('ServiceAddress'),
  oi.get('ServicePort'),
  oi.get('ServiceTags'),
  oi.get('ServiceMeta'),
  oi.get('ServiceID'),
  ))
 return result

4. 測試用例

import unittest
from random import random

class MyTestCase(unittest.TestCase):
 def test_consul_register(self):
 instance = ServiceInstance("abc", "127.0.0.1", 8000, instance_id=f'abc_{random()}')

 registry = ConsulServiceRegistry("127.0.0.1", 8500)
 discovery = ConsulServiceDiscovery("127.0.0.1", 8500)
 registry.register(instance)
 print(discovery.get_services())
 print(discovery.get_instances("abc"))
 self.assertEqual(True, True)
if __name__ == '__main__':
 unittest.main()

總結

通過使用 consul api 我們可以簡單的實現基于 consul 的服務發現,在通過結合 http rpc 就可簡單的實現服務的調用,下面一章來簡單講下 go 如何發起 http 請求,為我們做 rpc 做個鋪墊

具體代碼見 https://github.com/zhangyunan1994/gimini

參考

https://www.consul.io/api-docs

https://github.com/hashicorp/consul/tree/master/api

到此這篇關于Python 使用 consul 做服務發現的文章就介紹到這了,更多相關Python 使用 consul 服務內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python實現FTP文件傳輸的方法(服務器端和客戶端)
  • python實現從ftp服務器下載文件
  • Python3搭建http服務器的實現代碼
  • python+selenium定時爬取丁香園的新型冠狀病毒數據并制作出類似的地圖(部署到云服務器)

標簽:浙江 石家莊 昆明 懷化 文山 錫林郭勒盟 梅州 西寧

巨人網絡通訊聲明:本文標題《Python 使用 consul 做服務發現示例詳解》,本文關鍵詞  Python,使用,consul,做,服務,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python 使用 consul 做服務發現示例詳解》相關的同類信息!
  • 本頁收集關于Python 使用 consul 做服務發現示例詳解的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    色天天综合色天天久久| 色94色欧美sute亚洲线路一久 | 日本大香伊一区二区三区| 国产二区国产一区在线观看| 欧美一区二区不卡视频| 3d动漫精品啪啪一区二区竹菊| 亚洲一区二区视频在线观看| 欧美日韩高清一区二区三区| 亚洲卡通欧美制服中文| 日韩中文字幕91| 欧美日韩大陆一区二区| 日韩欧美国产综合在线一区二区三区| 亚洲乱码日产精品bd| 日韩欧美国产wwwww| 日韩亚洲欧美综合| 青娱乐精品视频| 日韩精品一区二区三区四区视频| 日韩精品一级中文字幕精品视频免费观看 | 欧美videossexotv100| 国产一区二区福利| 中文字幕在线不卡一区二区三区| 色999日韩国产欧美一区二区| 日本美女一区二区三区| 亚洲欧洲无码一区二区三区| 在线欧美日韩国产| 美女视频黄频大全不卡视频在线播放| 国产午夜精品福利| 欧美日韩欧美一区二区| 国内精品免费**视频| 亚洲欧美自拍偷拍色图| 欧美一区二区成人| 色综合久久中文字幕| 免费精品视频最新在线| 国产精品久久久久aaaa樱花| 91精品国产手机| 91原创在线视频| 美美哒免费高清在线观看视频一区二区| 国产精品成人午夜| 欧美sm极限捆绑bd| 欧洲精品在线观看| 国产成人免费网站| 奇米精品一区二区三区四区| 亚洲精品日韩一| 国产精品五月天| 精品久久久久香蕉网| 在线观看成人小视频| 99r国产精品| 国产伦精品一区二区三区在线观看 | 水野朝阳av一区二区三区| 国产三级一区二区| 精品99一区二区三区| 日韩欧美电影在线| 欧美精品在线观看一区二区| 国产成a人无v码亚洲福利| 久久er精品视频| 日韩国产精品久久久久久亚洲| 亚洲女人****多毛耸耸8| 久久精品免视看| 久久综合视频网| 久久综合狠狠综合久久激情 | 色爱区综合激月婷婷| www.亚洲激情.com| 99精品视频在线观看免费| 国产精品自产自拍| 国产成a人亚洲| 成人精品一区二区三区中文字幕| 韩国欧美国产1区| 加勒比av一区二区| 国产精品一卡二卡| 波多野洁衣一区| 91色porny蝌蚪| 91久久精品日日躁夜夜躁欧美| 色成年激情久久综合| 欧美天堂亚洲电影院在线播放| 欧美在线观看一区二区| 欧美视频精品在线| 日韩欧美一二三四区| 久久久久久99久久久精品网站| 久久久精品欧美丰满| 中文字幕精品三区| 亚洲国产成人av网| 中文字幕日韩av资源站| 亚洲欧美综合色| 亚洲精品日韩专区silk| 亚洲成人在线免费| 国产在线播精品第三| 欧美一级在线视频| 国内久久婷婷综合| 精品一区二区免费| 国内久久精品视频| 成人高清视频在线| 在线观看亚洲成人| 欧美一级二级在线观看| 久久精品亚洲一区二区三区浴池 | 成人精品视频一区| 91丝袜国产在线播放| 91精品在线麻豆| 中文字幕一区二区三区不卡| 亚洲成a人在线观看| 久久精品国产99国产| 色悠悠久久综合| 日韩精品在线一区| 亚洲日本一区二区| 国产一区高清在线| 91麻豆精品国产自产在线观看一区| 久久亚区不卡日本| 亚洲一区二区欧美日韩| 成人av在线网| 久久综合九色综合97婷婷女人| 亚洲国产欧美日韩另类综合| 东方欧美亚洲色图在线| 欧美三级欧美一级| 国产精品久久久久久久蜜臀| 美女性感视频久久| 欧美日韩国产一级| 一区二区三区中文在线| hitomi一区二区三区精品| 日韩一区二区三区免费看| 亚洲美腿欧美偷拍| 国产乱码精品1区2区3区| 欧美日韩高清一区| 中文字幕一区二区三| 天堂一区二区在线免费观看| 日本电影亚洲天堂一区| 欧美高清视频www夜色资源网| 久久免费看少妇高潮| 亚洲综合色噜噜狠狠| 91免费在线播放| 精品国产一区二区三区忘忧草 | 久久久一区二区| 亚洲综合视频在线观看| 国产精品自拍一区| 欧美日韩中字一区| 亚洲视频在线观看一区| 久久狠狠亚洲综合| 91福利社在线观看| 久久久久久久精| 国产夫妻精品视频| 欧美一区二区三区日韩| 亚洲特黄一级片| 国产成人免费视频网站| 激情另类小说区图片区视频区| 欧美videofree性高清杂交| 一区二区三区.www| 本田岬高潮一区二区三区| 欧美一区二区大片| 国产精品色哟哟网站| 国产91精品一区二区麻豆亚洲| 欧美一区二区三区免费| 亚洲最大的成人av| 99视频在线观看一区三区| 日韩女优毛片在线| 午夜久久久久久| 色综合久久88色综合天天免费| 欧美国产日韩精品免费观看| 亚洲免费av网站| 欧美日韩免费不卡视频一区二区三区| 亚洲国产高清aⅴ视频| 国产麻豆视频精品| 久久久美女艺术照精彩视频福利播放| 在线精品视频免费播放| 美日韩一区二区| 日韩午夜激情电影| 久久99精品视频| 日韩欧美高清在线| 国产精品77777| 国产精品无码永久免费888| 成人国产在线观看| 国产精品久久久久影院| 欧美日韩国产成人在线免费| 日韩综合在线视频| 欧美一级片免费看| 国产在线精品不卡| 夜夜爽夜夜爽精品视频| 色综合久久66| 亚洲成a天堂v人片| 欧美精品乱人伦久久久久久| 亚洲欧美色综合| 日韩免费看的电影| 国产精品一二三| 日韩一区在线免费观看| 在线亚洲精品福利网址导航| 国产一区福利在线| 亚洲视频小说图片| 欧美老女人第四色| 久久se这里有精品| 国产蜜臀97一区二区三区| 91色在线porny| 日韩高清中文字幕一区| 久久久精品免费观看| 欧美一三区三区四区免费在线看 | 国产精品毛片大码女人| 91浏览器打开| 成人免费毛片a| 亚洲综合精品自拍| 精品国产免费一区二区三区四区| 激情五月婷婷综合| 久久精品国产亚洲5555| 国产精品久久午夜| 717成人午夜免费福利电影|