基于thrift的微服务框架

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 前一阵开源过一个基于spring-boot的rest微服务框架,今天再来一篇基于thrift的微服务加框,thrift是啥就不多了,大家自行百度或参考我之前介绍thrift的文章, thrift不仅支持tcp/ip协议的rpc调用,也支持http协议的rest服务调用,同一个项目中甚至可同时支持这二种方式。

前一阵开源过一个基于spring-boot的rest微服务框架,今天再来一篇基于thrift的微服务加框,thrift是啥就不多了,大家自行百度或参考我之前介绍thrift的文章, thrift不仅支持tcp/ip协议的rpc调用,也支持http协议的rest服务调用,同一个项目中甚至可同时支持这二种方式。thrift项目2007年由facebook开源以来,已经有无数成功的应用,完全可以基于这一框架来设计自己的服务架构,示意图如下:

github上我开源了基于thrift的微服务框架,地址:https://github.com/yjmyzz/thrift-service-framework ,其主要特性:

支持rpc调用

支持常规的tcp/ip协议的rpc调用

支持http协议的servlet调用

1、 支持以servlet方式嵌入web容器(tomcat/weblogic/jboss之类)运行

2、 也可以直接用嵌入式jetty直接从jar包运行

支持javascript调用

支持js直接调用,post的json格式为:

以下格式无需手动拼写,thrift生成的js客户端会自动封装及解析

[1,"hello",1,0,{"1":{"str":"jimmy"}}]

返回结果以json格式返回:

[1,"hello",2,0,{"0":{"str":"hello,jimmy"}}]

部署方式

本框架支持以下二种部署方式:

1、 jetty嵌入式模式,mvn package将在target目录下生成可直接运行的thrift-service-framework.jar, 然后java -jar thrift-service-framework.jar

2、 将pom.xml中的<packaging>jar</packaging>中的jar改成war,同时注释掉plug中的maven-shade-plugin,然后mvn package 生成war包,可部署到任何兼容servlet 2.5+的web容器

注:方式1下,默认http端口为8080,如需修改,可在启动时指定端口,例如:java -jar thrift-service-framework.jar -port=9090 , rpc端口在src/main/resources/spring-thrift.xml中修改

测试运行

1、 js调用直接浏览http://localhost:8080/thrift-service-framework/ ,点击页面的call thrift按钮,即可测试js方式直接调用

2、 src/test/java/com/cnblogs/yjmyzz/thrift/proxy/ThriftServiceClientTest.java 里提供了rpc及http方式调用的测试用例

 

目录
相关文章
|
1月前
|
Dubbo 网络协议 应用服务中间件
分布式微服务框架dubbo原理与机制
分布式微服务框架dubbo原理与机制
|
4月前
|
Dubbo Java 应用服务中间件
微服务框架(三)Dubbo性能调优配置
  此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。   本文为服务治理框架Dubbo的特性及泛化实现
|
6月前
|
负载均衡 监控 Dubbo
Dubbo:分布式服务框架
Dubbo是阿里巴巴开源的一款高性能、轻量级的分布式服务框架。它致力于提供可靠的RPC(远程过程调用)和服务治理功能,使开发者能够更容易地构建分布式应用。
49 0
|
监控 Dubbo Java
阿里分布式服务框架Dubbo的架构总结
Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。
2934 0
|
11月前
|
域名解析 负载均衡 Java
微服务框架
框架的名称有nacos、openFeign、gateWay
|
JSON 前端开发 Java
如何基于gRPC沟通微服务框架
本文我们来讲解一下如何使用 gRPC构建微服务,gRPC是一个开源框架,可用于构建可扩展且高性能的微服务并创建服务之间的通信。
241 0
|
消息中间件 存储 编解码
Kratos微服务框架下的消息队列应用
Kratos微服务框架下的消息队列应用,包括了:Kafka、Rabbitmq、mqtt、redis,nats,websocket等。
2243 1
|
JSON Kubernetes Cloud Native
Kratos微服务框架实现权鉴 - OPA
现在,策略通常是它实际管理的软件服务的一个硬编码功能。Open Policy Agent让您可以将策略从软件服务中解耦出来,这样,负责策略的人员就可以从服务本身中分离出来,对策略进行读、写、分析、版本、发布以及一般的管理。OPA还为您提供了一个统一的工具集,使您可以将策略与任何您喜欢的软件服务解耦,并使用任何您喜欢的上下文来编写上下文感知策略。简而言之,OPA可以帮助您使用任何上下文从任何软件系统解耦任何策略。
550 0
|
存储 缓存 关系型数据库
Kratos微服务框架实现权鉴 - Zanzibar
用户的权限管理对每个项目来说都至关重要。不同的业务场景决定了不同的权限管理需求,不同的技术栈也有不同的解决方案。如果你面对一个非常复杂的业务,需要实现极为灵活的权限配置,并且同时对接多个服务怎么办呢?谷歌的一致性全球授权系统Zanzibar可以帮到你。
611 0
Kratos微服务框架实现权鉴 - Zanzibar
|
SQL JSON 自然语言处理
Kratos微服务框架下实现Thrift服务
Thrift是Facebook于2007年开发的跨语言的rpc服框架,提供多语言的编译功能,并提供多种服务器工作模式;用户通过Thrift的IDL(接口定义语言)来描述接口函数及数据类型,然后通过Thrift的编译环境生成各种语言类型的接口文件,用户可以根据自己的需要采用不同的语言开发客户端代码和服务器端代码。2007年由facebook贡献到apache基金,是apache下的顶级项目
345 0