微服务
服务拆分,利用轻量化机制(通常为HTTP源API)实现通信,复杂度可控,独立部署,技术选型灵活,容错,扩展。
康威定律的实际体现
微服务架构模式深刻影响了应用和数据库之间的关系,不像传统多个服务共享一个数据库,微服务架构每个服务都有自己的数据库。
Web Service
WebService是一种跨编程语言和跨操作系统平台的远程调用技术。XML+XSD,SOAP和WSDL就是构成WebService平台的三大技术。
SOAP提供了标准的RPC方法来调用Web Service。SOAP协议 = HTTP协议 + XML数据格式
WebAPI(MicroSoft)
web api是在vs2012上的mvc4项目绑定发行的,它提出的web Api是完全基于RESTful标准的,完全不同于之前的(同是SOAP协议的)RPC方式的wcf和webService.
RESRful
REST的名称"表现层状态转化"中,省略了主语。"表现层"其实指的是"资源"(Resources)的"表现层"。restful暴露了资源,soap暴露了操作。
(1)每一个URI代表一种资源;
(2)客户端和服务器之间,传递这种资源的某种表现层;
(3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。
REST是一种轻量级的Web Service架构风格,其实现和操作比SOAP和XML-RPC更为简洁,可以完全通过HTTP协议实现,还可以利用缓存Cache来提高响应速度,性能、效率和易用性上都优于SOAP协议。
RPC
为什么要RPC,RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。
需要解决的问题:
1) 通信问题,A-B,寻址等
2) 参数序列化、反序列化
RPC的协议有很多,比如最早的CORBA,Java RMI,Web Service的RPC风格,Hessian,Thrift,甚至Rest API。
RPC 的应用场景实质是一种可靠的请求应答消息流,和 HTTP 类似。因此选择长连接方式的 TCP 协议会更高效,与 HTTP 不同的是在协议层面我们定义了每个消息的唯一 id,因此可以更容易的复用连接。
心跳消息,也是RPC 框架库使用的内部消息,在前文协议头结构中也有一个专门的心跳位,就是用来标记心跳消息的,它对业务应用透明。
======缺点=====
1. 单一 RPC 无法实现 push,即推送服务。理由是,RPC 是client 调用 server获取数据,是一个完整的过程,实现不了server调用client。(当然复用部署,也能实现伪push)
2. 消息无模型。XML-based。