和传统的式系单体架构相比,分布式多了一个远程服务之间的统分通信,不管是布式 soa 还是微服务,他们本 质上都是架构对于业务服务的提炼和复用。那么远程服务之间的调用调用才是实现分布式的关键因素。
1、式系HTTP 应用协议的统分通信框架
1. HttpURLConnection java 原生 HttpURLConnection是基于http协议的,支持get,post,put,delete等各种请求方 式,最常用的就是get和post
2. Apache Common HttpClient HttpClient 是Apache Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本。
3. OKhttp3 OKHttp是一个当前主流的网络请求的开源框架, 用于替代HttpUrlConnection和Apache HttpClient
4. RestTemplate Spring RestTemplate 是 Spring 提供的用于访问 Rest 服务的客户端,RestTemplate 提供了多 种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率,所以很多客户端比如 Android 或者第三方服务商都是使用 RestTemplate 请求 restful 服务。
RPC全称为remote procedure call,即远程过程调用。借助RPC可以做到像本地调用一样调用远 程服务,是一种进程间的通信方式. 。常见的RPC框架有以下几种。
1. Java RMI Java RMI(Romote Method Invocation)是一种基于Java的远程方法调用技术,是Java特有的一 种RPC实现。
2. Hessian
Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能. 相比 WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以 它很适合于发送二进制数据。
3. Dubbo
Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服 务的输出和输入功能,可以和Spring框架无缝集成。Dubbo是一款高性能、轻量级的开源Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注 册和发现。
4. gRPC
gRPC是由Google公司开源的一款高性能的远程过程调用(RPC)框架,可以在任何环境下运行。该 框架提供了负载均衡,跟踪,智能监控,身份验证等功能,可以实现系统间的高效连接。
1、跨域
在分布式系统中, 会有调用其他业务系统,导致出现跨域问题,跨域实质上是浏览器的一种保护处 理。如果产生了跨域,服务器在返回结果时就会被浏览器拦截(注意:此时请求是可以正常发起的,只是 浏览器对其进行了拦截),导致响应的内容不可用. 产生跨域的几种情况有一下:
2、常见解决方案
1. 使用jsonp解决网站跨域 缺点:不支持post请求,代码书写比较复杂
2. 使用HttpClient内部转发
3. 使用设置响应头允许跨域 response.setHeader(“
Access-Control-Allow-Origin”, “*”); 设置响应头允许跨域.
4. 基于Nginx搭建企业级API接口网关
5. 使用Zuul搭建微服务API接口网关
Zuul是spring cloud中的微服务网关。网关: 是一个网络整体系统中的前置门户入口。请求首先通 过网关,进行路径的路由,定位到具体的服务节点上。可以使用zuul的过滤器的请求转发去解决跨域问题
责任编辑:武晓燕 来源: 今日头条 Zuul网关系统(责任编辑:时尚)
HarmonyOS分布式数据管理:打破数据跨设备屏障,让数据自由流转
智升集团控股(08370.HK)发布业绩公告:全年公司拥有人应占亏损2700万元
测评:魅族魅蓝note3对比红米Note3 热门大屏智能机你喜欢哪款
如何使用 Node.js 连接到 PostgreSQL 数据库