古道长亭

Contact me with ixiaoqiang0011@gmail.com


  • 首页

  • 归档

  • 分类

  • 关于

  • Book

  • 搜索

分布式架构服务调用

时间: 2022-10-05   |   分类: 分布式架构理论   | 字数: 1435 字 | 阅读约: 3分钟 | 阅读次数:

分布式架构服务调用

1.服务调用

和传统的单体架构相比,分布式多了一个远程服务之间的通信,不管是 soa 还是微服务,他们本质上都是对于业务服务的提炼和复用。那么远程服务之间的调用才是实现分布式的关键因素。

2.实现方式

2.1 HTTP 应用协议的通信框架

  1. HttpURLConnection java 原生 HttpURLConnection是基于http协议的,支持get,post,put,delete等各种请求方式,最常用的就是get和post

  2. Apache Common HttpClient HttpClient 是Apache Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本。

实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)

支持 HTTPS 协议

支持代理服务器等

  1. OKhttp3

OKHttp是一个当前主流的网络请求的开源框架, 用于替代HttpUrlConnection和Apache HttpClient

  • 支持http2.0,对一台机器的请求共享一个socket。
  • 采用连接池技术,可以有效的减少Http连接数量。
  • 无缝集成GZIP压缩技术。
  • 支持Response Cache,避免重复请求
  • 域名多IP支持
  1. RestTemplate

Spring RestTemplate 是 Spring 提供的用于访问 Rest 服务的客户端,RestTemplate 提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率,所以很多客户端比如 Android或者第三方服务商都是使用 RestTemplate 请求 restful 服务。

面向 URL 组件,必须依赖于主机 + 端口 + URI

RestTemplate 不依赖于服务接口,仅关注 REST 响应内容

Spring Cloud Feign

2.2 rpc框架

RPC全称为remote procedure call,即远程过程调用。借助RPC可以做到像本地调用一样调用远程服务,是一种进程间的通信方式. 。常见的RPC框架有一下几种.

  1. Java RMI

  2. Hessian

    Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能. 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。

  3. Dubbo

    Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

  4. gRpc

    gRPC是由Google公司开源的一款高性能的远程过程调用(RPC)框架,可以在任何环境下运行。该框架提供了负载均衡,跟踪,智能监控,身份验证等功能,可以实现系统间的高效连接。

3.跨域调用

3.1 跨域

在分布式系统中, 会有调用其他业务系统,导致出现跨域问题,跨域实质上是浏览器的一种保护处理。如果产生了跨域,服务器在返回结果时就会被浏览器拦截(注意:此时请求是可以正常发起的,只是浏览器对其进行了拦截),导致响应的内容不可用. 产生跨域的几种情况有一下(详情参见安全防护模块)

3.2 常见解决方案

  1. 使用jsonp解决网站跨域 缺点:不支持post请求,代码书写比较复杂
  2. 使用HttpClient内部转发
  3. 使用设置响应头允许跨域 response.setHeader(“Access-Control-Allow-Origin”, “*”); 设置响应头允许跨域.
  4. 基于Nginx搭建企业级API接口网关
  5. 使用Zuul搭建微服务API接口网关 Zuul是spring cloud中的微服务网关。网关: 是一个网络整体系统中的前置门户入口。请求首先通过网关,进行路径的路由,定位到具体的服务节点上。可以使用zuul的过滤器的请求转发去解决跨域问题
#分布式# #架构# #分布式一致性# #分布式设计策略# #分布式服务调用# #架构设计原则#
QQ扫一扫交流

标题:分布式架构服务调用

作者:古道长亭

声明: 欢迎加群交流!

如有帮助,欢迎多多交流 ^_^

微信打赏

支付宝打赏

Ioc源码剖析
Ioc应用
  • 文章目录
  • 站点概览
古道长亭

古道长亭

Always remember that your present situation is not your final destination. The best is yet to come.

226 日志
57 分类
104 标签
GitHub Gitee
友情链接
  • 古道长亭的BOOK
  • JAVA学习
标签云
  • Mysql
  • 搜索引擎
  • Mybatis
  • 容器
  • 架构
  • 消息队列
  • Flink
  • Sharding sphere
  • 流处理
  • 缓存
  • 1.服务调用
  • 2.实现方式
    • 2.1 HTTP 应用协议的通信框架
    • 2.2 rpc框架
  • 3.跨域调用
    • 3.1 跨域
    • 3.2 常见解决方案
© 2019 - 2024 京ICP备19012088号-1
0%