rpc

资料搜集-JAVA系统的梳理知识12-Dubbo

こ雲淡風輕ζ 提交于 2020-01-25 03:18:54
本文是作者根据官方文档以及自己平时的使用情况,对 Dubbo 所做的一个总结。如果不懂 Dubbo 的使用的话,可以参考我的这篇文章[《超详细,新手都能看懂 !使用SpringBoot+Dubbo 搭建一个简单的分布式服务》](https://mp.weixin.qq.com/s?__biz=MzU4NDQ4MzU5OA==&mid=2247484706&idx=1&sn=d413fc17023482f67ca17cb6756b9ff8&chksm=fd985343caefda555969568fdf4734536e0a1745f9de337d434a7dbd04e893bd2d75f3641aab&token=1902169190&lang=zh_CN#rd) Dubbo 官网:http://dubbo.apache.org/zh-cn/index.html Dubbo 中文文档: http://dubbo.apache.org/zh-cn/index.html <!-- MarkdownTOC --> - [一 重要的概念](#一-重要的概念) - [1.1 什么是 Dubbo?](#11-什么是-dubbo) - [1.2 什么是 RPC?RPC原理是什么?](#12-什么是-rpcrpc原理是什么) - [1.3 为什么要用 Dubbo?](#13-为什么要用-dubbo)

Dubbo框架设计-分层设计思想

£可爱£侵袭症+ 提交于 2020-01-24 19:58:38
目录 整体设计 各层说明 config 配置层: proxy 服务代理层: registry 注册中心层: cluster 路由层: monitor 监控层: protocol 远程调用层: exchange 信息交换层: transport 网络传输层: serialize 数据序列化层: 关系说明 模块分包 依赖关系 调用链 暴露服务时序 引用服务时序 领域模型 基本设计原则 整体设计 图例说明: 图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口,位于中轴线上的为双方都用到的接口。 图中从下至上分为十层,各层均为单向依赖,右边的黑色箭头代表层之间的依赖关系,每一层都可以剥离上层被复用,其中,Service 和 Config 层为 API,其它各层均为 SPI。 图中绿色小块的为扩展接口,蓝色小块为实现类,图中只显示用于关联各层的实现类。 图中蓝色虚线为初始化过程,即启动时组装链,红色实线为方法调用过程,即运行时调时链,紫色三角箭头为继承,可以把子类看作父类的同一个节点,线上的文字为调用的方法。 各层说明 config 配置层: 对外配置接口,以 ServiceConfig, ReferenceConfig 为中心,可以直接初始化配置类,也可以通过 spring 解析配置生成配置类 proxy 服务代理层: 服务接口透明代理,生成服务的客户端

SOAP

血红的双手。 提交于 2020-01-24 06:27:59
SOAP(Simple Object Access Protocol)简单对象访问协议是在分散或分布式的环境中交换信息的简单的协议,是一个基于XML的协议。它包括四个部分:SOAP封装(envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;SOAP编码规则(encoding rules),用于表示应用程序需要使用的数据类型的实例; SOAP RPC表示(RPC representation),表示远程过程调用和应答的协定;SOAP绑定(binding),使用底层协议交换信息。 来源: https://www.cnblogs.com/goodbye305/archive/2008/06/23/1228084.html

WebService与使用风格RPC/SOA/REST

陌路散爱 提交于 2020-01-24 06:25:55
一 webservice Web Services 可使您的应用程序成为 Web 应用程序。Web Services 通过 Web 进行发布、查找和使用。通过使用 Web Services,您的应用程序可以向全世界发布信息,或提供某项功能。 1) 什么是Web Services? Web Services 是应用程序组件 Web Services 使用开放协议进行通信 Web Services 是独立的(self-contained)并可自我描述 Web Services 可通过使用UDDI来发现 Web Services 可被其他应用程序使用 XML 是 Web Services 的基础 2)它如何工作? 基础的 Web Services 平台是 XML + HTTP。 HTTP 协议是最常用的因特网协议。XML 提供了一种可用于不同的平台和编程语言之间的语言。 Web services 平台的元素: •SOAP (简易对象访问协议) •UDDI (通用描述、发现及整合) •WSDL (Web services 描述语言) 3)工作过程,如图: 二 SOAP SOAP 是指简单对象访问协议(simple object access protocal)。 SOAP是基于 XML 的简易协议,可使应用程序在 HTTP 之上进行信息交换。或者更简单地说:SOAP

Spark RPC

懵懂的女人 提交于 2020-01-23 13:02:37
Spark RPC是spark个模块之间通信的基础,之前采用的事akka模型,在1.6之后基于netty编写了类似于akka的通信框架. spark RPC涉及到的类图如下 RpcEnv是RPC模块中的主要的抽象类,其中定义了RPC调用涉及的主要对象和方法。RpcEnv负责注册维护RpcEndpoint和RpcEndpointRef RpcEndPoint:负责消息处理的类,根据收到的消息来决定调用哪个函数,主要包含receive和receiveAndReply两个方法 RpcEndpintRef:远程RpcEndpoint对应的引用,想对应的RpcEndpoint发送消息 RpcAddress:维护RPC环境的地址和端口号 RpcCallContext:在RpcEndpoint中使用,RpcEndpoint处理完信息后,调用RpcCallContext返回信息或者错误 LocalNetty RpcCallContext:当sender和receiver在同一进程中使用 RemoteNetty RpcCallContext:当sender和receiver不在同一进程中 来源: https://www.cnblogs.com/chengwuyouxin/p/9544167.html

【代码篇】从零开始一步步搭建自己的golang框架(五)

