今天就来说说微服务技术之SpringCloud服务注册与发现。
我们先来说说RPC远程调用框架核心设计思想:在于注册中心,因为使用注册中心管理每个服务与服务之间的一个依赖关系(服务治理概念)
什么是服务治理
在传统的rpc远程调用框架中,管理每个服务于服务之家依赖关系比较复杂。
我们来画图举一个例子看看
如上图所示:我们有这么一个需求:
订单服务需要调用会员服务查询用户相关信息
我们使用HttpClient技术HttpClient.get("http://192.168.110.1/member");去调用会员服务,
思考一个问题:如果以后服务与服务之间的依赖关系非常多的情况下,服务url管理起来非常复杂,万一写错了也是麻烦事。
在这时候可以使用服务治理技术,管理每个服务与服务与服务之间的依赖关系。
注意:在微服务中:通讯协议采用http协议+JSON
有了上面的列子:我们来继续讲讲原理
任何RPC核心服务就是注册中心
(1)服务注册与发现原理,在任何rpc远程框架中,都会有一个注册中心。
(2) 注册中心概念:存放服务地址相关信息(接口地址)
SpringCloud中支持以下三种注册中心:Eureka,Consul(go语言编写),zookeeper
Dubbo 支持常用两种Redis和Zookeeper
我们来说下两个概念:
服务提供者:提供服务接口的意思
服务消费者:调用别人接口进行使用
一个服务既可以作为提供者,也可以作为消费者
我们来看上图所示:
(1)首先启动注册中心,(eureka注册中心)
(2)启动会员服务
(3)会员服务在启动的时候,会把当前服务基本信息。比如服务地址和端口以别名方式注册到注册中心上去
(4)消费者在调用接口的时候,使用服务别名也就是Serviceid去注册中心上获取实际rpc远程调用地址。
(5)首先会缓存到jvm内容中,默认情况下eureka每隔30秒更新一次服务调用地址。
注意两个概念
服务注册:将服务信息注册到注册中心上
服务发现:从注册中心上获取服务信息