thrift

一、什么是接口测试?

谁说我不能喝 提交于 2020-04-12 14:23:20
什么是接口测试? 接口测试是测试系统组件间接口的一种测试,接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点,测试的重点要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。 接口测试场景: 手机app 客户端软件 web网站API:微信接口、新浪微博接口等等 公司内部系统API:订单接口需要调用用户资金接口查询余额。 软件架构模型: 服务器-客户端: 1:b/s:浏览器服务器模型,通过http协议、websocket协议等进行通讯。 2:c/s:客户端服务器模型。客户端:app、桌面软件 服务器内部: 服务器之间互相调用。 接口测试分类: 1:模块之间的接口:如订单模块下单时,需要去用户资金模块查询余额 2:系统对外部系统提供的接口 3:内部子系统的服务之间的接口 登录: 1:username=lixx&pwd=123456 2:json: {username:'lixx',pwd:'123456'} 3:xml: <root> <username value='lixx'>  <pwd value='123456'> </root> 4:自定义: 定长:lixx 123456 不定长:lixx123456 tcp/ip协议: http、https、websocket、json、xml webservice(soap/wsdll)

RPC框架实现(一) Protobuf的rpc实现

梦想与她 提交于 2020-04-06 03:58:22
概述 RPC框架是云端服务基础框架之一,负责云端服务模块之间的项目调用,类似于本地的函数调用一样方便。常见的RPC框架配带的功能有: 编解码协议。比如protobuf、thrift等等。 服务发现。指服务提供者更新接口后,服务使用者如何知道该接口更新。Protobuf协议使用的是预编译方式,dubbo中使用的是zk作为媒介。 负载均衡。 流量控制、熔断。 运维工具。 常见RPC框架有 谷歌的GRPC。 百度的BRPC。 阿里的dubbo。 脸书的thrift。 腾讯的tars。 本系列主要教大家如何实现RPC框架,使用的语音是C++,协议使用的是protobuf。 基于protobuf的RPC框架 这里不介绍具体protoc的使用方法,网上很多。在完成protoc编译后,会输出protobuf提供的服务框架中,主要有如下几个类 Controller,主要是rpc通信过程的辅助接口,记录错误状态和简单的控制。 Service,指特定的一个服务。在protobuf中,一个服务(service)可以包含多个方法(method),通过service+method可以唯一确定一个过程。 Channel,指使用者和提供者直接的连接通道,是protobuf的核心,但是rpc框架开发者一般不直接调用该类,而是调用下面的stub(桩/存根)。 Stub,客户端使用的存根,通过该类去发起远程过程调用

Thrift 入门之helloWorld

梦想与她 提交于 2020-03-30 04:35:58
不多说,先看项目结构 首先先编写一个hello.thrift的文件 hello.thrift namespace java sawshaw service HelloService { string hello(1:string method, 2:string param) }  注意了,这个namespace是 thrift 根目录下tutorial目录的gen-java目录下的,如果没有这个目录,先cmd到tutorial目录,执行thrift -r --gen java tutorial.thrift。就会看到一个gen-java目录了,而这个sawshaw是我自定义的目录,把这个hello.thrift文件放到和tutorial目录同级,cmd到该目录后执行 thrift -r --gen java hello.thrift 可以看到生成了一个HelloService的java类 把这个类复制到项目下面改下包名就可以了 再写个实现类HelloImpl对客户端的请求作响应 HelloImpl package com.sawshaw.thrift; import org.apache.thrift.TException; import com.sawshaw.thrift.HelloService.Iface; public class HelloImpl

Cassandra最佳实践(3)配置篇

£可爱£侵袭症+ 提交于 2020-03-25 09:14:26
3 月,跳不动了?>>> 本篇文章我们主要介绍cassandra的相关配置,我把cassandra的相关配置中个人觉得相对比较重要的按照集群、节点这个横向维度进行介绍,可能有的配置我不会列在这里,那么具有见cassandra.yaml里面的详细介绍;如何配置cassandra,需要在集群启动的时候在conf目录下面的cassandra.yaml里面进行配置即可。此外我们的配置需要遵守yaml文件配置规则。本处以3.11.4进行介绍 集群维度 cluster_name: //集群的名字,默认是Test Cluster,用''括起来。不同的cluster name的节点无法组成一个集群 num_tokens: 256 //集群中单节点的的分配token数,因为使用vnode,也就是vnode的个数,每个token是随机生成的,此外如果不使用vnode的话,可以使用每个节点预分配一个初始的token,通过下面的配置下; initial_token: //如果集群不想使用vnode的话,需要手工给每个节点进行token配置,手工计算节点的token数,但是扩容的时候建议是成倍扩容。vnode不需要 partitioner: //集群的数据分配算法,也就是常见的一致性hash算法中计算hash的那个模块,其中默认使用org.apache.cassandra.dht

rpc框架thrift

ぃ、小莉子 提交于 2020-03-11 08:11:15
跨语言的rpc框架 新建一个thrift文件 # ping service demoservice PingService { string ping(), ping函数的返回类型是字符串}server.py # -*- coding: utf-8 -*- import thriftpy from thriftpy.rpc import make_server pp_thrift = thriftpy.load("pingpong.thrift", module_name="pp_thrift") class Dispatcher(object): def ping(self): print("ping pong!") return 'pong' def main(): server = make_server(pp_thrift.PingService, Dispatcher(), '0.0.0.0', 6000) print("serving...") server.serve() if __name__ == '__main__': main() client.py # -*- coding: utf-8 -*- import thriftpy from thriftpy.rpc import client_context pp_thrift = thriftpy.load(

