同步操作将从 Bwar/Nebula 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
Nebula是一个C++语言开发的事件驱动型的TCP协议网络框架,支持包括proto3、http、https、websocket多种应用层通信协议。开发Nebula框架的目的是提供一种基于C++快速构建一个高性能的分布式服务集群。Nebula自身核心代码只有万行左右(不计算proto文件生成的代码)。
Nebula可以作为单个高性能TCP服务器使用,不过基于Nebula搭建集群才能真正体现其价值。为了能快速搭建分布式服务集群,开发了包括各种类型服务的NebulaBootstrap集群解决方案。
Nebula从一个从2016年5月至今在生产环境稳定运行的IM底层框架Starship发展而来。Nebula跟Starship框架(也是Bwar一人独立开发)有20%左右的结构相似度,是基于Starship经验全新开发,可以认为Nebula(C++14)是Starship(C++03)的一个高级进化版本,具有Starship的所有优点,没有Starship的所有已发现的缺点,同时提供了更多高级功能。基于Nebula的第一个应用Nebio(埋点数据采集和实时分析项目)在2018年7月底上线并稳定运行,Bwar还准备开发基于Nebula的IM应用Nebim。
Copyright(c)2018 Bwar
特此免费授予任何人获得本软件及相关文档文件(“软件”)的副本,以无限制地处理本软件,包括但不限于使用,复制,修改和合并,发布,分发,再许可和/或销售本软件的副本,并允许本软件提供给其的人员遵守以下条件:
上述版权声明和本许可声明应包含在本软件的所有副本或主要部分中。
本软件按“原样”提供,不附有任何形式的明示或暗示保证,包括但不限于适销性,适用于特定用途和不侵权的保证。在任何情况下,作者或版权所有者都不承担任何索赔,损害或其他责任,无论是在合同,侵权或其他方面的行为,不论是由软件或其使用或其他交易引起或与之相关的行为。
Nebula以C++11/C++14标准开发,编译器必须完全支持C++11(部分C++14的特性在遇到较低版本的编译器时有预编译开关控制使用C++11标准替代),建议使用5以上gcc版本,推荐使用gcc6。Nebula目前只有Linux版本,暂无支持Linux之外的其他类UNIX系统的时间表。
Nebula在centos6.5(需升级binutils到2.22之后版本)和centos7.4上用gcc6.4编译和测试通过。同时Nebula也在Travis CI持续集成构建项目,构建结果可以直接通过项目首页的跳转过去查看。Travis CI的系统是Ubuntu,编译器是gcc6。
Nebula是个较大型项目(因为要构建一个生产用的分布式集群),有一些外部依赖,鉴于外部依赖的存在和框架本身较难测试,提供了NebulaBootstrap,让开发者可以快速部署和体验Nebula。相信部署和体验之后,你会对Nebula产生兴趣,这将会是一个可以广泛应用的框架,基于NebulaBootstrap提供的分布式解决方案可以很方便地用C++开发微服务应用。
构建前必须保证你的系统已安装好完全支持C++11的编译器,除此之外的所有依赖都会在以下构建步骤中自动解决。
构建步骤:
执行deploy脚本后即完成了Nebula及NebulaBootstrap分布式服务的编译和部署,Nebula的依赖也由deploy在构建Nebula前自动从网上下载并编译部署。虽然不像autoconf、automake那样众所周知,但deploy脚本完成的不止是autoconf、automake的工作。deploy之后的目录结构如下:
构建完成后,可以开始启动server了:
./configure.sh
./startup.sh
server应该已经启动成功了,startup.sh会打印已启动的server。如果没有启动成功,可以到log目录查看原因。执行grep "ERROR" log/和grep "FATAL" log/ 先看看是否有错误,再到具体日志文件查看错误详情。注意,Nebula的默认配置文件对IP单位时间连接次数做了限制,如果在测试量较大发生莫名奇妙的问题,可以修改配置限制,通过查看日志中的WARNING信息通常有助于定位这种不是错误的“错误”。如果server已启动成功,那么可以用postman、curl等做测试,看看结果。
# 只启动NebulaInterface即可完成http的hello测试
curl -H "Content-Type:application/json" -X POST -d '{"name": "Nebula", "address":"https://github.com/Bwar/Nebula"}' http://${your_ip}:16003/hello
# 启动NebulaInterface、NebulaLogic和NebulaBeacon完成分布式服务http的hello测试。
curl -H "Content-Type:application/json" -X POST -d '{"name": "Nebula", "address":"https://github.com/Bwar/Nebula"}' http://${your_ip}:16003/hello_nebula
这个简单的测试可以只启动一个NebulaInterface即可完成,也可以启动分布式服务完成。NebulaBootstrap提供基于集群和单个Server的HelloWorld,基于集群的HelloWorld启动了NebulaBeacon、NebulaInterface、NebulaLogic三个server。下面是一张集群架构图:
Nebula 完成的文档在 Nebula documentation和Nebula wiki,持续更新中。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。