Skip to content

Commit

Permalink
Merge branch 'master' of github.com:brpc/brpc
Browse files Browse the repository at this point in the history
  • Loading branch information
chenzhangyi committed Sep 19, 2017
2 parents d76cc73 + fdea93a commit b5da5ed
Show file tree
Hide file tree
Showing 148 changed files with 1,025 additions and 24,957 deletions.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,14 @@
*.pb.cc
*.pb.h
*.prof
*.so
/output
/test/output

#ignore hidden files
.*
*.swp

#ignore auto-generated files
config.mk
src/butil/config.h
39 changes: 0 additions & 39 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -34,33 +34,16 @@ BUTIL_SOURCES = \
src/butil/third_party/nspr/prtime.cc \
src/butil/third_party/symbolize/demangle.cc \
src/butil/third_party/symbolize/symbolize.cc \
src/butil/third_party/xdg_mime/xdgmime.c \
src/butil/third_party/xdg_mime/xdgmimealias.c \
src/butil/third_party/xdg_mime/xdgmimecache.c \
src/butil/third_party/xdg_mime/xdgmimeglob.c \
src/butil/third_party/xdg_mime/xdgmimeicon.c \
src/butil/third_party/xdg_mime/xdgmimeint.c \
src/butil/third_party/xdg_mime/xdgmimemagic.c \
src/butil/third_party/xdg_mime/xdgmimeparent.c \
src/butil/third_party/xdg_user_dirs/xdg_user_dir_lookup.cc \
src/butil/third_party/snappy/snappy-sinksource.cc \
src/butil/third_party/snappy/snappy-stubs-internal.cc \
src/butil/third_party/snappy/snappy.cc \
src/butil/third_party/murmurhash3/murmurhash3.cpp \
src/butil/allocator/type_profiler_control.cc \
src/butil/arena.cpp \
src/butil/at_exit.cc \
src/butil/atomicops_internals_x86_gcc.cc \
src/butil/barrier_closure.cc \
src/butil/base_paths.cc \
src/butil/base_paths_posix.cc \
src/butil/base64.cc \
src/butil/base_switches.cc \
src/butil/big_endian.cc \
src/butil/bind_helpers.cc \
src/butil/callback_helpers.cc \
src/butil/callback_internal.cc \
src/butil/command_line.cc \
src/butil/cpu.cc \
src/butil/debug/alias.cc \
src/butil/debug/asan_invalid_access.cc \
Expand Down Expand Up @@ -94,29 +77,10 @@ BUTIL_SOURCES = \
src/butil/memory/aligned_memory.cc \
src/butil/memory/ref_counted.cc \
src/butil/memory/ref_counted_memory.cc \
src/butil/memory/shared_memory_posix.cc \
src/butil/memory/singleton.cc \
src/butil/memory/weak_ptr.cc \
src/butil/nix/mime_util_xdg.cc \
src/butil/nix/xdg_util.cc \
src/butil/path_service.cc \
src/butil/posix/file_descriptor_shuffle.cc \
src/butil/posix/global_descriptors.cc \
src/butil/process/internal_linux.cc \
src/butil/process/kill.cc \
src/butil/process/kill_posix.cc \
src/butil/process/launch.cc \
src/butil/process/launch_posix.cc \
src/butil/process/process_handle_linux.cc \
src/butil/process/process_handle_posix.cc \
src/butil/process/process_info_linux.cc \
src/butil/process/process_iterator.cc \
src/butil/process/process_iterator_linux.cc \
src/butil/process/process_linux.cc \
src/butil/process/process_metrics.cc \
src/butil/process/process_metrics_linux.cc \
src/butil/process/process_metrics_posix.cc \
src/butil/process/process_posix.cc \
src/butil/rand_util.cc \
src/butil/rand_util_posix.cc \
src/butil/fast_rand.cpp \
Expand All @@ -139,9 +103,6 @@ BUTIL_SOURCES = \
src/butil/synchronization/cancellation_flag.cc \
src/butil/synchronization/condition_variable_posix.cc \
src/butil/synchronization/waitable_event_posix.cc \
src/butil/sys_info.cc \
src/butil/sys_info_linux.cc \
src/butil/sys_info_posix.cc \
src/butil/threading/non_thread_safe_impl.cc \
src/butil/threading/platform_thread_linux.cc \
src/butil/threading/platform_thread_posix.cc \
Expand Down
16 changes: 8 additions & 8 deletions docs/cn/benchmark.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,27 +16,27 @@ NOTE: following tests were done in 2015, which may not reflect latest status of

## UB

com组(INF前身)在08年开发的RPC框架,在百度产品线广泛使用,已被brpc代替。UB的每个请求独占一个连接(连接池),在大规模服务中每台机器都需要保持大量的连接,限制了其使用场景,像百度的分布式系统都不用UB。UB只支持nshead+mcpack协议,也没怎么考虑扩展性,所以增加新协议和新功能往往要调整大段代码,在实践中大部分人“知难而退”了。UB缺乏调试和运维接口,服务的运行状态对用户基本是黑盒,只能靠低效地打日志来追踪问题,服务出现问题时常要拉上维护者一起排查,效率很低。UB有多个变种:
百度在08年开发的RPC框架,在百度产品线广泛使用,已被brpc代替。UB的每个请求独占一个连接(连接池),在大规模服务中每台机器都需要保持大量的连接,限制了其使用场景,像百度的分布式系统没有用UB。UB只支持nshead+mcpack协议,也没怎么考虑扩展性,所以增加新协议和新功能往往要调整大段代码,在实践中大部分人“知难而退”了。UB缺乏调试和运维接口,服务的运行状态对用户基本是黑盒,只能靠低效地打日志来追踪问题,服务出现问题时常要拉上维护者一起排查,效率很低。UB有多个变种:

