Skip to content

as-xjc/bamboo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bamboo

bamboo架构, 基于boost库的实现,目前功能还不是很完善。bamboo主要实现高层次框架层的封装,所用到的功能库,boost或第三方有提供的,决不重复轮子,方便以后升级。

特征

  • 模块化的服务封装,简化服务编写
  • 同步/异步redis客户端(基于hiredis,异步使用boost.asio事件触发) redis-asio
  • 基于protobuf的进程内缓存框架(后端使用redis)protobuf-l2cache
  • 基于boost::beasthttp服务端和客户端 -- 计划

结构

框架采用分层来组织代码:

+-----------------   ------------------   ---------------+
|                |   |                |   |              |
|                |   |                |   |              |
|    server      |   |    server      |   |    server    |
|                |   |                |   |              |
|                |   |                |   |              |
+----------------+   +----------------+   +--------------+

+--------------------------------------------------------+
|                                                        |
|                       aio                              |
|                                                        |
+--------------------------------------------------------+

aio

aio 具有两种模式:单线程和多线程。

  • 单线程模式:所有server共用底层的单个aio,进程相当于单线程模式。
  • 多线程模式:基于cpu核心数创建对应的数量的线程(在cpu核心数为1的情况下,会退化成单线程模式)。一个线程分配一个aio,每个server只在一个aio上。理想状态下,一个线程分配一个aio,一个aio管理一个server

如果server之间并没有相互调用,可以通过多线程模式提升各自服务的处理能力

server

每个server内部采用分层组装,数据自底往上层层处理,业务层(business)只需要关心对应实现的protocol层即可。针对各层的特殊需求,可以通过继承对应层的基类进行定制。

+------------------------------+
|                              |
|           business           |
|                              |
+------------------------------+

+------------------------------+
|                              |
|           protocol           |
|                              |
+------------------------------+

+------------------------------+
|                              |
|         ConnManager          |
|                              |
+------------------------------+

+--------------+ +-------------+
|              | |             |
|   acceptor   | |  connector  |
|              | |             |
+--------------+ +-------------+

服务注册和发现

这是基于zookeeper创建的服务发现功能。这是一个可选服务,默认并没开启,可通过以下设置开启

  auto reg = aio->InitRegistry();
  reg->Init("0.0.0.0:2181");
  reg->SetServerType("echo-client", 0, bamboo::distributed::NodeMode::MASTER_MASTER);

例子

查看sample目录下的例子

编译

通过cmake进行编译。编译的时候会自动下载所需要的第三方库,也可以修改tar/CMakeLists.txt里面的URL指定已下好的库路径。

About

基于boost.asio开发的服务端架构库

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published