在计算机网络和服务架构中,“东西向流量”(East-West Traffic)和“南北向流量”(North-South Traffic)是用来描述不同类型的数据通信模式的术语。这些术语通常用于区分服务网格内部的服务间通信和服务网格外部的通信。
南北向流量(North-South Traffic)
南北向流量指的是从外部网络到内部网络(或反之)的数据通信。这种流量通常涉及客户端(如用户、外部服务等)与内部服务的交互。
特点:
- 来源:外部客户端或上游服务。
- 方向:从外部到内部(北到南)或从内部到外部(南到北)。
- 处理:通常需要经过负载均衡器、API网关、防火墙等组件。
- 安全性:需要关注身份验证、授权、DDoS防护等问题。
应用场景:
- 用户通过前端网站或移动应用访问后端服务。
- 外部服务调用内部服务提供的API。
- 内部服务向外部服务发送请求(如第三方支付服务)。
东西向流量(East-West Traffic)
东西向流量指的是在内部网络或服务网格内部的服务间通信。这种流量通常发生在微服务架构中,服务之间互相调用形成的服务链。
特点:
- 来源:内部服务实例。
- 方向:横向的服务间通信(东到西或西到东)。
- 处理:通常需要服务发现、负载均衡、健康检查等机制。
- 安全性:需要关注身份验证、授权、加密等问题。
应用场景:
- 微服务架构中的服务间调用。
- 内部服务之间的数据交换。
- 服务网格内部的服务治理。
东西向流量与南北向流量的区别
-
流量来源:
- 南北向流量:通常来源于外部客户端或上游服务。
- 东西向流量:来源于内部服务实例。
-
处理机制:
- 南北向流量:通常需要经过边界设备(如防火墙、负载均衡器)进行处理。
- 东西向流量:通常由服务网格内部的边车代理(如Envoy)进行处理。
-
安全性要求:
- 南北向流量:需要严格的身份验证、授权和防护措施。
- 东西向流量:也需要身份验证和授权,但在某些情况下可能更注重加密通信(如mTLS)。
在服务网格中的应用
在服务网格(如Istio)中,东西向流量和南北向流量的概念被用来区分服务间的通信模式和服务网格的边界通信。
南北向流量处理
在南北向流量处理中,通常需要配置 Gateway
和 VirtualService
来定义入站流量的接入点和路由规则。
东西向流量处理
在东西向流量处理中,通常需要配置 PeerAuthentication
和 AuthorizationPolicy
来定义服务间的身份验证和访问控制策略。
示例配置
南北向流量配置
Yaml
深色版本
# gateway.yaml
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: example-gateway
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "example.com"
# virtualservice.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: example-vs
spec:
hosts:
- "example.com"
gateways:
- example-gateway
http:
- match:
- uri:
prefix: "/api"
route:
- destination:
host: "backend-service"
port:
number: 8080
东西向流量配置
Yaml
深色版本
# peerauthentication.yaml
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
name: default
spec:
mtls:
mode: STRICT
# authorizationpolicy.yaml
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
name: allow-frontend-to-backend
spec:
action: ALLOW
rules:
- from:
- source:
namespace: frontend
service: frontend-service
to:
- operation:
paths: ["/api/*"]
methods: ["GET", "POST"]
总结
南北向流量和东西向流量是区分不同网络通信模式的重要概念。南北向流量通常涉及外部客户端与内部服务的交互,而东西向流量则涉及服务网格内部的服务间通信。在服务网格中,通过配置不同的资源对象(如 Gateway
、VirtualService
、PeerAuthentication
和 AuthorizationPolicy
),可以有效地管理和控制这两种流量。