如何做一个api接口?
287
2022-10-17
微服务实现基本概念知识
rpc&rest
RPC(Remote process call):远程过程调用,rpc本身是一个进程之间调用的过程,并不是一个协议,而实现rpc的框架有很多种,比如阿里的dubbo。 在目前云计算、微服务和分布式应用解耦的情况下,传统的大应用不能适应目前互联网可扩展性、分布式的需求,进而需要将应用拆分为一个个服务,也即是微服务化进行解耦,提升可扩展性和分布式需求。而原来在一个大应用内、如进程内或者线程间的调用请求,在微服务化的情况下,各个微服务之间就需要有频繁的服务请求调用,各微服务或小应用之间会有相应的服务接口或者方法。RPC作为服务请求调用的一种方法,是实现微服务的一种方式,阿里的dubbo框架用rpc的方法来实现微服务。 另外有比如springCloud用rest api接口来实现微服务之间的服务请求调用。
RPC 是一种技术思想而非一种规范或协议,或者RPC可以称之为一种规约报文的协议,并且用户可以自定义的规约该报文里面有什么字段和值(key-value)等,报文内容不固定,用户可以根据需要自定义。报文协议需要通过传输协议进行数据通信,传输协议可以是tcp,长连接,短链接,RPC 技术和框架有:
应用级的服务框架:阿里的 Dubbo/Dubbox、Google gRPC、Spring Boot/Spring Cloud。远程通信协议:RMI、Socket、SOAP(HTTP XML)、REST(HTTP JSON)。通信框架:MINA 和 Netty。目前流行的开源 RPC 框架还是比较多的,有阿里巴巴的 Dubbo、Facebook 的 Thrift、Google 的 gRPC、Twitter 的 Finagle 等。
下面重点介绍三种:
gRPC:是 Google 公布的开源软件,基于的 HTTP 2.0 协议,并支持常见的众多编程语言。RPC 框架是基于 HTTP 协议实现的,底层使用到了 Netty 框架的支持。Thrift:是 Facebook 的开源 RPC 框架,主要是一个跨语言的服务开发框架。用户只要在其之上进行二次开发就行,应用对于底层的 RPC 通讯等都是透明的。不过这个对于用户来说需要学习特定领域语言这个特性,还是有一定成本的。
Dubbo:是阿里集团开源的一个极为出名的 RPC 框架,在很多互联网公司和企业应用中广泛使用。协议和序列化框架都可以插拔是极其鲜明的特色。
Mq:还有些Mq类组件提供rpc模式的数据交互如zeromq,rabbitmq,rabbitmq本身工作有6种模式,rpc模式属于其中一种。
dubbo
dubbo是一种微服务开发框架,dubbo一般使用zookeeper做服务管理和服务发现。项目停滞维护一段时间,目前又开始继续维护,在国内市场占用一席之地。dubbo本身使用rpc的框架思想进行设计实现的,可以提供基于tcp和rest传输协议的rpc实现,网关可以选择nginx或对应dubbo的rpc网关(取决于用的什么rpc,像grpc就有官方的网关,以及Nginx配套的网关可选,可以动态向网关增加路由配置,然后自动重写网关配置,reload),根据业务场景,适合走rest网关的场景就用 Spring Cloud的子项目,大致可分成两类,一类是对现有成熟框架”Spring Boot化”的封装和抽象,也是数量最多的项目;第二类是开发了一部分分布式系统的基础设施的实现,如Spring Cloud Stream扮演的就是kafka, ActiveMQ这样的角色。对于我们想快速实践微服务的开发者来说,第一类子项目就已经足够使用,如:Spring Cloud Netflix 是对Netflix开发的一套分布式服务框架的封装,包括服务的发现和注册,负载均衡、断路器、REST客户端、请求路由等。
dubbox
当当网基于Dubbo的开源扩展,实现dubbox微服务框架,增加了对RESTful接口支持。
BAT api
百度api集市:阿里api地址:https://docs.open.alipay.com/
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~