Docker Swarm入门(三)Swarm SOA举例

Docker Swarm入门()Swarm SOA举例

 

Docker Swarm带来的最令人兴奋的东西之一是用非常小的经费就能构建一个现代化的,有弹性的以及灵活的架构.用户能够与由Docker主机构建的多样化的集群交互,就好像是与一台集成了现有工具链的主机进行交互一样.用户可以构建她们所需要的全部服务层,之后用一个精美而简单的方式来创建SOA(Service-oriented architecture面向服务的架构).

 

什么是SOA?

 

“面向服务的架构”表达了一种软件架构的概念,它定义为使用服务来满足软件用户的需要.SOA环境中,网络上的节点以独立服务的形式将自己的资源开放给网络上其他参与者,其他参与者按照一种标准的方法使用资源.

 

SOA不是一种具体的架构,它是能够导出某种具体架构的东西,你可以将它叫做一种风格,范式,概念,观点,哲学,或者表示法.这也意味SOA不是一种可以买到的具体工具或框架.他是一种说法,是一种思想.

 

SOA的核心

 

SOA的目的是实现和维护跨越了大型分布式系统的业务流程.

SOA的核心有以下三个

服务,互操作性,松耦合.

 

为什么要引入SOA?
 

咱们先来看看大型分布式系统的特定:

1.大型系统必须能够处理老系统(引入SOA,你很难从头开始设计).

2.大型系统天生就是异质的.它们的目的不同,时间各异,新旧程度相差悬殊;大型系统堆积了不同平台,不同的语言,不同的编程范式.

3.异质性的一大原因就是因为大型系统和他们的数据有非常长的声明周期.在这个过程中,他们不断加入新的系统和流程,开发新的业务功能.

4.大型系统天生就是复杂的.而且,人天生不擅长解决复杂的问题,通常采取的方式就是分解.

5.所有者各异.不同的团队,部门,分支结构或公司都可能在维护系统.

6.冗余度.

 

面对大型系统,SOA接受异质的,SOA正是靠对异质性的承认和主持来处理大系统的.

 

这么长时间依赖,人们一直在探讨如何才能消除异质性,解决继承集成分布式系统碰到的问题.比如,把所有的系统都换成J2EE应用,数据库统一,但是这些方法肯定不行.大型系统天生就是异质的,这是事实.

 

我用了以上这么点内容简单的说明了一下SOA的由来和能够解决的问题.

### IEEE 802.1Q VLAN Tagging Protocol Standard IEEE 802.1Q 是支持虚拟局域网(VLAN)的标准协议之一,通常被称为 Dot1q。该标准定义了一种用于以太网帧的 VLAN 标记系统以及交换机和桥接器处理这些标记帧的操作流程[^2]。 #### 协议结构概述 IEEE 802.1Q 的核心功能在于通过在以太网数据帧中插入特定字段来实现 VLAN 标签的功能。这种标签使得网络设备能够识别哪些流量属于哪个 VLAN,并据此执行转发决策。具体来说: - **Tag Header**: 在原始以太网帧头部增加了一个额外的 4 字节字段作为 VLAN 标签头。这四个字节包含了以下部分: - **Priority Code Point (PCP)**: 使用 3 比特表示优先级级别,范围从 0 到 7,主要用于 QoS 控制。 - **Canonical Format Indicator (CFI)**: 这是一个单比特位,在传统以太网环境中设置为零。 - **VLAN Identifier (VID)**: 使用 12 比特标识具体的 VLAN ID,理论上可以支持多达 4096 个不同的 VLAN(编号从 0 至 4095),其中某些特殊值保留给内部用途或管理目的。 #### 数据包处理机制 当一个带有 VLAN tag 的数据包进入支持 IEEE 802.1Q 的交换机时,它会依据此标签决定如何路由或者过滤该数据流。如果目标端口不属于同一 VLAN,则不会传输至其他无关联的物理接口上;反之亦然——只有相同 VLAN 成员之间才允许互相通信除非经过路由器跨网段访问[^1]。 此外,为了简化管理和配置过程并增强互操作性,还引入了一些辅助性的子协议和服务组件比如 GARP(通用属性注册协议)。GARP 可帮助分发有关 VLAN 成员资格的信息到各个连接节点以便动态调整其行为模式而无需频繁手动干预[^3]。 以下是创建带 VLAN TAG 的 Python 示例代码片段展示如何模拟构建这样的 Ethernet Frame: ```python from scapy.all import Ether, Dot1Q, IP, sendp def create_vlan_packet(src_mac="00:aa:bb:cc:dd:ee", dst_mac="ff:ff:ff:ff:ff:ff", vlan_id=100, src_ip="192.168.1.1", dst_ip="192.168.1.2"): ether = Ether(src=src_mac, dst=dst_mac) dot1q = Dot1Q(vlan=vlan_id) ip_layer = IP(src=src_ip, dst=dst_ip) packet = ether / dot1q / ip_layer return packet packet = create_vlan_packet() sendp(packet, iface="eth0") # Replace 'eth0' with your network interface name. ``` 上述脚本利用 Scapy 库生成包含指定源地址、目的地址及所属 VLAN 编号的数据报文并通过选定的网卡发送出去测试实际效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值