什么是REST是一组用于规范资源在网络中转移的表现形式软件架构设计风格.简单来说就是客户端和服务器之间的一种交互形式
什么是RESTful,满足了REST风格的接口或者程序,RESTful API是其中的接口,spring中提供了RestTemplate这个类,他强制执行了REST的规范,包括使用HTTP协议的状态描述符来决定请求的类型
RestTemplate的缺点,如下图,写死的ip和使用状态描述符来决定请求的类型对于大多数场景都是很不合适的.
为了解决ip改变的问题我们可以使用SpringCloud中的服务注册功能
2.1 什么是服务注册中心,类似于以前的电话接线员,打一个固定的电话,我们只用告诉接线员我们要打给谁,他就会把我们的电话线插到对方的电话机上
2.2 CAP理论
在一个分布式系统中最多满足一致性(Consistency),可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项
首先得说明这里的一致性是强一致性也就是说无论在何处访问服务返回的都是相同的数据,可用性是每一个请求都会收到非错误的响应,分区容错性是如果数据发生丢失,系统仍然能够正常运行
为什么只能同时满足其中两项呢
ap : 当数据丢失系统能够正常运行时,如果要保证高可用那么当数据不同步的时候请求打过来了,如果要保持一致性就要让请求等待数据进行同步,此时就会产生超时的可能
cp: 如上
ca: 在ap的基础上舍弃一部分请求,保证ca
EUREKA---服务注册中心
借助上面两张图来理解,当我们要出去玩的时候,先去咨询景点的电话,询问一下有没有票之类的.但是景点的电话可能是随时变动的,景点为了随时能让游客联系到自己,就把电话号码发给了一个官方组织也就是114站台,此时游客就可以先去114站台索要景点的电话,然后进行买票操作.结合到服务注册中心,这里的电话号码就是服务的IP和端口号等一些信息.值得注意的是服务的提供方和消费方是相对的,仅在一次远程调用中成立.当第二次调用时,就可能发生改变.
功能:服务注册中心有两个最核心的功能,服务注册和服务发现
服务注册:向注册中心提供自己的IP,端口号以及一些其他信息
服务发现:消费者从服务注册中心获取到对应服务的IP和端口号等信息
搭建Eureka
分为三个步骤,搭建Eureka服务注册中心,搭建Eureka消费者服务,搭建Eureka提供方服务
搭建Eureka服务注册中心
创建Eureka-Server项目
在pom文件中引入eureka-server依赖
增加配置
在启动类中开启服务注册功能
搭建Eureka消费者服务
在pom文件中加入eureka-client依赖
增加配置,这一步代表着服务注册到了注册中心
修改远程调用代码,这里使用了DiscoveryClient这个类的对象先根据服务名称获取实例列表,然后拼接URL
搭建Eureka提供方服务
在pom文件中加入eureka-client依赖
增加配置,这一步代表着服务注册到了注册中心
Eureka 和Zookeeper区别
Eureka 基于AP原则, 保证⾼可⽤, Zookeeper基于CP原则, 保证数据⼀致性.
Eureka各个节点都是平等的,而Zookeeper则区分leader和从节点