* ubrpc:INF在10年基于UB开发的RPC框架,用.idl文件(类似.proto)描述数据的schema,而不是手动打包。这个RPC有被使用,但不广泛。
* ubrpc:百度在10年基于UB开发的RPC框架,用.idl文件(类似.proto)描述数据的schema,而不是手动打包。这个RPC有被使用,但不广泛。

- nova_pbrpc:网盟在12年基于UB开发的RPC框架,用protobuf代替mcpack作为序列化方法,协议是nshead + user's protobuf。
- public_pbrpc:INF在13年初基于UB开发的RPC框架,用protobuf代替mcpack作为序列化方法,但协议与nova_pbrpc不同,大致是nshead + meta protobuf。meta protobuf中有个string字段包含user's protobuf。由于用户数据要序列化两次,这个RPC的性能很差,没有被推广开来。
- nova_pbrpc:百度网盟团队在12年基于UB开发的RPC框架,用protobuf代替mcpack作为序列化方法,协议是nshead + user's protobuf。
- public_pbrpc:百度在13年初基于UB开发的RPC框架,用protobuf代替mcpack作为序列化方法,但协议与nova_pbrpc不同,大致是nshead + meta protobuf。meta protobuf中有个string字段包含user's protobuf。由于用户数据要序列化两次,这个RPC的性能很差,没有被推广开来。

我们以在网盟广泛使用的nova_pbrpc为UB的代表。测试时其代码为r10500。早期的UB支持CPOOL和XPOOL,分别使用[select](http://linux.die.net/man/2/select)[leader-follower模型](http://kircher-schwanninger.de/michael/publications/lf.pdf),后来提供了EPOOL,使用[epoll](http://man7.org/linux/man-pages/man7/epoll.7.html)处理多路连接。鉴于产品线大都是用EPOOL模型,我们的UB配置也使用EPOOL。UB只支持[连接池](client.md#连接方式),结果用“**ubrpc_mc**"指代(mc代表"multiple
我们以在百度网盟团队广泛使用的nova_pbrpc为UB的代表。测试时其代码为r10500。早期的UB支持CPOOL和XPOOL,分别使用[select](http://linux.die.net/man/2/select)[leader-follower模型](http://kircher-schwanninger.de/michael/publications/lf.pdf),后来提供了EPOOL,使用[epoll](http://man7.org/linux/man-pages/man7/epoll.7.html)处理多路连接。鉴于产品线大都是用EPOOL模型,我们的UB配置也使用EPOOL。UB只支持[连接池](client.md#连接方式),结果用“**ubrpc_mc**"指代(mc代表"multiple
connection")。虽然这个名称不太准确(见上文对ubrpc的介绍),但在本文的语境下,请默认ubrpc = UB。

## hulu-pbrpc

INF在13年基于saber(kylin变种)和protobuf实现的RPC框架,hulu在实现上有较多问题:未封装的引用计数,混乱的生命周期,充斥的race conditions和ABA problems,运行质量不可靠,比如短链接从来没有能正常运行过。之后迅速被brpc代替,测试时其代码为`pbrpc_2-0-15-27959_PD_BL`。hulu-pbrpc只支持单连接,结果用“**hulu-pbrpc**"指代。
百度在13年基于saber(kylin变种)和protobuf实现的RPC框架,hulu在多线程实现上有较多问题,已被brpc代替,测试时其代码为`pbrpc_2-0-15-27959_PD_BL`。hulu-pbrpc只支持单连接,结果用“**hulu-pbrpc**"指代。

## brpc

INF在2014年底开发至今的rpc产品,支持百度内所有协议(不限于protobuf),并第一次统一了百度内主要分布式系统的RPC框架。测试时代码为r31906(开发请使用@ci-base保持更新)。brpc既支持单连接也支持连接池,前者的结果用"**baidu-rpc**"指代,后者用“**baidu-rpc_mc**"指代。
INF在2014年底开发至今的rpc产品,支持百度内所有协议(不限于protobuf),并第一次统一了百度主要分布式系统和业务线的RPC框架。测试时代码为r31906。brpc既支持单连接也支持连接池,前者的结果用"**baidu-rpc**"指代,后者用“**baidu-rpc_mc**"指代。

## sofa-pbrpc

大搜在13年基于boost::asio和protobuf实现的RPC框架,有多个版本,咨询相关同学后,确认ps/opensource下的和github上的较新,且会定期同步。故测试使用使用ps/opensource下的版本。测试时其代码为`sofa-pbrpc_1-0-2_BRANCH`。sofa-pbrpc只支持单连接,结果用“**sofa-pbrpc**”指代。
百度大搜团队在13年基于boost::asio和protobuf实现的RPC框架,有多个版本,咨询相关同学后,确认ps/opensource下的和github上的较新,且会定期同步。故测试使用使用ps/opensource下的版本。测试时其代码为`sofa-pbrpc_1-0-2_BRANCH`。sofa-pbrpc只支持单连接,结果用“**sofa-pbrpc**”指代。

## apache thrift

Expand Down
Loading

0 comments on commit b5da5ed

Please sign in to comment.