SpringCloud学习1

导读

从学习JavaWeb开始,Spring一直陪伴着我们. 
一直到SpringCloud,大大简化了我们的开发.
可是自己学习过,但却在日常生活中,没有使用到,还是生疏了.

服务治理

OOP: 面向对象编程
AOP:面向切面编程
SOA:面向服务编程(服务治理)
概念:

当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,
此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。
此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键 

服务治理和微服务的差别:
在这里插入图片描述

远程通信

无论是微服务还是分布式服务(都是SOA,都是面向服务编程),
都面临着服务间的远程调用。那么服务间的远程调用方式有哪些呢?

RPC

RPC:Remote Produce Call远程过程调用,类似的还有RMI
(Remote Methods Invoke 远程方法调用,是JAVA中的概念,是JAVA十三大技术之一)。
自定义数据格式,基于原生TCP通信,速度快,效率高。
早期的webservice,现在热门的dubbo,都是RPC的典型

RPC的框架:webservie(cxf)、dubbo
RMI的框架:hessian

Http

Http:http其实是一种网络传输协议,基于TCP,规定了数据传输的格式。现在客户端浏览器与服务端通信基本都是采用Http协议。也可以用来进行远程服务调用。缺点是消息封装臃肿。

现在热门的Rest风格,就可以通过http协议来实现。

http的实现技术:HttpClient

相同点

底层通讯都是基于socket,都可以实现远程调用,都可以实现服务调用服务

不同点

RPC:框架有:dubbo、cxf、(RMI远程方法调用)Hessian
当使用RPC框架实现服务间调用的时候,要求服务提供方和服务消费方 都必须使用统一的RPC框架,要么都dubbo,要么都cxf

跨操作系统在同一编程语言内使用 优势:调用快、处理快

http:框架有:httpClient
当使用http进行服务间调用的时候,无需关注服务提供方使用的编程语言,也无需关注服务消费方使用的编程语言,服务提供方只需要提供restful风格的接口,服务消费方,按照restful的原则,请求服务,即可

跨系统跨编程语言的远程调用框架 优势:通用性强

区别

1 RPC要求服务提供方和服务调用方都需要使用相同的技术,要么都hessian,要么都dubbo
而http无需关注语言的实现,只需要遵循rest规范
2 RPC的开发要求较多,像Hessian框架还需要服务器提供完整的接口代码(包名.类名.方法名必须完全一致),否则客户端无法运行
3 Hessian只支持POST请求
4 Hessian只支持JAVA语言

认识RPC

实现远程调用其他计算机的服务 
要实现远程调用,肯定是通过网络传输数据。
A程序提供服务,B程序通过网络将请求参数传递给A,A本地执行后得到结果,再将结果返回给B程序。这里需要关注的有两点: 
1)采用何种网络通讯协议? 
现在比较流行的RPC框架,都会采用TCP作为底层传输协议 
2)数据传输的格式怎样? 
两个程序进行通讯,必须约定好数据传输格式。就好比两个人聊天,要用同一种语言,否则无法沟通。
所以,我们必须定义好请求和响应的格式。另外,数据在网路中传输需要进行序列化,
所以还需要约定统一的序列化的方式。 
像调用本地服务一样调用远程服务 
如果仅仅是远程调用,还不算是RPC.
				因为RPC强调的是过程调用,
				调用的过程对用户而言是应该是透明的
				用户不应该关心调用的细节
				可以像调用本地服务一样调用远程服务。
所以RPC一定要对调用的过程进行封装 

在这里插入图片描述
参考资料:手动实现RPC

认识Http

Http协议:超文本传输协议,是一种应用层协议。
规定了网络传输的请求格式、响应格式、资源定位和操作的方式等。
但是底层采用什么网络传输协议,并没有规定,不过现在都是采用TCP协议作为底层传输协议。
说到这里,大家可能觉得,Http与RPC的远程调用非常像,都是按照某种规定好的数据格式进行网络通信,有请求,有响应。
没错,在这点来看,两者非常相似,但是还是有一些细微差别。
RPC并没有规定数据传输格式,这个格式可以任意指定,不同的RPC协议,数据格式不一定相同。 
Http中还定义了资源定位的路径,RPC中并不需要 
最重要的一点:
		 RPC需要满足像调用本地服务一样调用远程服务,也就是对调用过程在API层面进行封装。
		 Http协议没有这样的要求,因此请求、响应等细节需要我们自己去实现。 

优点:RPC方式更加透明,对用户更方便。
Http方式更灵活,没有规定API和语言,跨语言、跨平台
缺点:RPC方式需要在API层面进行封装,限制了开发的语言环境。
在这里插入图片描述

如何选择

由于微服务强调独立,自治,灵活等,所以大多采用Http的方式作为远程通信的手段

Http实现

HttpClient OKHttp URLConnection
这是比较流行得Http通信工具

组件

SpringCloud 提供了各种开箱即用的组件,简化微服务的开发.

Eureka:注册中心 Zuul:服务网关 Ribbon:负载均衡 Feign:服务调用 Hystrix:熔断器
还有别的组件比如:SpringCloud Config 等等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值