CN108390766A - 一种适用于微服务的服务注册与发现方法 - Google Patents
一种适用于微服务的服务注册与发现方法 Download PDFInfo
- Publication number
- CN108390766A CN108390766A CN201711016510.8A CN201711016510A CN108390766A CN 108390766 A CN108390766 A CN 108390766A CN 201711016510 A CN201711016510 A CN 201711016510A CN 108390766 A CN108390766 A CN 108390766A
- Authority
- CN
- China
- Prior art keywords
- service
- key
- catalogue
- micro services
- logger
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
- H04L41/5041—Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the time relationship between creation and deployment of a service
- H04L41/5054—Automatic deployment of services triggered by the service manager, e.g. service implementation by automatic configuration of network components
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及微服务开发技术领域,特别是指一种适用于微服务的服务注册与发现方法。本发明所述的方法运用服务注册器跟踪运行实例的变化;观察到变化时,在键值对存储服务中新建相应的目录,通过目录的实例地址持续监控服务实例;服务的查找也通过前述目录实现;当跟踪到服务实例停止时,则在目录中予以删除。本发明运用解耦的手段和新的服务注册表使用方法,解决了重用性差、服务状态反馈不及时的问题。
Description
技术领域
本发明涉及微服务开发技术领域,特别是指一种适用于微服务的服务注册与发现方法。
背景技术
随着微架构的流行,尤其是容器的大规模应用以后,由多种微服务共同协助,构成一个相对功能强大的应用的案例越来越多。在容器下部署微服务的一个显著的特点就是同一个服务实例可以从一个到若干个之间弹性伸缩,而且网络地址是动态分配的;同时,不同的服务实现所采用的编程语言也不相同。微服务注册与发现一般采用传统的基于SOA架构的服务注册表实现服务的自注册与发现,步骤如下:
1、服务的实例启动以后,由服务本身向服务注册表发送注册消息,并且定期发送心跳信息到服务注册表;
2、服务注册表记录服务的地址和名称;
3、同一个服务的另外一个实例启动以后,执行步骤1和步骤2;
4、在需要查找服务时,通过注册表的名称和地址进行查找;
5、服务关闭前,由服务自身向服务注册表发送注销消息。
然而,在微服务的环境下,上述方法在节点配置维护上存在以下不足:
1、需要服务编写代码进行注册,而不同服务的编程语言不同,造成每个注册方法与编程语言高度耦合,需要为不同的编程语言编写不同的注册代码,复用性低;
2、服务实例与注册表条目是一一对应的,在微服务多个实例部署负载均衡模式且实例动态变化时难以支持。
因此,需要设计一种适用于微服务的低耦合的服务注册与发现方法。
发明内容
本发明解决的技术问题在于提出一种适用于微服务的服务注册与发现方法;实现微服务服务注册与发现的低耦合。
本发明解决上述技术问题的技术方案是:
所述的方法运用服务注册器跟踪运行实例的变化;观察到变化时,在键值对存储服务中新建相应的目录,通过目录的实例地址持续监控服务实例;服务的查找也通过前述目录实现;当跟踪到服务实例停止时,则在目录中予以删除。
所述的包括以下步骤:
步骤1:在每台运行微服务的主机或容器上运行一个服务注册器,通过轮询部署环境或订阅事件去跟踪运行中的实例的变化;
步骤2:运行一个键值对存储服务作为注册表;
步骤3:服务注册器观察到某个服务的一个新的实例启动时,在键值对存储服务中新建一个以服务名为名称的目录,并且在目录下新建一个键值对,键名和值都为服务实例的地址;
步骤4:服务注册器通过服务实例的地址持续监控服务实例的健康状况;
步骤5:在需要查找服务的过程中,从键值对存储服务相对应的服务目录下查找可用的服务实例节点;
步骤6:服务注册器观察某个服务的实例停止时,在键值对存储服务中服务对应目录下根据服务实例的地址删除对应的项。
所述键值对存储服务是二层目录结构的键值对存储服务,以服务名称为根节点,以服务实例的地址为叶子节点;只允许服务注册器进行读写访问。
所述服务注册器指的是代理服务注册操作的一个组件,为了与微服务实例解耦合,与微服务实例在两个不同的进程上运行。
所述轮询部署环境或订阅事件指的是键值对存储服务的事件通知机制,服务注册器可以轮询或订阅某个特定服务的事件。
所述微服务是可在一个应用中同时运行多个实例的应用程序。
本发明的方法能产生如下的有益效果:
1、本发明的方法适用于所有的编程语言实现的微服务的注册,具有普遍适应性;
2、本发明的方法在微服务查找时具有便利性和实时性。
附图说明
下面结合附图对本发明进一步说明:
图1为本发明的流程图;
图2为具体实施方式的体系架构图
具体实施方式
下面以etcd搭建服务注册表,并且使用命令和Go语言编程的方式实现服务注册器的程序行为。
如图1、2所示,使用etcd作为服务注册表,主机上运行一个服务注册器监控etcd上相关目录下服务的情况
这里略过etcd的安装步骤,
1)服务注册器往etcd中注册一个新的服务worker的实例
etcdctl mkdir/worker
etcdctl set/worker/10.0.38.55:8080"10.0.38.55:8080"
2)观察服务实例的变化
先建立一个etcd client,然后把它的key API放进master里面,这样我们以后只需要通过这个API来跟etcd进行交互.Endpoints是指etcd服务器们的地址,如"http://192.168.0.1:2379"等.go master.WatchWorkers()这一行启动一个Go routine来监控节点的情况.下面是WatchWorkers的代码:
WatcherOptions里recursive指的是要监听这个文件夹下面所有节点的变化,而不是这个文件夹的变化。
Claims (6)
1.一种适用于微服务的服务注册与发现方法,其特征在于,所述的方法运用服务注册器跟踪运行实例的变化;观察到变化时,在键值对存储服务中新建相应的目录,通过目录的实例地址持续监控服务实例;服务的查找也通过前述目录实现;当跟踪到服务实例停止时,则在目录中予以删除。
2.根据权利要求1所述的方法,其特征在于:所述的包括以下步骤:
步骤1:在每台运行微服务的主机或容器上运行一个服务注册器,通过轮询部署环境或订阅事件去跟踪运行中的实例的变化;
步骤2:运行一个键值对存储服务作为注册表;
步骤3:服务注册器观察到某个服务的一个新的实例启动时,在键值对存储服务中新建一个以服务名为名称的目录,并且在目录下新建一个键值对,键名和值都为服务实例的地址;
步骤4:服务注册器通过服务实例的地址持续监控服务实例的健康状况;
步骤5:在需要查找服务的过程中,从键值对存储服务相对应的服务目录下查找可用的服务实例节点;
步骤6:服务注册器观察某个服务的实例停止时,在键值对存储服务中服务对应目录下根据服务实例的地址删除对应的项。
3.根据权利要求2所述的方法,其特征在于,所述键值对存储服务是二层目录结构的键值对存储服务,以服务名称为根节点,以服务实例的地址为叶子节点;只允许服务注册器进行读写访问。
4.根据权利要求2所述的方法,其特征在于,所述服务注册器指的是代理服务注册操作的一个组件,为了与微服务实例解耦合,与微服务实例在两个不同的进程上运行。
5.根据权利要求3所述的方法,其特征在于,所述服务注册器指的是代理服务注册操作的一个组件,为了与微服务实例解耦合,与微服务实例在两个不同的进程上运行。
6.根据权利要求2至5任一项所述的方法,其特征在于,所述轮询部署环境或订阅事件指的是键值对存储服务的事件通知机制,服务注册器可以轮询或订阅某个特定服务的事件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711016510.8A CN108390766A (zh) | 2017-10-25 | 2017-10-25 | 一种适用于微服务的服务注册与发现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711016510.8A CN108390766A (zh) | 2017-10-25 | 2017-10-25 | 一种适用于微服务的服务注册与发现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108390766A true CN108390766A (zh) | 2018-08-10 |
Family
ID=63075998
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711016510.8A Withdrawn CN108390766A (zh) | 2017-10-25 | 2017-10-25 | 一种适用于微服务的服务注册与发现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108390766A (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109358956A (zh) * | 2018-09-30 | 2019-02-19 | 上海保险交易所股份有限公司 | 服务调用方法 |
CN109413209A (zh) * | 2018-12-17 | 2019-03-01 | 上海金融期货信息技术有限公司 | 一种基于双队列及注册中心的动态负载均衡方法和系统 |
CN109474685A (zh) * | 2018-11-16 | 2019-03-15 | 中国银行股份有限公司 | 一种基于微服务架构下的服务监控方法和系统 |
CN109618002A (zh) * | 2019-01-11 | 2019-04-12 | 武汉斗鱼鱼乐网络科技有限公司 | 一种微服务网关优化方法、装置及存储介质 |
CN109688219A (zh) * | 2018-12-24 | 2019-04-26 | 国云科技股份有限公司 | 一种适用于多云管理的网络负载均衡器统一管理方法 |
CN110532101A (zh) * | 2019-09-03 | 2019-12-03 | 中国联合网络通信集团有限公司 | 微服务集群的部署系统及方法 |
CN110677347A (zh) * | 2019-08-19 | 2020-01-10 | 荣邦科技有限公司 | 一种用于微服务的服务注册和服务发现的方法 |
CN110958180A (zh) * | 2019-11-14 | 2020-04-03 | 微民保险代理有限公司 | 网关路由方法、智能网关、电子设备及计算机存储介质 |
CN111147605A (zh) * | 2019-12-31 | 2020-05-12 | 中国银行股份有限公司 | 服务注册方法、装置和设备 |
CN112738184A (zh) * | 2020-12-24 | 2021-04-30 | 上海家睦网络科技有限公司 | 一种插件式动态注册分布式微服务网关系统 |
CN112769947A (zh) * | 2021-01-20 | 2021-05-07 | 浪潮云信息技术股份公司 | 一种基于租户侧容器集群管理微服务引擎实例的方法 |
CN113014433A (zh) * | 2021-03-02 | 2021-06-22 | 电子科技大学 | 基于消息传播的服务注册发现方法 |
CN113726902A (zh) * | 2021-09-02 | 2021-11-30 | 马上消费金融股份有限公司 | 微服务的调用方法及系统 |
WO2022077221A1 (zh) * | 2020-10-13 | 2022-04-21 | 深圳市大疆创新科技有限公司 | 服务管理及访问方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105933448A (zh) * | 2016-06-29 | 2016-09-07 | 江苏电力信息技术有限公司 | 一种自管理的微服务架构及其服务方法 |
CN106302596A (zh) * | 2015-06-03 | 2017-01-04 | 北京京东尚科信息技术有限公司 | 一种服务发现的方法和装置 |
WO2017012383A1 (zh) * | 2015-07-22 | 2017-01-26 | 华为技术有限公司 | 一种服务注册方法、使用方法及相关装置 |
CN106487561A (zh) * | 2015-09-01 | 2017-03-08 | 天脉聚源(北京)科技有限公司 | 一种服务器服务更新的方法和系统 |
-
2017
- 2017-10-25 CN CN201711016510.8A patent/CN108390766A/zh not_active Withdrawn
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106302596A (zh) * | 2015-06-03 | 2017-01-04 | 北京京东尚科信息技术有限公司 | 一种服务发现的方法和装置 |
WO2017012383A1 (zh) * | 2015-07-22 | 2017-01-26 | 华为技术有限公司 | 一种服务注册方法、使用方法及相关装置 |
CN106487561A (zh) * | 2015-09-01 | 2017-03-08 | 天脉聚源(北京)科技有限公司 | 一种服务器服务更新的方法和系统 |
CN105933448A (zh) * | 2016-06-29 | 2016-09-07 | 江苏电力信息技术有限公司 | 一种自管理的微服务架构及其服务方法 |
Non-Patent Citations (1)
Title |
---|
码迷: ""服务发现系统etcd介绍"", 《HTTP://WWW.MAMICODE.COM/INFO-DETAIL-1490139.HTML,服务发现系统ETCD介绍》 * |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109358956A (zh) * | 2018-09-30 | 2019-02-19 | 上海保险交易所股份有限公司 | 服务调用方法 |
CN109358956B (zh) * | 2018-09-30 | 2021-03-16 | 上海保险交易所股份有限公司 | 服务调用方法 |
CN109474685A (zh) * | 2018-11-16 | 2019-03-15 | 中国银行股份有限公司 | 一种基于微服务架构下的服务监控方法和系统 |
CN109413209A (zh) * | 2018-12-17 | 2019-03-01 | 上海金融期货信息技术有限公司 | 一种基于双队列及注册中心的动态负载均衡方法和系统 |
CN109413209B (zh) * | 2018-12-17 | 2021-07-09 | 上海金融期货信息技术有限公司 | 一种基于双队列及注册中心的动态负载均衡方法和系统 |
CN109688219B (zh) * | 2018-12-24 | 2021-12-21 | 国云科技股份有限公司 | 一种适用于多云管理的网络负载均衡器统一管理方法 |
CN109688219A (zh) * | 2018-12-24 | 2019-04-26 | 国云科技股份有限公司 | 一种适用于多云管理的网络负载均衡器统一管理方法 |
CN109618002A (zh) * | 2019-01-11 | 2019-04-12 | 武汉斗鱼鱼乐网络科技有限公司 | 一种微服务网关优化方法、装置及存储介质 |
CN110677347A (zh) * | 2019-08-19 | 2020-01-10 | 荣邦科技有限公司 | 一种用于微服务的服务注册和服务发现的方法 |
CN110677347B (zh) * | 2019-08-19 | 2021-08-17 | 荣邦科技有限公司 | 一种用于微服务的服务注册和服务发现的方法 |
CN110532101A (zh) * | 2019-09-03 | 2019-12-03 | 中国联合网络通信集团有限公司 | 微服务集群的部署系统及方法 |
CN110532101B (zh) * | 2019-09-03 | 2022-05-03 | 中国联合网络通信集团有限公司 | 微服务集群的部署系统及方法 |
CN110958180A (zh) * | 2019-11-14 | 2020-04-03 | 微民保险代理有限公司 | 网关路由方法、智能网关、电子设备及计算机存储介质 |
CN110958180B (zh) * | 2019-11-14 | 2024-05-21 | 微民保险代理有限公司 | 网关路由方法、智能网关、电子设备及计算机存储介质 |
CN111147605A (zh) * | 2019-12-31 | 2020-05-12 | 中国银行股份有限公司 | 服务注册方法、装置和设备 |
CN111147605B (zh) * | 2019-12-31 | 2022-06-10 | 中国银行股份有限公司 | 服务注册方法、装置和设备 |
WO2022077221A1 (zh) * | 2020-10-13 | 2022-04-21 | 深圳市大疆创新科技有限公司 | 服务管理及访问方法、装置、设备及存储介质 |
CN112738184A (zh) * | 2020-12-24 | 2021-04-30 | 上海家睦网络科技有限公司 | 一种插件式动态注册分布式微服务网关系统 |
CN112738184B (zh) * | 2020-12-24 | 2022-11-18 | 上海家睦网络科技有限公司 | 一种插件式动态注册分布式微服务网关系统 |
CN112769947A (zh) * | 2021-01-20 | 2021-05-07 | 浪潮云信息技术股份公司 | 一种基于租户侧容器集群管理微服务引擎实例的方法 |
CN113014433A (zh) * | 2021-03-02 | 2021-06-22 | 电子科技大学 | 基于消息传播的服务注册发现方法 |
CN113726902A (zh) * | 2021-09-02 | 2021-11-30 | 马上消费金融股份有限公司 | 微服务的调用方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108390766A (zh) | 一种适用于微服务的服务注册与发现方法 | |
CN104137085B (zh) | 集群环境中用于控制客户端对服务的访问的方法 | |
CN104158886B (zh) | 一种应用程序的流式执行方法 | |
CN107102847A (zh) | 基于微服务的软件开发方法、装置及系统 | |
CN102333029B (zh) | 一种服务器集群系统中的路由方法 | |
CN105357273B (zh) | 异步通信模式下socket通信与进程管理通用平台及方法 | |
CN105138398B (zh) | 同步通信模式下socket通信与进程管理通用平台及方法 | |
JP2005539298A (ja) | サーバを遠隔かつ動的に構成する方法およびシステム | |
CN104486445A (zh) | 一种基于云平台的分布式可扩展资源监控系统及方法 | |
CN106055698A (zh) | 数据迁移方法、代理节点及数据库实例 | |
CN102880503A (zh) | 数据分析系统及数据分析方法 | |
CN105245560B (zh) | 一种实现分布式缓存的方法、装置及系统 | |
CN104601702B (zh) | 集群远程过程调用方法及系统 | |
JP2010239597A (ja) | Ipアドレス割当制御プログラム、ipアドレス割当制御装置およびipアドレス割当制御方法 | |
CN102571417A (zh) | 动态拓扑的实现方法 | |
CN106302596A (zh) | 一种服务发现的方法和装置 | |
CN105429791A (zh) | 一种分布式服务状态检测器及方法 | |
CN111147308B (zh) | 基于微服务架构的网络管理方法和系统 | |
CN104683968B (zh) | 一种机器类型通信应用的资源管理方法、节点和系统 | |
CN106797670A (zh) | 使用表征状态转移业务的物理交换机初始化 | |
CN105227379A (zh) | 一种针对java web 应用的集中监控和预警方法 | |
US20170257431A1 (en) | Distributed scheduling systems for digital magazine | |
CN105591782A (zh) | 测试设备的管理方法及装置 | |
CN104394201A (zh) | 分布式web应用监控方法 | |
CN104052723B (zh) | 信息处理方法、服务器和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20180810 |
|
WW01 | Invention patent application withdrawn after publication |