学习Spring Cloud第四课(服务注册与服务发现)

来源:互联网 发布:淘宝汽车用品店名大全 编辑:程序博客网 时间:2024/06/08 05:04

一、如何解决硬编码问题       

      上节课我们一起学习了服务提供者和服务发现者,其中有个非常大问题就是硬编码的问题,众所周知,在现在互联网开发中,访问地址的IP和端口号是动态的,一个服务停掉再重新启用后IP和端口就可能发生了改变,所以用硬编码是肯定不行了。于是我们尝试使用新的技术来解决这一难题。

 二、服务发现      

       基于上面提到的问题,解决的办法是采用服务发现组件动态维护访问路径等关系,如下图所示。服务提供者会把IP和端口注册到服务发现组件当中,当有服务消费者需要消费服务的时候,它只需要去服务发现组件中去获取访问路径即可。那么它们的关系是如何维持的呢?其实也是用到了心跳机制,就是说,服务提供者和服务消费者在服务发现组件当中注册之后每隔固定的时间就会发送一次心跳,服务发现组件接收到心跳便认为被管理的对象是可用的,如果长时间接收不到心跳,那么服务发现组件便认为该对象已经挂掉,便把它的注册信息删除掉。再对外提供服务的时候便不再使用挂掉的服务提供者的IP和端口。


三、服务发现组件的功能     

     服务发现组件的功能分为三个:

1.服务注册表

      服务注册表是一个记录当前可用服务实例的网络信息的数据库,是服务发现机制的核心。服务注册表提供查询API和管理API,使用查询API获得可用的服务实例,使用管理           API实现注册和注销。

2.服务注册

       注册功能是前提,服务组件要想对外提供服务,起码得有供它管理服务才行,因此注册功能是基础,是前提。

3.健康检查

        一个服务注册到服务组件之后并不是就万事大吉了,服务发现组件还要定时检查注册进来的这些服务是不是已经宕掉了,如果宕掉了,就不再对外提供该服务所提供的服务。

四、服务发现的方式

1.客户端发现

     客户端发现常见的有两种方式,分别是Eureka和Zookeeper

     服务端发现常见的方式是Consul+nginx

     那么,客户端发现和服务端发现有哪些相同和不同之处呢,大家可以参考:http://blog.daocloud.io/microservices-4/这篇文章进行学习。目前Eureka是最适合做为服务发现的技术。


0 0
原创粉丝点击