1 Star 0 Fork 63

xugangbbs / Nebula

forked from Bwar / Nebula 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README_cn.md 10.49 KB
一键复制 编辑 原始数据 按行查看 历史
Bwar 提交于 2021-07-03 16:50 . v1.6.1 release

English | 中文                 Bwar的技术博客.

    _   __     __          __
   / | / /__  / /_  __  __/ /___ _
  /  |/ / _ \/ __ \/ / / / / __ `/
 / /|  /  __/ /_/ / /_/ / / /_/ /
/_/ |_/\___/_.___/\__,_/_/\__,_/
                                一键安装部署

Nebula : 一个强大的IoC网络框架,用于以C++快速构建高并发、分布式和弹性的消息驱动应用程序。

Author Platform License

  1. 概述
  2. 功能
  3. 开始
  4. 文档
  5. 依赖
  6. 相关项目
  7. 开发任务
  8. 版本历史
  9. 交流与反馈

概述

  Nebula是一个灵活,高性能的面向业务的IoC分布式网络框架,专为生产环境而设计。Nebula以C++语言开发基于事件驱动型的TCP协议,支持包括proto3、http、https、http2、grpc、websocket多种应用层通信协议。开发Nebula框架的目的是提供一种基于C++快速构建高性能的分布式服务。Nebula自身核心代码只有2万行左右(不计算proto文件生成的代码)。

  Nebula可以作为单个高性能TCP服务器使用,不过基于Nebula搭建分布式服务才能真正体现其价值。为了能快速搭建分布式服务,开发了包括各种类型服务的NebulaBootstrap解决方案。

  Nebula是一个产线级的框架和分布式解决方案项目,适用于即时通讯、数据采集、实时计算、消息推送等应用场景,也适用于web后台服务。Nebula已有即时通讯、埋点数据采集及实时分析的生产应用案例,很快将有一个面向庞大用户群的推荐引擎产线应用案例。

  Nebula是个proactor模式开发框架,是proactor不是reactor(框架层实现的proactor而不是操作系统支持),应用于IO密集型的项目可以达到非常好的性能。对用惯了RPC框架的人而言,Nebula跟RPC很不一样,不过使用起来并不会比RPC复杂多少,但比RPC性能要高很多;对了解异步回调编程方式的开发者,Nebula是个非常简单的框架,比写常见的异步回调写法要简单多了。Nebula网络框架的技术分享和交流见C++网络框架Nebula

  Nebula从一个从2016年5月至今在生产环境稳定运行的IM底层框架Starship发展而来。Nebula跟Starship框架(也是Bwar一人独立开发)有20%左右的结构相似度,是基于Starship经验全新开发,可以认为Nebula(C++14)是Starship(C++03)的一个高级进化版本,具有Starship的所有优点,没有Starship的所有已发现的缺点,同时提供了更多高级功能。基于Nebula的应用Nebio(埋点数据采集和实时分析项目)在2018年7月底上线并稳定运行。

功能

  • 支持http、protobuf、websocket等协议通信
  • 支持ssl连接加密
  • 微服务框架
  • IoC容器
  • 动态服务更新
  • 服务注册
  • 服务发现
  • 服务监控
  • 配置管理
  • 动态路由
  • 负载均衡
  • 过载保护
  • 故障熔断
  • 故障检测和恢复
  • 数据统计
  • 分层服务
  • 认证和鉴权
  • 分布式日志跟踪

开始

  Nebula是个较完备的项目,也是一个你难得一见的依赖很少的项目,提供了许多开箱即用的功能,并提供了一键安装脚本,NebulaBootstrap,让开发者可以快速部署和体验Nebula。相信部署和体验之后,你会对Nebula产生兴趣,这将会是一个可以广泛应用的框架,基于NebulaBootstrap提供的分布式解决方案可以很方便地用C++开发微服务应用。Nebula的相关项目就是学习和使用Nebula框架最好的例子。

nebula_cluster

文档

Nebula 完成的文档在 Nebula参考手册

依赖

相关项目

开发任务

  • 完成开发指南
  • 原生支持dubbo、mqtt等协议

版本历史

v1.6.1

  • http2分块响应通知改为作用于流而非连接
  • resp解码字符串遇分包时bug修复

v1.6.0

  • 增加用于Worker内通信的SelfChannel,完善actor模型
  • 增加服务状态监控和监控指标获取插件
  • 增加节点之间Manager到Manager通信功能
  • 增加初始连接超时配置
  • 日志组件采用可变模板参数替代va_list,解决日志组件遇到%容易coredump问题
  • 增加一个端口多协议支持
  • 线程ID优化
  • Chain组件优化
  • http2动态表、流优先级bug修复

v1.5.0

  • 增加原生http2服务端和客户端支持
  • 增加原生grpc服务端和客户端支持
  • 优化channel读写
  • 增加绝对路径程序日志

v1.4

  • 以原生的CodecResp替代hiredis客户端
  • 增加redis cluster支持
  • 增加裸数据(RawData)传输支持
  • 增加日志实时flush可配置化
  • 增加IP地址组合节点类型支持
  • Dispatcher分发优化
  • bug修复

v1.3

  • 增加redis连接的非pipeline模式支持
  • 增加线程模式下Worker线程比Loader线程先启动,并把worker线程Id带到Loader
  • 初步合并@nebim写的CodecResp和CodecHttp2
  • 增加第三方cityhash
  • 更新CJsonObject
  • bug修复

v1.2

  • 增加延迟启动功能:因loader加载大量本地数据文件而延迟绑定端口提供服务并向Beacon注册。
  • 线程模式下Manager不再监控和重启不健康的worker和loader服务。

v1.1

  • 增加Worker的线程支持

v1.0

  • 从Manager和Worker类中分离出网络分发功能类Dispatcher和Actor创建及管理类ActorBuilder
  • Manager进程支持Actor类的使用,将Manager系统管理功能分离到Cmd类和Step类中
  • 增加Loader进程类型
  • 优化Actor通过反射动态创建实例
  • 优化http短连接和http数据收发
  • RedisChannel bug修复
  • 增加绑定IP配置
  • 增加压力测试相关接口
  • 增加编解码器自动转换

v0.10

  • 增加插件so版本控制动态卸载和加载即时生效功能
  • 优化反射动态创建Actor

v0.9

  • 增加Model模型组件
  • 增加Chain调用链组件
  • 简化Context上下文组件
  • 减少Actor继承层次,优化Actor相关代码

v0.8

  • 兼容gcc4.8编译器(从这个版本起无须另行安装5以上gcc版本,可以无障碍无等待地在个人机器上部署和测试,也为应用于生产铺平道路。之前Bwar的埋点数据采集和实时分析的生产项目Nebio是在服务器上安装了gcc6才部署的。)
  • 增加CPU亲和度设置以支持将Worker进程绑定CPU功能。(有人测试过繁忙的多核服务器,绑定CPU比不绑定CPU有20%左右的性能提升,现在Nebua可以让开发者自行选择是否绑定CPU)
  • 增加动态库(业务插件)卸载功能。(支持不停服务升级的重要功能)

v0.7

  • 增加配置管理,NebulaBeacon为配置中心,使用说明见命令行管理工具Nebcli的get和set命令。

v0.6

  • NebulaBeacon增加节点状态信息查询,注册中心主从高可用选举
  • NebulaInterface提供HelloWorld示例。

v0.5

  • 增加worker进程意外终止并被Manager重新拉起时的节点信息下发
  • 增加ipv6支持

v0.4

  • 分布式日志服务测试通过
  • 增加https支持
  • http通道增加keep alive设置
  • 用proto3中的map将http header替换掉原repeated数据类型
  • Channel增加设置对称加密密钥接口
  • 缺陷修复

v0.3

  • 用C++14标准改写整个项目
  • 用模板实现反射机制创建actor实例
  • 增加分布式追踪日志

v0.2

  • 第一个可运行并http测试通过的版本

交流与反馈

  Bug、修改建议、疑惑都欢迎提在issue中,或加入qq群809075299交流。

C++
1
https://gitee.com/xugangbbs/Nebula.git
git@gitee.com:xugangbbs/Nebula.git
xugangbbs
Nebula
Nebula
master

搜索帮助