多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # 传统,基于LB模式 ![](https://box.kancloud.cn/c0eb43f518a78ba0509670904b3a5ef5_632x309.png) 有独立的LB,负载均衡 比如:硬件F5,软件nginx 当服务提供方上线会向运维申请域名,然后把域名配置到负载均衡,把域名指向后台服务,服务多份 然后请求来通过DNS解析,解析后到LB上,根据域名负载均衡到后台服务上 **特点** 成本低,需要运维介入,集中的一个LB,LB挂了损失会很大 性能损失,需要服务必须穿透LB # 进程内LB模式 ![](https://box.kancloud.cn/775cf00315d405b94adae2d1ed717319_599x318.png) 把LB移到应用进程内 服务提供方通过服务注册方式(服务注册表),并且定期发送心跳,告诉服务注册表我还活着 <br> 服务消费者用了个客户端,带了服务发现和负载均衡功能,可以用LB调用后台服务 LB定期同步服务注册表中功能 **特点** 把LB移到进程内,性能消耗少 没有集中LB,单点故障少 多语言,为每个消费者都要开发一个这个客户端,升级成本比较高 # 主机独立LB模式 ![](https://box.kancloud.cn/f8a5f8babc09866d8f4117f214c00336_597x262.png) 在前面2个基础做个折中 把LB以独立进程部署,但是在一个主机上 其他和第2个一样 支持多语言,不同语言都可以介入 运维部署比较麻烦,因为每个主机都要部署 <br> 如果是采用容器的部署方式,那么这个LB是部署在容器内被独享呢,还是部署在容器的宿主机中被多个容器中的微服务共享呢? 容器部署的话,建议每个容器部署一个独立进程LB(或者说Service Mesh Proxy),这样隔离性更好,容器内的LB挂了,只影响那个容器,主机上其它容器不受影响。如果容器共享主机上的独立进程LB的话,则如果主机上的LB挂了,则整个主机上的容器全部受影响。