僤鯓⒐⒋嵵緔 提交于 2020-01-22 23:12:00
上篇文章讲到数据库和redis连接的初始化已经完成,接下这篇文章会比较重要一点,我们要启动一个http服务和一个rpc服务,同时抽象出一层数据处理层来封装接口。 开启http服务 老规矩,先添加配置,顺便把rpc的配置也写进去,config.json: "http_config": { "addr": ":8080" }, "rpc_config": { "addr": ":8081" } config.go: type HttpConfig struct { Addr string `json:"addr"` } type RpcConfig struct { Addr string `json:"addr"` } 接着,来看看process/http/http.go的内容: package http import ( "github.com/gin-gonic/gin" "go.uber.org/zap" "os" ) var engine *gin.Engine //启动http服务 func StartHttpServer(addr string) { engine = gin.Default() Route() if err := engine.Run(addr); err != nil { zap.Error(err) os.Exit(1) } } //路由 func

linux点滴:NFS

百般思念 提交于 2020-01-22 08:05:56
介绍 NFS,Network File System,网络文件系统。主要功能是通过网络让不同的主机系统间共享资源,类似于windows下的文件共享。适用于互联网中小型企业。 工作原理 客户端发送请求 客户端的RPC服务通过111端口向服务端的RPC服务发送请求 服务端的RPC服务找到对应的端口映射,返回给客户端的RPC服务。 客户端获取端口,与服务端建立连接。 部署 准备环境 系统 角色 主机名 IP地址 CentOS 6.7 X86_64 服务端 nfs01 172.16.1.31 CentOS 6.7 X86_64 客户端 web01 172.16.1.8 #服务端nfs01 [root@nfs01 ~]# cat /etc/redhat-release CentOS release 6.7 (Final) [root@nfs01 ~]# uname -r 2.6.32-573.el6.x86_64 #客户端web01 [root@web01 ~]# cat /etc/redhat-release CentOS release 6.7 (Final) [root@web01 ~]# uname -r 2.6.32-573.el6.x86_64 #客户端web02 [root@web02 ~]# cat /etc/redhat-release CentOS release 6.7

微服务(概念篇):什么是微服务?一篇文章让你彻底搞明白

落爺英雄遲暮 提交于 2020-01-21 18:29:07
目录 前言 一、微服务介绍 1.什么是微服务 微服务由来 为什么需要微服务? 3.1 早期的单体架构带来的问题 3.2 微服务与单体架构区别 3.3 微服务与SOA区别 微服务本质 什么样的项目适合微服务 微服务折分与设计 6.1 微服务设计原则 微服务优势与缺点 7.1 特性 7.2 特点 7.3 缺点 微服务开发框架 Sprint cloud 和 Sprint boot区别 二、微服务实践先知 客户端如何访问这些服务?(API Gateway) 服务之间如何通信?(服务调用) 这么多服务怎么查找?(服务发现) 服务挂了怎么办? 微服务需要考虑的问题 三、微服务重要部件 微服务基本能力 服务注册中心 2.1 zookeeper服务注册和发现 负载均衡 3.1 负载均衡的常见策略 容错 4.1 容错策略 熔断 限流和降级 SLA API网关 多级缓存 超时和重试 线程池隔离 降级和限流 网关监控和统计 前言 到底什么是微服务?为什么要用微服务?微服务主要来做一些什么?微服务有哪些优势?什么样的服务属于微服务?本文所有资料来源网络,我只是整理一下,总结一下。仅供参考。 一、微服务介绍 1.什么是微服务 在介绍微服务时,首先得先理解什么是微服务,顾名思义,微服务得从两个方面去理解,什么是"微"、什么是"服务", 微,狭义来讲就是体积小、著名的"2 pizza 团队"很好的诠释了这一解释

Problem with gRPC setup. Getting an intermittent RPC unavailable error

a 夏天 提交于 2020-01-21 03:21:07
问题 I have a grpc server and client that works as expected most of the time, but do get a "transport is closing" error occasionally: rpc error: code = Unavailable desc = transport is closing I'm wondering if it's a problem with my setup. The client is pretty basic connection, err := grpc.Dial(address, grpc.WithInsecure(), grpc.WithBlock()) pb.NewAppClient(connection) defer connection.Close() and calls are made with a timeout like ctx, cancel := context.WithTimeout(ctx, 300*time.Millisecond) defer

Dubbo(六)------为什么要用Dubbo

社会主义新天地 提交于 2020-01-21 02:46:09
众所周知,Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架。 从这段话中,我们提取 关键字:分布式、RPC 一、为什么需要使用分布式系统 1、单机系统 项目工程比较简单,可能全部代码就在一个工程中, 或者按照模块来划分工程结构。 将项目放入tomcat就可以直接运行。用户流量增多,那么就多部署几台tomcat服务器,外层做负载均衡,实现分流。如果一台服务器挂了,系统还可以正常使用,相对实现“高可用”。 弊端: 实现项目结构比较单一的项目,如何项目开发团队上10人,系统代码具有100万行代码,几十人共同维护一个项目,涉及冲突会让人崩溃。并且项目新模块A需要上线,需要测试全部模块才可以保证系统正常,很容易造成新模块影响原有功能。每次发布需要全部代码重新发布,费事又费力。 2、分布式系统 分布式系统:庞大系统分而治之。 在我的理解中,分布式系统就是一个不断拆分的过程。把一个大整系统分划为多个小的子系统。众多的子系统合在一起便过程整个系统。 一个大的系统拆分为很多小的系统,甚至很多小的服务,然后几个人组成一个小组就专门维护其中一个小系统,或者每个人维护一个小服务。 简单来说,就是分而治之,这样每个人可以专注维护自己的代码。 不同的小系统自己开发、测试和上线,都不会跟别人耦合在一起,可以自己独立进行,非常的方便,大大简化了大规模系统的开发成本。 当然使用分布式