摘要:在微服务架构中,注册中心是核心的基础服务之一。在微服务架构流行之前,注册中心就已经开始出现在分布式架构的系统中。服务提供者注册到注册中心,服务消费者到注册中心订阅,同时,注册中心中的变更也会通知服务消费者。
在微服务架构中,注册中心是核心的基础服务之一。在微服务架构流行之前,注册中心就已经开始出现在分布式架构的系统中。Dubbo是一个在国内比较流行的分布式框架,被大量的中小型互联网公司所采用,Dubbo是一个非常实用的框架,提供了比较完善的服务治理功能,而服务治理的实现主要依靠的就是注册中心。
1 什么是注册中心注册中心可以说是微服务架构中的”通讯录“,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就这里找到服务的地址,进行调用。
举个现实生活中的例子,比如说,我们手机中的通讯录的两个使用场景:
当我想给张三打电话时,那我需要在通讯录中按照名字找到张三,然后就可以找到他的手机号拨打电话。
李四办了手机号,那么他把手机号告诉我,我把李四的号码存进通讯录,后续,我就可以从通讯录找到他。
上述两个场景就是我们在微服务架构中常常提到的:
服务发现
服务注册
2 为什么需要注册中心了解了什么是注册中心,那么我们继续谈谈,为什么需要注册中心。
在分布式系统中,我们不仅仅是需要在注册中心找到服务和服务地址的映射关系这么简单,我们还需要考虑更多更复杂的问题:
服务注册后,如何被及时发现
服务宕机后,如何及时下线
服务如何有效的水平扩展
服务发现时,如何进行路由
服务异常时,如何进行降级
注册中心如何实现自身的高可用
这里问题的解决都依赖于注册中心。简单看,注册中心的功能有点类似于DNS服务器或者负载均衡器,而实际上,注册中心作为微服务的基础组件,可能要更加复杂,也需要更多的灵活性和时效性。
3 常见的注册中心结合开发中常用的微服务架构体系,再看注册中心。以下主要以Java体系中常用的微服务框架为例进行说明。
3.1 Dubbo中的注册中心Dubbo支持多种注册中心的实现,常用的是:
Redis
Zookeeper
此处,可以看到,以上的实现主要是为了集中存储服务的信息。而这些组件本身就可以做到高性能和高可用。
图1 Dubbo官方架构图
在Dubbo架构图中,可以看到注册中心(Registry)位于顶端,所有的服务治理相关的操作都围绕它进行。服务提供者(Provider)注册到注册中心,服务消费者(Comsumer)到注册中心订阅,同时,注册中心中的变更也会通知服务消费者。
3.2 SpringCloud中的注册中心目前,SpringCloud可以说是最流行的微服务架构,SpingCloud整个体系功能完备,与Spring框架完美契合,开箱即用,极大降低了落地微服务架构的开发成本。在SpringCloud中,也是支持多种注册中心的:
Spring Cloud Netflix Eureka
Spring Cloud Zookeeper
Spring Cloud Consul
以上三种,最常用的主要是Eureka,官方是这样定义的:
Eureka is a REST (Representational State Transfer) based service that is primarily used in the AWS cloud for locating services for the purpose of load balancing and failover of middle-tier servers.
与Dubbo对于服务注册的抽象有所不同,Eureka使用的是C/S架构:
Eureka Server,注册中心
Eureka Client,服务消费者和服务提供者
而且,Eureka支持多节点的部署,从而保证高可用。生产环境中,常用的方式是部署两台节点,做成一个P2P的集群。
4 小结本文主要从概念上对微服务架构中的注册中心进行分析讲解,让读者从宏观上去理解注册中心。文中主要以常见的注册中心为例,当然,在其他的微服务架构体系中,这些原理是基本类似的。读者可以结合自己的实际开发经验,理解注册中心的概念,从而更好地驾驭微服务。
持续获得最新文章,关注我:
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/11912.html
摘要:是一个相对比较新的微服务框架,年才推出的版本虽然时间最短但是相比等框架提供的全套的分布式系统解决方案。提供线程池不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务器雪崩的问题。通过互相注册的方式来进行消息同步和保证高可用。 Spring Cloud 是一个相对比较新的微服务框架,...
摘要:认证鉴权与权限控制在微服务架构中的设计与实现一引言本文系认证鉴权与权限控制在微服务架构中的设计与实现系列的第一篇,本系列预计四篇文章讲解微服务下的认证鉴权与权限控制的实现。 java 开源项目收集 平时收藏的 java 项目和工具 某小公司RESTful、共用接口、前后端分离、接口约定的实践 随着互联网高速发展,公司对项目开发周期不断缩短,我们面对各种需求,使用原有对接方式,各端已经很...
摘要:京东云监控响应实践京东云运维平台为数万台机器提供监控,部署,机器管理,权限管理,安全管理,审计和运营分析等功能,为京东云所有的业务在各类异构网络环境下提供标准和统一的运维支撑能力。 showImg(https://segmentfault.com/img/bVbsKlQ); 微服务本身并没有一个严格的定义,不过从很多人的反馈来看,大家都达成了这样一个共识:微服务是一种简单的应用,大概有...
摘要:系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。传统架构升级困难。新的轻量级协议容器化的出现。熔断处理在微服务出现问题时防止出现雪崩效应。 聊完Spring Boot,我们来看看Spring Boot最重要的一方面的应用——Spring Cloud。 Spring Cloud 再聊SpringCloud之前我们先聊聊微服务。 ...
阅读 2233·2021-11-17 09:33
阅读 2773·2021-11-12 10:36
阅读 3395·2021-09-27 13:47
阅读 883·2021-09-22 15:10
阅读 3484·2021-09-09 11:51
阅读 1391·2021-08-25 09:38
阅读 2757·2019-08-30 15:55
阅读 2607·2019-08-30 15:53