微服务:微服务讲解及常用的服务间调用方式

微服务定义

微服务架构风格是一种将单个应用程序作为一套小型服务开发的方法,每种应用程序都在自己的进行中运行,并于轻量级机制(通常是HTTP资源API)进行通信。这些服务是围绕业务功能构建的。可以通过全自动部署机制独立部署。这些服务的集中管理最少。可以用不同的编程语言编写。并使用不同的数据存储技术

微服务架构的优势

1.独立部署,灵活扩展 2.资源的有效隔离。 3.团队组织架构的调整

RPC:(比如userservice调用)

远程过程调用,像调用本地服务(方法)一样调用服务器的服务 支持同步、异步调用 客户端和服务器之间建立TCP连接,可以一次建立一个,也可以多个调用复用一次链接 TCP的支持保持连接,当调用服务的时候不需要每次都进行三次握手才实现。从性能和网络消耗来说RPC都 具备了很好的优势。

RPC数据包小(protobuf)

缺点:编解码,序列化,链接,丢包,协议

Resut(HTTp):(http链接调用)

http请求,支持多种协议和功能 开发方便成本低

http数据包大

REST是一种架构风格,指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。REST规范把所有内容都视为资源,网络上一切皆资源。

REST并没有创造新的技术,组件或服务,只是使用Web的现有特征和能力。 可以完全通过HTTP协议实现,使用 HTTP 协议处理数据通信。REST架构对资源的操作包括获取、创建、修改和删除资源的操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。

两者选择

服务对外的话采用RESTful API会比RPC更具备优势,因此看自己团队的服务是对内还是对外

都是网络交互的协议规范。通常用于多个微服务之间的通信协议。

高与低是对实现两种规范框架的相对比较,但也不是绝对的,需要根据实际情况而定。

REST与PRC应用场景

REST和RPC都常用于微服务架构中。

1、HTTP相对更规范,更标准,更通用,无论哪种语言都支持http协议。如果你是对外开放API,例如开放平台,外部的编程语言多种多样,你无法拒绝对每种语言的支持,现在开源中间件,基本最先支持的几个协议都包含RESTful。

2、 RPC 框架作为架构微服务化的基础组件,它能大大降低架构微服务化的成本,提高调用方与服务提供方的研发效率,屏蔽跨进程调用函数(服务)的各类复杂细节。让调用方感觉就像调用本地函数一样调用远端函数、让服务提供方感觉就像实现一个本地函数一样来实现服务。

最后建议

REST调用及测试都很方便,RPC就显得有点繁琐,但是RPC的效率是毋庸置疑的,所以建议在多系统之间的内部调用采用RPC。对外提供的服务,Rest更加合适。

RPC实现原理

首先需要有处理网络连接通讯的模块,负责连接建立、管理和消息的传输。其次需要有编 解码的模块,因为网络通讯都是传输的字节码,需要将我们使用的对象序列化和反序列 化。剩下的就是客户端和服务器端的部分,服务器端暴露要开放的服务接口,客户调用服 务接口的一个代理实现,这个代理实现负责收集数据、编码并传输给服务器然后等待结果 返回。

经验分享 程序员 微信小程序 职场和发展