[development][thrift] RPC框架 thrift

天大地大妈咪最大 提交于 2020-03-11 06:47:06
一: wiki:https://zh.wikipedia.org/wiki/Thrift 二: 来自IBM的介绍:https://www.ibm.com/developerworks/cn/java/j-lo-apachethrift/ 都是框架原理,不适合快速上手应用。 摘要:   1: thritf 即不是 SOAP,也不是JSON。 目前流行的服务调用方式有很多种,例如基于 SOAP 消息格式的 Web Service,基于 JSON 消息格式的 RESTful 服务等。 三: tutorial https://thrift.apache.org/tutorial/ 很奇怪,还有一个tutorial从官网链接不到:http://thrift-tutorial.readthedocs.io/en/latest/intro.html 摘要: Thrift was originally developed by Facebook and now it is open sourced as an Apache project. 开发动因,以及设计时的思路选择: http://thrift.apache.org/static/files/thrift-20070401.pdf 在设计上,分类为五个方面的问题: type, transport, protocol, versioning,

RPC框架 - thrift 客户端

一笑奈何 提交于 2020-03-11 06:07:33
-------客户端程序 ------ 下载 下载 thrift 源代码包 下载 thrift 的bin包 准备描述文件(使用源代码包的示例文件) \thrift-0.10.0\tutorial\shared.thrift \thrift-0.10.0\tutorial\tutorial.thrift 根据描述文件生成代码 thrift-0.10.0.exe -r -o lib_client --gen php idl-dir/tutorial.thrift 从thrift源代码包中拷贝 php的库 \thrift-0.10.0\lib\php\lib 编写客户端代码 (使用源代码包的示例文件、并修改) \thrift-0.10.0\tutorial\php\PhpClient.php 来源: https://www.cnblogs.com/xiaoyaogege/p/6567394.html

RPC框架 - thrift 服务端

╄→гoц情女王★ 提交于 2020-03-11 05:24:31
-------服务端程序 ------ 下载 下载 thrift 源代码包 下载 thrift 的bin包 准备描述文件(使用源代码包的示例文件) \thrift-0.10.0\tutorial\shared.thrift \thrift-0.10.0\tutorial\tutorial.thrift 根据描述文件生成代码 thrift-0.10.0.exe -r -o lib_server --gen php:server idl-dir/tutorial.thrift 从thrift源代码包中拷贝 php的库 \thrift-0.10.0\lib\php\lib 编写服务端代码(使用源代码包的示例文件、并修改) \thrift-0.10.0\tutorial\php\PhpServer.php 来源: https://www.cnblogs.com/xiaoyaogege/p/6567386.html

干货!腾讯资深架构解密从分布式到微服务

给你一囗甜甜゛ 提交于 2020-03-09 21:31:33
【推荐】2020年最新Java电子书集合.pdf(吐血整理) >>> 前言 “微服务”架构在这几年被广泛传播,变得非常火热,以至于关于微服务架构相关的开源框架和工具都变得越来越活跃,比如: Netlix OSS、Dubbo、Apache Thrift等。Spring Cloud也因为Spring社区在企业应用领域的广泛知名度和强大影响力,受到了广大架构师与开发者的高度关注。 内容简介 分布式架构与微服务平台是当今IT界的关键技术,也是资深软件工程师和系统架构师必须掌握的核心技术。本书以从传统分布式架构迁移到基于容器技术的微服务架构为主线,全面、透彻地介绍了与分布式架构及微服务相关的知识和技术。本书-开始并没有提及分布式的枯燥理论,而是讲述了一段精彩的IT发展史,其中重点讲述了大型机、UNIX 小机器的没落与X86平台的崛起,从而巧妙地引出CPU、内存、网络、存储的分布式演进过程,这恰恰是分布式软件系统赖以运行的“物质基础”。然后简明扼要地介绍了进行系统架构所必需的网络基础,并详细介绍了分布式系统中的经典理论、设计套路及RPC通信,对内存、SOA架构、分布式存储、分布式计算等进行了深度解析,最后详细介绍了全文检索与消息队列中间件,以及微服务架构所涉及的重点内容。本书是Leader-us多年架构经验的倾情分享,主要面向关注分布式架构及微服务,以及有志于成为实力派架构师的IT人士。

SpringBoot + thrift + apache.commons.pool2:在springboot项目上构建thrift客户端连接池

为君一笑 提交于 2020-03-06 16:41:53
目录 一、前言 二、thrift服务端 三、thrift客户端连接池 引入pom依赖 需要池化的对象 对象工厂 对象池 对象池的配置类 Spring配置类 四、使用 五、总结 一、前言 因为工作需要,用thrift实现rpc的时候,考虑到创建、销毁连接的开销比较大,因此想到弄一个thrift客户端连接池,每次使用thrift客户端只需要从池子中获取一个连接,用完后再放回去,这样可以保证程序重复使用少数的几个连接而不需要每次访问都创建和销毁连接, 从而提高系统性能。 网上有部分用org.apache.commons.pool2构建thrift客户端连接池的方法,因为我对springboot不够熟悉,在整合三者的时候遇到点困难,好在最后解决了,在此做个记录。 二、thrift服务端 这部分内容比较简单,网上教程很多,这里简单提一下。 首先是编写thrift文件 struct DebugResponse{ 1: required i32 code; 2: required string message; } service DebugService{ DebugResponse debug(1:string id,2:string data); } 然后用 thrift.exe 自动生成java文件,放在项目中,然后编写业务逻辑 public class DebugServiceImpl