failsafe

RPC

会有一股神秘感。 提交于 2020-03-11 21:35:06
rpc(Remote Procedure Call) 概念:rpc(远程过程调用)是一个通信协议,该协议允许运行于一台计算机的程序调用另一台计算机的程序。 角色: 消费方: 客户端(client) 负责发起服务的调用。 客户端存根(client stub) 负责与提供方通信: 1>存放着提供方的地址等信息。 2>将客户端的请求参数打包成网络消息,然后(通过socket)发送给提供方。 3>(通过socket)接收提供方返回的消息,并将消息解包然后将执行的结果返回给客户端。 提供方: 服务器(server) 服务提供者、执行者,将执行的结果返回给服务端存根。 服务端存根(server stub) (通过socket)接收消费方发送过来的消息,将消息解包,并调用服务器上的服务,最后将执行结果打包成消息(通过socket)发送给消费方。 RPC请求调用的流程: 请求:消费方 =======> 提供方 客户端 --> 客户端存根 --> 服务端存根 --> 服务器:执行请求。 响应:提供方 =======> 消费方 服务器 --> 服务端存根 --> 客户端存根 --> 客户端:得到请求的结果。 和http请求的对比: 性能: http协议传输的报文比较臃肿,rpc传输的报文相对较小,故rpc的传输效率更高一些。 rpc框架一般都支持多种高效的序列化机制

ZhaoWei-2020-02-06

淺唱寂寞╮ 提交于 2020-02-27 04:55:44
Dubbo(2) 第一层:service 层,接口层,给服务提供者和消费者来实现的 该层是与实际业务逻辑相关的,根据服务提供方和服务消费方的业务设计对应的接口和实现。 第二层:config 层,配置层,主要是对 dubbo 进行各种配置的 配置层(Config):对外配置接口,以ServiceConfig和ReferenceConfig为中心,可以直接new配置类,也可以通过spring解析配置生成配置类。 第三层:proxy 层,服务代理层,无论是 consumer 还是 provider,dubbo 都会给你生成代理,代理之间进行网络通信 服务代理层(Proxy):服务接口透明代理,生成服务的客户端Stub和服务器端Skeleton,以ServiceProxy为中心,扩展接口为ProxyFactory。 第四层:registry 层,服务注册层,负责服务的注册与发现 服务注册层(Registry):封装服务地址的注册与发现,以服务URL为中心,扩展接口为RegistryFactory、Registry和RegistryService。可能没有服务注册中心,此时服务提供方直接暴露服务。 第五层:cluster 层,集群层,封装多个服务提供者的路由以及负载均衡,将多个实例组合成一个服务 集群层(Cluster):封装多个提供者的路由及负载均衡,并桥接注册中心,以Invoker为中心

使用JaCoCo Maven插件创建代码覆盖率报告

Deadly 提交于 2019-12-04 20:41:04
这篇博客文章描述了我们如何使用JaCoCo Maven插件为单元和集成测试创建代码覆盖率报告。 我们的构建要求如下: 运行测试时,我们的构建必须为单元测试和集成测试创建代码覆盖率报告。 代码覆盖率报告必须在单独的目录中创建。换句话说,必须将用于单元测试的代码覆盖率报告创建到与用于集成测试的代码覆盖率报告不同的目录中。 让我们开始吧。 配置JaCoCo Maven插件 我们使用JaCoCo Maven插件有两个目的: 它使我们可以访问JaCoCo运行时代理,该代理记录了执行覆盖率数据。 它根据JaCo​​Co运行时代理记录的执行数据创建代码覆盖率报告。 我们可以按照以下步骤配置JaCoCo Maven插件: 将JaCoCo Maven插件添加到我们的POM文件的插件部分。 为单元测试配置代码覆盖率报告。 配置代码覆盖率报告以进行集成测试。 下面将更详细地描述这些步骤。 将JaCoCo Maven插件添加到POM文件 通过将以下插件声明添加到其“ 插件”部分,我们可以将JaCoCo Maven插件添加到我们的POM文件中: <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.6.3.201306030806</version> </plugin>