简介:本文深入剖析有赞统一接入层架构的演进历程,从初期单点架构到分布式集群,再到云原生弹性架构,详细阐述各阶段技术选型、挑战与解决方案,为开发者提供可借鉴的架构设计思路。
有赞作为电商SaaS领域的领军企业,其业务覆盖微商城、零售、教育等多个场景,日均请求量达数十亿次。早期接入层采用单点Nginx+Lua架构,虽能满足基础路由需求,但在高并发、多协议支持、安全防护等方面逐渐暴露瓶颈。架构演进的核心目标包括:
初期接入层基于Nginx+OpenResty(Lua脚本)实现,功能包括:
ngx.shared.DICT
实现)。引入Envoy作为数据面,Consul作为服务发现,构建分布式接入层集群:
// 示例:Envoy配置片段(简化版)
static_resources: {
listeners: [{
address: { socket_address: { address: "0.0.0.0", port_value: 80 }}
filter_chains: [{
filters: [{
name: "envoy.filters.network.http_connection_manager"
typed_config: {
"@type": "type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager"
route_config: {
virtual_hosts: [{
name: "default"
domains: ["*.youzan.com"]
routes: [{
match: { prefix: "/" }
route: { cluster: "backend_service" }
}]
}]
}
}]
}]
}]
}]
clusters: [{
name: "backend_service"
connect_timeout: 0.25s
type: "EDS"
eds_cluster_config: { eds_config: { ads: {} }}
lb_policy: "ROUND_ROBIN"
}]
}
关键改进:
挑战:
基于Istio构建Service Mesh,将接入层与业务服务解耦:
Gateway
资源定义入口规则;VirtualService
的mirror
字段实现灰度发布;TrafficPolicy
动态调整流量比例。示例:Istio流量镜像配置
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: order-service
spec:
hosts:
- order.youzan.com
http:
- route:
- destination:
host: order-service.prod.svc.cluster.local
subset: v1
weight: 90
mirror:
host: order-service.canary.svc.cluster.local
mirror_percentage:
value: 10
开发Envoy Operator,实现接入层Pod的自动扩缩容:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: envoy-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: envoy-deployment
minReplicas: 10
maxReplicas: 100
metrics:
- type: Pods
pods:
metric:
name: envoy_server_total_requests
target:
type: AverageValue
averageValue: 5000
构建多层次安全防护:
net.core.somaxconn
、net.ipv4.tcp_max_syn_backlog
等参数。有赞统一接入层的演进,本质是从“功能实现”到“弹性基础设施”的跨越。通过分阶段引入分布式、云原生技术,不仅解决了高可用、弹性扩展等核心问题,更为业务创新提供了坚实的技术底座。对于开发者而言,关键在于:
未来,随着Serverless、边缘计算等技术的普及,接入层架构将进一步向“无服务器化”“全球化”演进,这既是挑战,也是机遇。