产品白皮书
# 引言
随着互联网技术应用的持续高速发展,行业软件研发模式从单体架构到分布式,再到如今的微服务架构,越来越高度依赖应用与服务的“入口”。传统的应用“入口”主要包括硬件负载均衡器、软件负载均衡器以及一些带反向代理功能的 Web 服务器,传统的应用中间件一般也带一个内嵌的负载均衡器,如金蝶 Apusic 应用服务器于 2000 年面市时就自带了一个基于 Java 开发的负载均衡器,起到统一应用入口、集群调度、负载均衡器等作用。然而,在云计算、微服务时代,传统技术已不再适应新的应用模式,负载均衡器技术及产品也面临升级换代的挑战。
在云和微服务架构下,负载均衡究竟发生了什么变化?首先,传统负载均衡通常只能解决单一应用的入口问题,而云环境带来入口的多样性,我们面临的不再是某个应用的单一入口,而是混合了不同应用、不同服务的复杂入口;其次,传统负载均衡往往是基于URL 的粗粒度的负载调度处理,而云环境下往往是基于组件级、服务级的的精细化调度,如需要精确考虑不同服务之间的编排和调用链关系;最后,传统负载均衡处理能力相对有限,达到 10K 级请求已算不错,而云环境下往往要求处理能力达到 100K 级甚至 1000K 级请求以上。
因此,金蝶天燕于启动了负载均衡器产品的升级改造, 采用全新的技术路线和技术架构,并从内嵌在AAS应用服务器的模块发展为独立的负载均衡软件产品。
# 产品概述
# 产品名称
金蝶Apusic负载均衡器软件V2.0,简称ALB,英文全名为:Apusic Load Balancer
# 产品定位
ALB能够应对大规模的集群、云平台在面向客户端提供服务时,对客户端访问请求和流量管理的需求,实现访问请求的验证、处理、转换和分发等操作,从而隔离客户端访问对提供服务的应用系统、平台以及资源的直接影响,达到对服务集群访问流量控制、访问管理和负载均衡的目的。
# 产品的受众
- 业务具有高并发场景并需要负载均衡的企业。
- 分布式、微服务架构的应用开发商。
- 业务与服务多,需要统一管理网络出入口。
# 核心能力
- 负载均衡:ALB能够⽀持轮询、带权轮询、一致性哈希等主流负载均衡算法,⽀持⾯向⽆状态服务和有状态服务提供⾮亲和性/亲和性的负载均衡场景,⽀持 HTTP、HTTPS 的反向代理,以及对 TCP/UDP、gRPC、MQTT、Dubbo、Websocket 等协议的代理模式,能够应对在互联⽹、移动互利⽹、物联⽹等复杂环境下对应⽤集群的负载均衡需求。
- 动态上游:ALB⽀持对负载均衡上游的动态配置,通过统⼀配置中⼼实现对上游服务的即时发现,从⽽⽀撑应⽤服务规模的动态伸缩和⾼可⽤。
- 流量管理:ALB提供了完善的流量管理机制,可根据服务响应状态对上游服务访问进⾏熔断操作,并⽀持按流量、⽤户、客户端、引⽤者(Referer)、域名等条 件对服务的访问进⾏管理。
- 插件扩展:ALB提供了丰富的场景化插件,能够在路由转发、流量管理、运维、安全等⽅⾯提供⽀持,同时允许⽤户根据需求和场景灵活扩展插件。
- 控制中⼼:ALB提供了图形化的管理控制中⼼,⽤户可通过管理控制中⼼对负载均衡器中的路由、上游服务和插件进⾏管理和配置。
# 产品优势
# 多种的负载均衡算法
支持轮询、带权重轮询、一致性哈希、最小连接数、指数加权移动平均的负载均衡算法
# 全局动态能力
全局动态能力指的是:配置修改提交即生效,无需重启服务,不影响现有服务。ALB的全部功能都支持动态能力,包括负载均衡的路由、上游、插件等全生命周期的配置全局动态。
# 高度可扩展
ALB支持使用 Lua、Java/Golang 语言编写流量管理和代理功能的插件。
# 全平台快速部署
ALB支持云原生的多种基础设施/平台资源、信创平台 X86、Arm 等多种服务器中,一键快速部署启动
# 功能架构
ALB的过程划分为流量处理和请求转发两个阶段。它能够捕获外界的访问请求,通过对访问请求的处理实现对上游服务的安全验证、流量管理、监控⽇志和负载均衡,从⽽⽀撑⼤规模复杂⽹络应⽤运⾏和服务供应,保障应⽤的性能、安全性和可靠性。
# 功能架构
ALB通过流量处理和请求转发对访问请求执⾏代理操作。在流量处理过程中,ALB可以⽀持以插件的⽅式完成对访问请求的处理,通过插件的⽅式建⽴请求的处理流程,从⽽实现认证、⽇志、监控、协议转换、安全、流量控制和请求报⽂转换等处理逻辑的编排和应⽤;在请求转发过程中,ALB可以按照处理结果,基于特定的负载分配算法,将处理后的访问请求转发给上游的服务,完成对访问请求的代理操作。
# 主要功能
# 全平台
- 支持信创平台: 能够在主流信创国产化平台上运行,支持x86、ARM64等多种服务器指令集。
- 云原生: 支持云原生的部署方式,可在多种基础设施/平台资源中部署。
# 多协议支持
- HTTP(S) 代理: 动态HTTP/HTTPS请求代理,支持从HTTP/HTTPS访问向多种协议/架构的服务端的转换。
- TCP/UDP 代理: 动态 TCP/UDP 连接代理。
- Dubbo 反向代理: 动态代理 HTTP 请求到 Dubbo 后端。
- gRPC 代理:支持gRPC连接代理,可利用ALB的插件能力对gRPC访问请求进行管理。
- 动态 MQTT 代理: 支持用 client_id 对 MQTT 进行负载均衡,同时支持 MQTT 3.1.* 和 5.0 标准 gRPC 反向代理:支持HTTP请求到gRPC API的转换异步协议代理:支持Websocket代理。
- SSL:动态加载 SSL 证书。
- 静态资源代理: 支持代理节点所在静态资源。
- PHP代理: 支持代理php_fcgi协议。
# 动态配置与流量管理
- 配置动态更新:配置和插件动态热更新,无需中断服务。
- 代理请求重写: 支持重写访问请求的host 、uri 、schema 、enable_websocket 、headers 等信息。
- 反向代理输出重写: 支持自定义修改响应内容的status code 、body 、headers等信息函数调用:支持在ALB处理访问请求前/后阶段添加并调用自定义的函数。
- 动态负载均衡:支持有权重的轮询、一致性Hash等负载均衡算法,支持服务端点的即时增减。
- 健康检查:支持服务端点的健康检查,可自动过滤不健康节点服务熔断: 根据服务调用返回的错误次数/比率中断服务镜像代理: 支持对服务端的访问进行镜像操作。
- 流量拆分: 允许用户控制多个上游服务之间的流量配置。
- 流量管理:支持限制速率、限制请求数、限制并发等流量管理策略。
- 批量请求:支持基于HTTP管道的批量HTTP请求。
# 精细化路由
- 路径规则匹配:支持全路径匹配和前缀匹配;支自定义路由匹配函数。
- 灵活的路由条件:用户可以使用 cookie , args 等做为路由的条件,支持各类操作符做为路由的判断条件。
- 支持IPv6:支持使用 IPv6 格式匹配路由。
- 路由生命周期:支持路由的自动过期配置。
- 路由优先级:支持对路由的优先级配置。
# 安全防护
- IP 黑白名单
- Referer 白名单
- 限制速率
- 限制请求数
- 限制并发
- 防御 ReDoS(正则表达式拒绝服务):内置策略,无需配置即可抵御 ReDoS。
- CORS:为你的 API 启用 CORS。
- URI 拦截器:根据 URI 拦截用户请求。
- 请求验证器。
# 运维友好
- 可观测的性能管理: 支持 Apache Skywalking和 Zipkin对性能的可视化追踪和管理。
- 对接外部服务发现:除了内置的 etcd 外,还支持 Consul 和 Nacos 的 DNS 发现模式。
- 监控和指标: 支持与Prometheus以及金蝶Apusic监控平台(AMP)的集成。
- 高可用集群:ALB集群通过统一配置中心确保节点间的一致性,支持节点数量的动态增减。
- 图形化的控制中心:支持对ALB的路由和服务配置和管理。
- 全局规则:允许对所有请求执行插件,比如限流限速等。
- 外部日志记录器:支持将访问日志导出到外部日志管理工具。
# 高度可扩展
- 自定义插件: 允许挂载常见阶段,例如init, rewrite,access,balancer,header filter,body filter 和 log 阶段。
- 插件可以用 Java/Go 编写。
- 自定义负载均衡算法:可以在 balancer 阶段使用自定义负载均衡算法。
- 自定义路由: 支持用户自己实现路由算法。
# 技术特性
# 稳定可靠运行
ALB基于多进程模型,保障某一个请求连接代理出现错误,不影响其他进程;出现异常的进程退出后,其主进程将快速再次创建一个进程保障服务性能不下降,以及多个实例支持共享配置,组件主备或者负载均衡,实现更高的可靠性。
# 支持高并发
ALB通过异步非阻塞机制,结合IO多路复用技术,支持极高的并发。
# 模块化设计
ALB通过解藕请求接入、处理、负载均衡、响应返回的阶段,并嵌入特定逻辑,实现个性化与可支撑微服务流量入口的架构,以及支持Java/go语言编写业务流量管理需求插件。
# 运行环境
# 硬件环境
列举产品部署所需的硬件环境
服务器:通用Linux 服务器,支持华为鲲鹏、飞腾芯片等国产服务器。
内存:8G或以上
硬盘:500GB或以上
网络:千兆或以上
# 软件环境
列举产品部署所需的软件环境
操作系统:统信UOS、麒麟、OpenEuler、Ubuntu、Centos系统、信创专用加密操作系统。
数据库: ETCD 3.14或以上。
# 总结
# 产品优势
全局动态配置
所见所得,提交配置修改即生效,无需重启或重新加载负载均衡器,即实现动态路由、动态上游、动态插件、动态的SSL证书绑定,最终实现动态的负载均衡。
多协议代理
支持完善的网络四层/七层架构协议的代理,覆盖HTTP、HTTPS、TCP/UDP、Dubbo、MQTT、gRPC、Websocket、PHP FastCGI。
全面适配信创环境
稳定高效运行在国产操作系统与硬件架构体系上,其中操作系统包含:UOS、华为OpenEuler、麒麟V10、中科方德等;硬件体系包含:飞腾、鲲鹏、兆芯与海光硬件平台。
高可靠最佳实践
提供负载均衡场景的最佳实践,通过多机高可用架构,以及主备配置数据节点,保障业务的可用性,满足多场景下高可靠的运行要求。
高度可扩展
支持自定义开发插件,可实现在负载均衡的各个阶段嵌入并执行个性化的功能,实现差异化的负载均衡需求。
安全防护
支持多种身份验证能力,包含:IP黑白名单、Referer白名单、限制速率、限制请求数、限制并发、CORS等功能。
# 应用场景
应用服务集群的负载均衡器
ALB与Apusic应用服务器深度集成,支持AAS应用服务器管控台一键启用ALB负载均衡器,支撑运行在AAS上的分布式应用的动态负载均衡,以及主动健康检查,能够及时发现并屏蔽故障服务,保障业务不中断。
网站动静分离
ALB支持本地静态资源代理与多协议后端服务的接入,支撑动静分离架构应用的负载均衡,提高用户访问静态代码或资源的速度,降低对后台服务访问的压力。
网站服务能力水平扩展
ALB拥有动态上游服务接入能力,支持多种负载均衡算法与外部服务发现组件的接入,可支撑业务和网站流量增长带来的高并发场景,达到动态伸缩Web服务规模、实现业务水平扩展效果。
统一流量出入口
ALB支持访问流量的安全验证、限流与限速,支持访问日志的收集与推送,可支撑复杂应用平台出入流量的统一安全验证和管理、访问流量的统计与审计,从而实现从入口对后端访问流量的统一管控。