当前位置: 首页 > 软件库 > 程序开发 > 微服务框架 >

gRPC-Nebula

微服务框架
授权协议 Apache
开发语言 Java C/C++
所属分类 程序开发、 微服务框架
软件类型 开源软件
地区 国产
投 递 者 丌官嘉良
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

东方证券宣布开源其基于 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

  • 微服务框架 授权协议: Apache 开发语言: Java C/C++ 操作系统: 跨平台 收录时间: 2019-07-15 提 交 者: 红薯   东方证券宣布开源其基于 gRPC 框架开发的微服务框架 gRPC-Nebula。据了解,gRPC-Nebula 框架具有服务自动注册、服务发现、链路跟踪、服务治理等特性,为证券行业自身所特有的痛点提供了解决方案。 目前提供 Java 和 C++ 两种

  • 前言 最近开发了一个基于grpc协议的微服务框架grpc-nebula的一个项目,此微服务框架已经开源但是比较小众,今天就简单分享下这个微服务架构。grpc-nebula分为java版本和c++版本,本次就只分享java版本的。虽然大家在工作中用不到这个框架,但是多了解些并且和自己所用框架进行对比,能够加深自己对微服务框架的理解程度以及拓宽知识的宽度。 微服务框架介绍 grpc简介 grpc是一个

 相关资料
  • 本文向大家介绍微服务哪些框架相关面试题,主要包含被问及微服务哪些框架时的应答技巧和注意事项,需要的朋友参考一下 Dubbo,是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点。阿里巴巴近几年对开源社区的贡献不论在国内还是国外都是引人注目的,比如:JStorm 捐赠给 Apache 并加入 Apache 基金会等,为中国互联网人争足了面子,使得阿里巴巴在国人眼里已经从电商升级为一

  • gRPC 官方文档中的 quickstart - php, 很容易给 PHPer 产生误导, 按照官网的文档, 运行起来 gRPC 服务就很麻烦, 更不用说整套的 RPC 服务了. 推荐阅读 tech| 再探 grpc, 讲解了在 PHP 中实现 gRPC 相关基础知识. hyperf 对 gRPC 支持做了更进一步的封装, hyperf-skeleton 项目为例, 详细讲解整个步骤: .pro

  • ketchup 是一个基于 dotnet core 的微服务框架。网关:兼容 kong,rpc:grpc支持远程调用。

  • Adnc 是一个轻量级的 .Net Core 微服务开发框架,同时也适用于单体架构系统的开发。支持经典三层与DDD架构开发模式、集成了一系列主流稳定的微服务配套技术栈。

  • Seata 的事务上下文由 RootContext 来管理。 应用开启一个全局事务后,RootContext 会自动绑定该事务的 XID,事务结束(提交或回滚完成),RootContext 会自动解绑 XID。 // 绑定 XID RootContext.bind(xid); // 解绑 XID String xid = RootContext.unbind(); 应用可以通过 RootCon

  • 对于一个项目,我想使用Spring Boot设置一个小型微服务场景,其中有一个向客户端公开REST和GraphQL的API网关、一个Eureka服务注册表和三个服务。由于性能原因,我希望API网关后面的所有服务都可以谈论gRPC,但同时仍然会公开一个额外的REST API。有没有一种干净的方法可以在相同的业务逻辑上实现这两种类型的接口?网关如何将客户端的HTTP请求代理到gRPC请求?