# bubbo **Repository Path**: abstergo/bubbo ## Basic Information - **Project Name**: bubbo - **Description**: 自研分布式框架 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 8 - **Forks**: 0 - **Created**: 2017-03-30 - **Last Updated**: 2025-07-24 ## Categories & Tags **Categories**: distributed-service **Tags**: None ## README 为啥要用分布式: 1:单独维护,互不影响,上线时,只上线一部分即可,不用全上线, 2:增加吞吐量:多个服务调用一个服务时,eg:user模块,服务之间的负载均衡, 3:资源最大化:让资源最大化计算主要服务, 4:容灾:非重要模块GG,不会影响到主要模块 IO选型: IO模型众多,同步堵塞,同步非堵塞,异步非堵塞,多路复用IO,不同的IO决定着不同的吞吐量。结合大部分业务,主要采用同步IO,服务端采用主从模式, 即,客户端连接完成后,以多线程配合线程池处理实际业务。 网络协议:tcp tcp,udp,http: 主流皆采用tcp,没听说udp,作为同步非堵塞,还是有个确认机制较好,http作为RPC可以,但是吞吐量会下降,因为服务提供端定会做负载均衡,例如nginx, 反向代理,这样就不会直接访问服务,是访问nginx再访问服务,所以就是1+1, 2017-8-14:调通了,只能说功能是ok的,还有好多问题,序列化往后退吧,一看都脑袋疼 2017-8-18:突然发现一个问题,如果是长连接的话,那还咋做负载均衡啊,如果有5个provider,是先弄5个长连接?然后service做负载?,还是长连接时做负载,感觉架构有点问题啊。 2017-8-31:突然又发现一个问题,假设a,b,c一次调用,c有可能拖垮了a,b咋办,原先我想的是有一层localservice分别调用a,b,c,那也不对啊,相当于localservice线程堵塞了,又引出了新技能点,服务升降级,熔断,半熔断(限流),超时处理 2017-9-14:monitor这个东西,看了一下宜信的开源,感觉一般,他那个东西是不侵入代码,做的中间件劫持,就是tomcat中先加载自定义类,个人感觉风险太高,因为监控去干扰主流程不值,不如直接在zk上监控。而且,服务器的各种监控有众多的开源的软件,例如zabbix,没必要去开发,费时费力,springboot这个东西有点皮,找不到实际的项目,