微服务框架 gRPC-Nebula

Apache
Java C/C++
跨平台
2019-07-15
红薯

东方证券宣布开源其基于 gRPC 框架开发的微服务框架 gRPC-Nebula。据了解,gRPC-Nebula 框架具有服务自动注册、服务发现、链路跟踪、服务治理等特性,为证券行业自身所特有的痛点提供了解决方案。

目前提供 Java 和 C++ 两种语言版本:

基于原生的 gRPC 框架做了很多服务治理的功能开发,相当于使 gRPC 从一个简单的 RPC 框架变成了微服务框架。项目从 2018 年 7 月开始建设,2019 年 1 月份一期上线,开发周期 5 个月,今年 6 月份选择开源,时间不到一年。

gRPC 本身对于研发团队是一个新的技术方向,对源代码的熟悉、与业界的交流也都是近一年才开始;另外 gRPC 框架本身并不具有微服务特性,技术框架、注册中心的选型,服务治理的特性开发也都经历了非常多的讨论和取舍;同时微服务框架对于整个券商来说也是新生事物,都会有个逐步接受的过程。

gRPC-Nebula 最早是基于 gRPC1.12 版本做的开发,目前开源的版本基于 1.17.2 版本,业务方面对 Nebula 也提出了很多需求,光是针对 1.12 版本就经过了 6 个版本的迭代优化。

主要有 5 大方面改进:

  • 服务自动注册与发现:采用 zookeeper 为注册中心,服务与注册中心之间保持长连接,具有心跳检测机制,能够周期性的检查服务的状态,确保服务可用性状态一致性,可处理服务进程意外终止,服务器宕机等场景。

  • 服务调用负载均衡:对于多实例的服务的调用,提供对多个服务实例的负载均衡调度,实现负载按照预期的调度算法进行调度执行。

  • 服务流量控制:通过设置请求数或连接数上限,动态实现对各服务接口的流控管理。

  • 服务黑白名单机制:通过设置服务端实例的黑名单、白名单,动态实现请求流程的转移以及服务端实例的访问控制。

  • 服务调用异常处理:当客户端调用服务实例连续多次出错时,框架会自动进行服务实例切换。

gRPC-Nebula 开发框架在东方证券内部应用主要包括:行情中心、日志中心、交易接受中心、运营平台等,7 到 8 个能力中心、产品线在应用,下一步计划内部进行大规模的推广,会使其成为内部的架构标准。

相对于原生 grpc 框架,gRPC-Nebula 主要是引入了注册中心,Java、C++ 嵌入了服务注册发现功能、黑白名单、链接 / 流量控制等安全方面的功能;同时开发了服务治理平台,对服务进行统一管控;结合 APM 系统,利用 kafka 进行整体调用链的信息收集,并使用 MySQL 数据库存储元数据,在治理平台上进行各类数据展示。

性能:与 Dubbo 及原生 gRPC 框架相对 ,gRPC-Nebula 性能差距不大,大概损耗 1% 到 2% 左右。

优势:跨语言,具有服务治理、微服务的特性;

介绍内容来自 InfoQ

的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

Grpc介绍 — Go-Service To PHP-Client

笔者现在公司项目大部分是PHP进行开发,要完成整体微服务化必须要考虑PHP使用上的可行性,Grpc也是支持PHP作为client端发起Grpc请求,但是依赖的扩展等都相对复杂(毕竟不是亲儿子),那么本...

03/06 11:58
194
1
GRPC-java的简单使用

GRPC的简介 (1)在gRPC中客户端可以直接调用运行在不同机器上服务器端的方法,与其它RPC(远程方法调用)一样,定义一个方法,可以被远程使用参数调用,然后通过返回值进行响应。 (2)服务器...

2018/12/14 11:55
67
0
Grpc-Gateway - Grpc兼容HTTP协议文档自动生成网关

因为之前的测试结果让笔者对PHP使用GRPC很失望,如果使用HTTP的方式Guzzle还可以提供并发能力来降低接口消耗,Grpc只能阻塞,但是如果使用HTTP的话对于调用限制和GO调用GO来说不太友好,有没...

03/18 11:21
309
0
gRPC Windows编译应用

## gRPC Windows编译 从github上clone出来后进行cmake的编译,参考上面的文档,需要注意的点: - 必须安装所有的依赖,包括Perl,Go,YASM,Git,CMake - 不要使用--recursive来递归clone,因...

2018/06/20 09:15
507
0
gRPC 小记

创建一个maven项目demo-grpc 包含三个子模块: grpc-common:公共模块定义proto及生成java代码; grpc-server:grpc 服务端; grpc-client:grpc客户端。 其中grpc-server、grpc-client 为s...

2018/09/04 11:48
159
0
go grpc 初步笔记

GRPC 像许多RPC系统一样,gRPC基于定义服务的思想,指定可以使用其参数和返回类型远程调用的方法。 特点 基于 HTTP/2, 继而提供了连接多路复用、Body 和 Header 压缩等机制。可以节省带宽、...

2017/03/30 14:18
243
1
TiKV 源码解析系列文章(八)grpc-rs 的封装与实现

作者: 李建俊 上一篇《gRPC Server 的初始化和启动流程》为大家介绍了 gRPC Server 的初始化和启动流程,本篇将带大家深入到 grpc-rs 这个库里,查看 RPC 请求是如何被封装和派发的,以及它...

06/13 16:17
32
0
Golang 微服务 - 01 环境和工具

注意:主机操作系统为 Windows SDK 下载地址 https://studygolang.com/dl,安装略 验证是否成功,控制台中输入 go env 相关环境变量: 添加环境变量 GOPATH,值为 C:\Users\your-host-name\...

2018/09/15 19:57
90
0
比特币 LND gRPC API中文文档

比特币闪电网络服务节点(Lightning Nework Daemon)的gRPC API文档,中文版由汇智网提供,访问地址:http://cw.hubwiz.com/card/c/lnd-grpc-api/ 如果希望快速掌握区块链应用的开发,推荐汇...

08/14 19:49
0
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部