_ __ __ __
/ | / /__ / /_ __ __/ /___ _
/ |/ / _ \/ __ \/ / / / / __ `/
/ /| / __/ /_/ / /_/ / / /_/ /
/_/ |_/\___/_.___/\__,_/_/\__,_/
一键安装部署
Nebula是一个灵活,高性能的面向业务的IoC分布式网络框架,专为生产环境而设计。Nebula以C++语言开发基于事件驱动型的TCP协议,支持包括proto3、http、https、websocket多种应用层通信协议。开发Nebula框架的目的是提供一种基于C++快速构建高性能的分布式服务。Nebula自身核心代码只有2万行左右(不计算proto文件生成的代码)。
Nebula可以作为单个高性能TCP服务器使用,不过基于Nebula搭建分布式服务才能真正体现其价值。为了能快速搭建分布式服务,开发了包括各种类型服务的NebulaBootstrap解决方案。
Nebula是一个产线级的框架和分布式解决方案项目,适用于即时通讯、数据采集、实时计算、消息推送等应用场景,也适用于web后台服务。Nebula已有即时通讯、埋点数据采集及实时分析的生产应用案例,很快将有一个面向庞大用户群的推荐引擎产线应用案例。
把Nebula用于学习交流也不错,Bwar欢迎更多有兴趣的开发者加入到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++开发微服务应用。
-
开发组件说明
- Actor组件概述
- Cmd和Module组件
- Step组件
- Session组件
- Context组件
- Model组件
- Chain组件
- Actor类
Nebula 完成的文档在 Nebula参考手册。
- protobuf
- libev 或 libev
- hiredis
- crypto++
- http_parse 已集成到 Nebula/src/util/http
- CJsonObject 已集成到 Nebula/src/util/json
- NebulaBootstrap Nebula自动构建和部署
- NebulaBeacon Nebula集群管理、注册中心、配置管理
- NebulaInterface Nebula集群http接入服务
- NebulaLogic Nebula集群逻辑服务
- NebulaMydis Nebula集群存储代理(redis)
- NebulaDbAgent Nebula集群数据库代理(mysql)
- NebulaLogger Nebula集群分布式日志服务
- NebulaAccess Nebula集群私有应用协议接入服务
- NebulaDynamic Nebula集群动态加载插件
- Nebcli Nebula集群命令行管理工具
- 完成开发指南
- NebulaMydis数据代理服务
- 应用Nebula开发IM项目
- 增加插件so版本控制动态卸载和加载即时生效功能
- 优化反射动态创建Actor
- 增加Model模型组件
- 增加Chain调用链组件
- 简化Context上下文组件
- 减少Actor继承层次,优化Actor相关代码
- 兼容gcc4.8编译器(从这个版本起无须另行安装5以上gcc版本,可以无障碍无等待地在个人机器上部署和测试,也为应用于生产铺平道路。之前Bwar的埋点数据采集和实时分析的生产项目Nebio是在服务器上安装了gcc6才部署的。)
- 增加CPU亲和度设置以支持将Worker进程绑定CPU功能。(有人测试过繁忙的多核服务器,绑定CPU比不绑定CPU有20%左右的性能提升,现在Nebua可以让开发者自行选择是否绑定CPU)
- 增加动态库(业务插件)卸载功能。(支持不停服务升级的重要功能)
- 增加配置管理,NebulaBeacon为配置中心,使用说明见命令行管理工具Nebcli的get和set命令。
- NebulaBeacon增加节点状态信息查询,注册中心主从高可用选举
- NebulaInterface提供HelloWorld示例。
- 增加worker进程意外终止并被Manager重新拉起时的节点信息下发
- 增加ipv6支持
- 分布式日志服务测试通过
- 增加https支持
- http通道增加keep alive设置
- 用proto3中的map将http header替换掉原repeated数据类型
- Channel增加设置对称加密密钥接口
- 缺陷修复
- 用C++14标准改写整个项目
- 用模板实现反射机制创建actor实例
- 增加分布式追踪日志
- 第一个可运行并http测试通过的版本
Bug、修改建议、疑惑都欢迎提在issue中,或加入qq群809075299交流。