VXLAN, 一种叠加在L3网络上的L2网络

VXLAN, 一种叠加在L3网络上的L2网络,第1张

本篇文章主要介绍了"VXLAN, 一种叠加在L3网络上的L2网络 ",主要涉及到VXLAN, 一种叠加在L3网络上的L2网络 方面的内容,对于VXLAN, 一种叠加在L3网络上的L2网络 感兴趣的同学可以参考一下。

这几天看了下RFC7348,顺便翻译了一下,根据自己理解做了注解

虚拟化及租户隔离

服务器虚拟化增加了对物理网络基础设施的需求,服务器有多个虚机,要求交换机支持更大的MAC地址表。

在数据中心场景下,虚机按照VLAN分组,可能需要成千上万的VLAN,以便用来给为按照VLAN标签分组的虚机分隔流量。但是当前VLAN机制限制最多只能有4096个VLAN。

数据中心需要支持多个租户,每个租户需要分隔的网络域,单独实现分离的网络域不经济。管理员一般基于共享网络进行隔离。各租户独立进行VM的MAC和VLAN的分配,可能在共享的同一个物理网络上,出现MAC和VLAN的冲突。

在虚拟化场景下,还有一个需求是基于第二层在整个数据中心,或者跨数据中心进行扩展,扩展计算,存储和网络资源,此时传统的用来避免路径循环的STP协议,会使得更大数量的失效链路出现。此时,虽然更倾向于使用IP进行物理基础设施的链接,比如,为了实现多路径的扩展,使用ECMP避免生效链路,但是维持虚机间的L2通信依然是需要保留的。

以上场景导致了overlay叠加网络的需求,这个叠加网络用来将来自虚机的携带MAC的流量,封装后通过逻辑隧道传递。VXLAN就是这样的一种实现overlay网络的方式。

和VXLAN相关的常用术语有

ACL      Access Control List 访问控制表

ECMP     Equal-Cost Multipath 等价多路径

IGMP     Internet Group Management Protocol IGMP协议

IHL      Internet Header Length  Internet报文头长度

MTU      Maximum Transmission Unit  最大传输单元

PIM      Protocol Independent Multicast 协议无关的多播

SPB      Shortest Path Bridging  最短路径转发

STP      Spanning Tree Protocol 生成树协议

ToR      Top of Rack  机架交换机

TRILL    Transparent Interconnection of Lots of Links 多链路透明互联

VLAN     Virtual Local Area Network  虚拟LAN

VM       Virtual Machine  虚机

VNI      VXLAN Network Identifier (or VXLAN Segment ID) VXLAN网络标识符

VTEP     VXLAN Tunnel End Point  An entity that originates and/or

terminates VXLAN tunnels  VXLAN隧道端点

VXLAN    Virtual eXtensible Local Area Network  VXLAN

VXLAN Segment    VXLAN段

VXLAN Layer 2 overlay network over which VMs communicate

VXLAN Gateway    VXLAN网关

an entity that forwards traffic between VXLANs

VXLAN应用场景

VXLAN主要聚焦于数据中心基础设施。

STP和VLAN导致的限制

当前L2网络主要使用8021D STP协议在多路径基础上避免环路。但是数据中心管理员将之视为L2网络上的问题,因为STP,需要负担额外超过需要的端口和链路。STP模型下,失去了多路径的弹性。一般引入TRILL(RFC6325)或者SPB(8021AQ)来帮助解决因为STP引起的多路径问题。STP的约束也可以通过将同一机架的服务器配置在相同的L3网络规避,机架内和机架间使用L3交换。但这和虚机之间的L2互联不兼容。

数据中心L2网络中普遍使用VLAN来隔离广播,以太网帧中的12bit VLANID用来将大的L2网络分隔为小的广播域。对小于4096 VLAN 的数据中心来说这样很好,随着虚拟化的流行,压力逐渐增大。更加的,因为STP,某些数据中心限制可以使用的VLAN数。再加上以上讨论的,多租户场景下,对大数量VLAN的需求。

多租户

多租户场景下,云计算要求资源的弹性呈现。最常见的云计算案例是共有云,云服务提供商基于同样的物理基础设施为多个租户提供弹性服务。

租户的网络流量分隔可以基于L2或者L3网络。对L2网络而言,常用VLAN分隔流量,这样租户以自己的VLAN标识。因为云服务租户的庞大数量,VLANID最大4096就不够用了。不仅如此,还有同一租户内不同VLAN的需求。

一个案例是跨POD扩展。一个POD是一个或者多个包含服务器的机架,以及相关的存储和网络组成。租户可能从一个POD起步,然后逐步需要其他POD上的VM,特别是这个‘其他’POD的租户没有充分使用POD中的资源。这个案例需要L2网络的伸缩性。

L3网络不是一个容易理解的多租户解决方案,两个租户可能各自使用同一套L3网络地址,需要云提供商支持其他形式的隔离,对于虚机间的通信,要求租户使用IP,但又不是不是信赖的直接L2网络,或者非IP的L3协议。

TOR交换机的ARP表容量

虚拟化场景对连接服务器的TOR交换机的MAC地址表容量提出了额外的要求。不是一个MAC对应一个服务器,TOR交换机需要学习一个服务器中可能多达上百的虚机的MAC。因为虚机流量会经过服务器和TOR之间的链路,传统TOR交换机,根据其面板端口数,可能连接24、48个服务器,数据中心可能包含很多个机架,每个TOR需要维护不同服务器之间通信的虚机的地址表,对比非虚拟化场景,这个对地址表空间的要求很高。

如果表空间满,交换机停止学习,直至表项超期。会导致大量未知单播帧。

VXLAN

VXLAN基于数据中心多租户场景下,聚焦以上需求,立足现有 网络基础设施,提供L2网络的伸缩。简单说,VXLAN是基于L3网络上的L2叠加网络,每一个叠加网络可称为VXLAN Segmeng,只有归属于同一个VXLAN Segment的虚机才能相互通信(这里应该是L2通信),每一个VXLAN Segment通过一个24bit的Segment ID标识,成为VXLAN Network Identifier(VNI),在同一个管理域中,最多有16M个VXLAN Segment段存在。

VNI标识了来自虚机的内部MAC帧的范围,因此跨VXLAN Segment,MAC是可以重叠的,但是(L2)流量不能,因为通过VNI分隔了。在封装来自VM的内部帧时,VNI封装在外部头中。

VXLAN Segment和VXLAN叠加网络是可以相互使用的术语。

因为封装,VXLAN是叠加在L3网络上的L2网络。隧道是无状态的,每一个帧按照一系列规则进行封装。隧道端点(VXLAN Tunnel End Point,VTEP)位于虚机宿主机的hypervisor层。这样VNI,和VXLAN相关的隧道,以及外部头封装仅为VTEP所知,虚机不感知。VTEP可以是物理交换机,或者物理服务器,可以软件或者硬件实现。

一种典型的VXLAN场景下的业务流控制是数据面学习,这里,通过源MAC地址学习,将虚机的MAC和VTEP的IP地址关联,多播则用于携带未知单播,广播和多播帧。

除了基于学习的业务流控制,其他还有分发虚机MAC和VTEP IP映射信息,可选项还包含一个基于认证或者基于目录的单个VTEP的集中查询机制,向VTEP分发这些映射信息,这个有时也被称为PUSH/PULL模型。基于学习的机制更加普遍。

虚机-虚机单播

设想,一个VXLAN网络中的虚机,不知道VXLAN,和其他服务器上的虚机通信,发送ARP查询,VTEP根据目的MAC查找这个虚机归属的VNI,以判断是否和源虚机处于相同VNI。是否需要目的MAC和对端VTEP的映射,如果答案为需要,则需要组装一个包含了外部帧头(MAC),外部IP头,VXLAN头的外部报文头。封装报文转发到对端VTEP。

对端VTEP检查VNI,判断本地对应VNI中是否有虚机匹配内部帧当中的目的MAC,如果是则报文去掉封装部分发送给目的虚机,后者不感知外部帧,以及VXLAN封装。

为了将报文转发给目的虚机,远端VTEP需要学习内部帧源MAC(本端虚机)和外部源IP(本端VTEP地址)的映射,也就是VTEP需要学习对端虚机MAC和对端VTEP的映射关系,实际上,这个VTEP可以通过广播ARP查询来实现。

VTEP将这个映射存储在表中,当目的虚机返回响应时,VTEP根据目的MAC查表,将报文封装后发给特定的(发出请求报文的虚机归属的)VTEP。这里无需未知目的泛洪。

实际传输之前,源虚机确定目的虚机的MAC地址,过程类似非VXLAN环境,略有一点不同,下文描述。广播帧封装在多播报文中发送。

广播和多播映射

虚机使用IP地址进行通信时,假定处于同一subnet中,源主机首先发送ARP广播,在非vxlan环境中,这个帧,携带VLAN,在所有交换机中广播。

Vxlan下,包含vni,ip头和udp头的数据段插入到报文的前部,这个报文会被广播到overlay所在的ip 多播组中。

为了实现这个效果,需要在vxlan vni和需要使用的ip多播组之间进行映射,这个在管理层实现,并通过管理通道发送给VTEP,使用这个映射,vtep可以在需要时,向上行流的交换机/路由器发送加入/离开IP多播组的IGMP成员报告。如此这般,可使用特定多播地址,基于主机上组播成员是否存在,维护特定的多播地址(rfc4541)。使用某些路由协议,比如PIM-SM(RFC4601),可在L3网络上提供足够的多播树。

VTEP使用(G)联合joins,在VXLAN隧道源未知或者经常变化的场景下(因为虚机常常在不同主机之间迁移),因为VTEP既可以作为多播数据报的源也可以作为目的,类似BIDIR-PIM(RFC5015)这样的协议效率更高。

目的虚机的ARP响应通过普通IP单播发送,到达和源虚机相连的VTEP,条件是先前已经学习了ARP响应的目的MAC地址到VTEP IP的映射。

多播帧和未知目的MAC帧,类似广播帧,使用多播树发送。

物理基础设施

在网络中使用IP多播时,网络中的L3设备,交换机/路由器会用到多播路由协议,比如PIM-SM,这样会构建有效的多播转发树,多播报文会发送到希望到达的主机处。

另外,并没有要求源和目的主机基于L3网络连接,VXLAN也可以基于L2网络,此时可通过IGMP snooping在L2网络上实现多播复制。

VTEP不能对VXLAN报文分片。中间路由器可能因为过大帧长的缘故对VXLAN封装报文分片。目的VTEP可能丢弃这些分片了的VXLAN报文,为了避免端到端流量的可能分片,推荐将所经过的物理设施的MTU设置为能容纳可能的最大VXLAN封装。其他技术,诸如Path MTU Discovery(RFC1191/RFC1981)可用来满足这个需求。

VXLAN场景

VXLAN一般应用于数据中心虚机,这些虚机分布在不同的机架,单个机架可能属于多个不同的L3网络,但可能属于同一个L2网络,VXLAN段叠加在这些L2或者L3网络上。

类似下图,两个虚拟服务器挂载于同一个L3网络,这两个服务器可能位于同一机架,也可能不同机架,或者是同一管理域的不同数据中心,有4个VXLAN 段,VNI22,34,74,98,Server1中的VM1-1和Server2中的VM2-4位于同一VNI22,虚机不知道叠加网络的存在,因为vxlan封装和解封装在vtep上发生,其他vni如表格

Vni  server1         server2

22    vm1-1           vm2-4

34    vm1-2            vm2-1

74    vm1-3            vm2-2

98    vm1-4            vm2-3

一个部署场景是,VTEP在一个感知vxlan网络的物理服务器中,另一种场景,VXLAN叠加网络中的节点,需要于传统网络,可能是VLAN,中的节点通信。此时需要部署VXLAN网关,在VXLAN和非VXLAN网络之间转发流量。

来自VXLAN网络接口的入向帧,网关去掉VXLAN头,根据内部帧目的MAC地址进行转发,包含内部帧VLAN ID的解封装报文,只能转发到非VXLAN接口,否则丢弃。相对的,来自非VXLAN 接口的报文,根据VLANID,映射到特定的VXLAN 叠加网络,除非显式配置通过封装的VXLAN传递,否则VLANID在封装为VXLAN报文前应当删除。

提供VXLAN隧道终结功能的网关,可以是TOR或者接入交换机,也可以是DC网络拓扑中的上层网络设备,比如核心或者WAN边缘设备,后一种场景,可能包含一个Provider Edge路由器用来在混合云环境中终结vxlan隧道,所有这些案例中,网关可能是软件或者实现。

网关或者VTEP处理包含VLANID的帧的规则:

解封装后包含VLANid的VXLAN帧,除非配置,否则丢弃。

VTEP封装VXLAN隧道报文时,内部不带VLANid,除非专门设置。就是说若一个带有vlan tag的报文准备进入vxla隧道时,除非显式配置,否则应该去掉vlan tag。(就是vni和vlan tag的映射)

Windows 2003中IIS 6主机头功能:

利用Windows 2003中的IIS 6组件实现让多个不同的网站都用80端口对外发布,而访问时直接输入地址即可不用加任何虚拟目录路径也不需要修改默认端口号。这就是IIS 6中的主机头功能。通过一个案例详细介绍 配置windows2003服务器IIS主机头发布多个站点:实现的功能就是在同一台服务器上发布两个不同的网站,而这两个网站都使用80端口。

建立A站点:分别建立两个站点。

第一步:在Windows 2003中启动IIS组件,然后在网站选项上点鼠标右键选择“新建”-“网站”。

第二步:在网站描述处填写“BOAER官方网站A”来区分不同网站名称,点“下一步”按钮继续。

第三步:接下来就是主机头设置的关键了,网站IP地址处信息保持默认的“全部未分配”即可,端口是默认的80,最下面的“此网站的主机头”输入一个域名,当然如果真的要对internet发布自己的网站,这个域名是要输入真实的已经注册的已经做好网站备案的。

第四步:选择网站发布的主目录,通过“浏览”按钮定位站点文件夹。

第五步:设置网站访问权限,这个就要根据站点的特征决定。

至此就完成了第一个站点的创建和发布工作。

按之前的步骤建立B站点:网站描述填写“BOAER官方网站B”以示区别。设置第二个网站的主机头信息,填写区别于A站点的url地址作为此站点的主机头,其他保持默认。这个站点和之前的第一个站点都使用了80端口进行发布。

完成第二个网站的发布操作之后即可实现两个站点都使用了80端口对外发布。

  一个诊断案例( )

       这里大多数符号(symbol)代表的意义并不是那么明显 而大部分的时间都消耗在内核符号(no vmlinux)和一个通用的mysqld符号中 这两个符号无法告诉我们更多的细节 不要被多个ha_innodb so符号分散了注意力 看一下他们占用的百分比就知道了 不管它们在做什么 其占用的时间都很少 所以应该不会是问题所在 这个例子说明 仅仅从剖析报表出发是无法得到解决问题的结果的 我们追踪的数据是错误的 如果遇到上述例子这样的情况 需要继续检查其他的数据 寻找问题根源更明显的证据

 到这里 如果希望从gdb的堆栈跟踪进行等待分析 请参考 节的最后部分内容 那个案例就是我们当前正在诊断的这个问题 回想一下 当时的堆栈跟踪分析的结果是正在等待进入到InnoDB内核 所以SHOW INNODB STATUS的输出结果中有 queries inside InnoDB queries in queue

 从上面的分析发现问题的关键点了吗?没有 我们看到了许多不同问题可能的症状 根据经验和直觉可以推测至少有两个可能的原因 但也有一些没有意义的地方 如果再次检查一下iostat的输出 可以发现wsec/s列显示了至少在 秒内 服务器每秒写入了几百MB的数据到磁盘 每个磁盘扇区是 B 所以这里采样的结果显示每秒最多写入了 MB的数据 然后整个数据库也只有 MB大小 系统的压力又主要是SELECT查询 怎么会出现这样的情况呢?

 对一个系统进行检查的时候 应该先问一下自己 是否也碰到过上面这种明显不合理的问题 如果有就需要深入调查 应该尽量跟进每一个可能的问题直到发现结果 而不要被离题太多的各种情况分散了注意力 以致最后都忘记了最初要调查的问题 可以把问题写在小纸条上 检查一个划掉一个 最后再确认一遍所有的问题都已经完成调查

 在这一点上 我们可以直接得到一个结论 但却可能是错误的 可以看到主线程的状态是InnoDB 正在刷新脏页 在状态输出中出现这样的情况 一般都意味着刷新已经延迟了 我们知道这个版本的InnoDB 存在 疯狂刷新 的问题(或者也被称为检查点停顿) 发生这样的情况是因为InnoDB 没有按时间均匀分布刷新请求 而是隔一段时间突然请求一次强制检查点导致大量刷新操作 这种机制可能会导致InnoDB 内部发生严重的阻塞 导致所有的操作需要排队等待进入内核 从而引发InnoDB 上一层的服务器产生堆积 在第 章中演示的例子就是一个因为 疯狂刷新 而导致性能周期性下跌的问题 很多类似的问题都是由于强制检查点导致的 但在这个案例中却不是这个问题 有很多方法可以证明 最简单的方法是查看SHOW STATUS 的计数器 追踪一下Innodb_buffer_pool_pages_flushed 的变化 之前已经提到了 这个值并没有怎么增加 另外 注意到InnoDB 缓冲池中也没有大量的脏页需要刷新 肯定不到几百MB 这并不值得惊讶 因为这个服务器的工作压力几乎都是SELECT 查询 所以可以得到一个初步的结论 我们要关注的不是InnoDB 刷新的问题 而应该是刷新延迟的问题 但这只是一个现象 而不是原因 根本的原因是磁盘的I/O 已经饱和 InnoDB 无法完成其I/O 操作 至此我们消除了一个可能的原因 可以从基于直觉的原因列表中将其划掉了

 从结果中将原因区别出来有时候会很困难 当一个问题看起来很眼熟的时候 也可以跳过调查阶段直接诊断 当然最好不要走这样的捷径 但有时候依靠直觉也非常重要 如果有什么地方看起来很眼熟 明智的做法还是需要花一点时间去测量一下其充分必要条件 以证明其是否就是问题所在 这样可以节省大量时间 避免查看大量其他的系统和性能数据 不过也不要过于相信直觉而直接下结论 不要说 我之前见过这样的问题 肯定就是同样的问题 而是应该去收集相关的证据 尤其是能证明直觉的证据

 下一步是尝试找出是什么导致了服务器的I/O 利用率异常的高 首先应该注意到前面已经提到过的 服务器有连续几秒内每秒写入了几百MB 数据到磁盘 而数据库一共只有 MB 大小 怎么会发生这样的情况? 注意到这里已经隐式地假设是数据库导致了磁盘写入 那么有什么证据表明是数据库导致的呢?当你有未经证实的想法 或者觉得不可思议时 如果可能的话应该去进行测量 然后排除掉一些怀疑

       返回目录 高性能MySQL

       编辑推荐

       ASP NET开发培训视频教程

 数据仓库与数据挖掘培训视频教程

lishixinzhi/Article/program/MySQL/201311/29696

性能需求分析

321 概述

 首先对2003年和2004年的全年税收业务量进行了统计,总结出税收业务量的增长趋势,

 对2005至2009年的全年税收业务量进行了估算

以此为依据,同时结合税收业务量分布特点,按照省集中和全国集中两种模式,对用户访问量、系统处理能力、存储容量、网络流量等4个主要方面进行初步分析估算。

有必要指出的是,网络流量的估算与联网机构的接入方式密切相关,但是哪些联网机构可以集中接入,集中接入的层次,及集中接入机构的业务量在总业务量的占比各地差异很大;从地域上考虑,各联网机构在各省的集中程度也不尽相同,比如说,国税在部分省做到了省集中、而在另一部分省尚未做到省集中,至于地税、财政和部分城市商业银行的情况就更为复杂。

另外,在进行后续的估算中,考虑到税票业务量是本系统处理的主要业务,其他业务与税票相比,业务量相对较小。因此,我们暂以税票业务量作为估算的基础。

322 业务量统计

通过对国库局综合业务报表系统提供的全国各省税票业务量进行分析统计,得出如下结论,2003年全国税票业务总量大约有21

亿笔,2004年全国税票业务总量大约有24亿笔;全国税票业务年增长率大约在15%左右。同时对各地上横向联网后,税票业务量变化趋势进一步考察发现,上横向联网后的第一年,某些地区税票业务量有突发性增长因素(如浙江,在上横向联网后的第一年,税票业务量增长了100%),所以我们假设税票业务量每年增长趋势在20%左右。

税票业务量的大小直接影响到对系统处理能力、存储容量、网络流量等性能指标的高端要求,由于各省经济发达程度和税收体制的差异,造成各省的税票业务量存在很大差异。为了做到按需投资,合理配备资源,避免浪费,我们将各省根据2004年税票业务量大小分为4类:

1.按分库级分类

(1) 特大型,税票年业务量达到3500万及以上

包括上海、广州、南京、北京4个分库。

(2) 大型,税票年业务量达到1500万及以上,3500万以下

包括石家庄、沈阳、杭州、福州、济南、武汉、成都、大连、宁波、重庆、天津11个分库或营管部管辖分库。

(3) 中型,税票年业务量达到1000万及以上,1500万以下

包括太原、呼和浩特、长春、哈尔滨、合肥、南昌、郑州、长沙、南宁、西安、兰州、贵阳、昆明、乌鲁木齐、青岛、海口、深圳、厦门18个分库或营管部管辖分库。 (4) 小型,年业务量在1000 万以下

包括银川、西宁、拉萨3个分库。 2.按中心支库级分类

(1) 特大型,税票年业务量达到1000万及以上

如:佛山市中心支库。

(2) 大型,税票年业务量达到500万及以上,1000万以下

如:苏州市中心支库。

(3) 中型,税票年业务量达到100万及以上,500万以下

如:常熟市中心支库。 (4) 小型,年业务量在100万以下

如:安顺市中心支库。 3.按县支库级分类

(1) 特大型,税票年业务量达到500万及以上

如:广东佛山顺德。

(2) 大型,税票年业务量达到100万及以上,500万以下

如:江苏苏州吴江。

(3) 中型,税票年业务量达到30万及以上,100万以下

如:山东淄博淄川。

(4) 小型,税票年业务量在30万以下

如:陕西咸阳长武县。

323 省集中模式性能需求

3231 税票业务量分省估算

表3-1 2004—2009年税票业务量统计及增长情况估算表

3232 用户访问量估算

表3-2 用户访问量计算

3233 系统处理能力计算

 省集中模式数据中心处理能力计算

根据以上税票业务量统计及增长情况估算表,同时考虑到扣税业务的发生在时间上分布存在不规则性的特点,作如下假设:

 高峰交易日业务量假定

假设全年税票业务量集中在11个月处理,每月处理全年业务量的1/11,每月的业务量平均分布在三旬当中,每旬业务量的80%集中发生在每旬的后三天。在最不理想的情况下,假定后三天的业务量的80%集中在每旬的最后一天处理。则高峰交易日业务量计算公式为:

高峰日交易量 = 年业务量/11/380%80%(笔/天)  平均交易日业务量假定

假设每年的正常工作日为200天,则平均交易日业务量计算公式为:

平均日交易量 =年业务量/200(笔/天)

 系统处理能力TPM-C值计算公式为:TPM-C = MM0/T/M1 M为日交易量,包括对数据库更新、查询、增加、删除等操作。

计算TPM-C的目的是为了确定机器的处理能力,由于在每天的业务处理过程中,业务发生的频度不尽相同,一般情况下是按照8/2原则,具体来说,在20%的工作时间内业务人员要处理80%的业务。

M0为一个应用交易所对应的标准交易个数,推荐值为8-20,由于系统体系结构的不同、应用服务器的结构不同,各个厂商的推荐值也不同,如:HP公司推荐为10。

T为交易的高峰时间,使用2/8原则,如:每日工作时间为8小时,那么交易的高峰时间T=820%=16小时。

M1为机器实际为系统提供的处理能力,机器需要预留一部分处理能力,这一部分的处理能力是为了分配给操作系统、中间件应用服务器及数据库服务器的。M1一般来说为80%。

 说明:

M0=10,参考目前厂商与TPC组织推荐的标准8~20,及借鉴相关类似系统(主要是中国现代化支付系统和中国银联交换系统)的取值情况,同时考虑到国库信息处理系统的单笔交易需要实时转发以及销号审核等信息整理,处理环节较多,自身交易有一定的复杂性。经估

算,我们认为TIPS的交易复杂度系数M0取值10为宜。

T=96分钟,按照每天工作8个小时计算,同时根据2/8原则,即820%=16小时=96分钟内完成每天的工作量。

数据中心TPM-C = M(M0/T/M1=10/96/08)=013 M(其中M1=80%)。

关于业务量M的计算,按照日最大交易量来进行计算,同时按照

8/2原则,即在日高峰期要处理全天80%的业务。

表3-3 不同级别数据中心税票处理能力表

3234 存储容量分析

其中税票的数据格式如下表所示,长度约为2k。 表3-5税票信息表

收入退还书的格式同税票格式也为2k;更正通知书格式同税票格式业务2k;会计凭证的格式为500字节;财政支出凭证的格式为1k;额度为1k;报表为1k1000=1M;其他按照1k计算。

表3-6 数据中心存储容量表

3235 网络流量分析

 根据业务量统计表,下表给出了每分钟交易数量。说明其中高峰交易量是根据2/8原则,即在工作时间内,80%的业务是在整个工作日的20%时间内完成,其中业务量按照每天可能发生的最大交易量乘80%来计算,其中工作时间按照正常工作时间8小时的20%来进行计算。

表3-7 单位时间内业务量统计表

 在执行每笔业务时,大约占用2K,假定不考虑网络带宽在传输过程中的效率损失,下表给出了对网络带宽的需求。 表3-8 单位时间内各级机构网络汇总流量估算表

 按照每笔业务处理需要2K,考虑到并发情况及网络利用效率等问题(效率损失为60%),实际所需要的网络带宽为下表所示。 表3-9 网络传输带宽估算表

33 业务处理和系统响应时间

 业务处理时间

在不考虑财政、征收机关、商业银行内部系统的处理时间的情况下,信息在TIPS内部的处理时间最长不超过3秒。

 系统响应时间

系统登录时间最长3秒;

从报文或文件进入系统到接收回执时间不超过5秒; 报文或文件传输不成功时,在3-5秒时间内通知发送者; 因某种原因,报文或文件滞留在系统中时,应在30秒时间内向发送者发出提示信息。

为此要求:

实时联网交易在不通过小额支付系统进行时,系统响应时间应该

在5秒以内:其中税务、TIPS、金融机构之间整个网络延迟在3秒以内;数据处理中心处理时间和网间互联平台处理时间之和在2秒以内。

实时联网交易在通过小额支付系统进行时,应该在5秒加上小额支付系统和TBS的处理时间(包括中间的传输时间)。

早上,我 钟声敲响第三下时,我在睡觉。这里 我怎么能 I don’我睡眠不足。它 今天天气很好,而且。这是阅读最新信息和放松的好时机。让 咱们吃瓜看热闹。天东电力19年来专注于OA,深度研发OA软件技术,融合自主本地化技术、稳定的业务性能、高业务扩展性,一直致力于为政府、企事业单位提供更高效、更安全、更稳定的办公软件和服务。华天电力协同OA系统已成功适配龙芯CPU、大梦数据库、neokylin Linux操作系统和沈心,全面高效地完成了华天电力协同OA系统本地化适配的重要战略部署。迄今为止,已实现政府、金融、电信、教育、医疗、交通、航空、军事等行业的全面覆盖,服务客户超过27900家。其中本土化的案例比较多,选取几个经典案例供大家参考。

城市政务平台

市政府政务平台的建设旨在提升XX市政府部门的工作效率,提高政府工作质量,提高领导和决策的服务质量,建立良好的政府与政府、政府与社会的关系,提高公共服务质量,赢得广泛的社会参与。该平台构建在电子政务网络上,实现公文处理、稿件准备、文件中心、文件传递、会议管理等业务应用系统。纵向连接县、镇、行政村,横向覆盖所有行政职能部门。

系统分为两部分:一是各单位内部办公平台,用于处理起草论文、会议等相关业务;二是信息传递平台,用于各单位之间的信息传递和反馈。

在本项目本地化期间,甲方 s单位提出了实现所有内容本地化的要求,推翻了之前既定的软硬件部署方案。经过多次讨论,甲方最终同意华天提出的政务本地化解决方案。服务器解决方案采用了华为 s本地化云解决方案,客户端操作系统采用neokylin操作系统,办公组件采用兼容WPS的NTKO组件库,身份验证和盖章服务采用CA提供的技术方案。最终实现了全市300多个政府部门的本地化系统建设。

XX市公安局41联合行动平台

XX市公安局通过部署4 1联合作战平台和分析研判系统,对各类业务和数据进行统一管理和整合,为各级用户提供统一的决策和分析支持,增强数据共享和流通能力。该平台的主要功能如下:

1警务数据共享功能:通过数据平台实现数据集中,在保证数据隐私和安全的前提下,保证各级各部门能够使用权限范围内的数据,充分发挥数据作为政府重要资产的商业价值。

2加强警务部门的业务协作:实现分散在各业务系统中的数据在数据平台中的集中和整合,建立产品、客户等数据的单一市级视图,有效促进业务集成和协作,为市级和县级分析提供集成。

3创新警务网上办公模式:警务人员可以基于详实可信的数据进行多维分析和数据挖掘,为业务创新创造了有利条件。

4提高警务工作效率:通过数据平台集中数据,为管理分析、挖掘和预测系统提供一致的数据基础,改变数据来源多、数据处理复杂的现状,实现应用系统建设模式的转变,提高相关系统的建设和运行效率。

甲方要求本合同

最后,我们采用了我们公司提出的本地化负载平衡方案,将原始服务器数据的五个副本部署到五台服务器上。根据OA系统的实际使用情况,将用户按单元划分为5台服务器,其中一台为主服务器。登录时,系统后台区分了哪个服务器 s账号跳转登录相应系统,最终实现了系统内700多个单元的高效业务流转,平均业务处理时间比原系统减少了30%,产生数据错误。

浙江消防总队综合业务管理平台

通过 多种形式消防队综合业务管理平台 浙江消防总队将火灾信息覆盖到各种形式的消防队,实现了对相关各种形式消防队的综合管理,便于对火灾形式的分析和判断;掌握各种形式消防队的发展现状,展示各种形式消防队的工作形象。通过多种形式的消防队综合业务管理平台,适应全民参与消防安全管理、全社会共享消防安全服务的社会消防安全管理新格局,完善消防服务社会化模式,加强社会化队伍管理,提升浙江消防队火灾防控、灭火救援和社会化队伍综合管理能力。

系统建设完成后,将覆盖全省811个乡镇政府专职消防队和53个市政府专职消防队,并为109个企业专职消防队、5631个村志愿消防队和13358个迷你消防队预留扩展空间。

XX市政府移动办公平台

XX移动办公平台主要为XX市委及各县办公室提供电子公文和短信群发服务。本次建设内容主要用于替换原有公文系统,要求整个平台采用本地化部署方案。经过我公司与市委相关领导的多次讨论和沟通,双方同意由移动公司和我公司共同为市委提供本地化移动协同办公平台的部署。

服务器架构由移动公司提供的国产云托管服务器提供,接入终端使用华为手机和平板电脑实现移动办公,为市级机关提供一套定制的国产移动协同办公平台。

了解更多《华天动力OA系统国产化方案之综合案例篇》,请关注深空游戏资讯栏目,深空编辑将为您持续更新更多科技资讯。

王者之心2点击试玩

  服务程序最为关键的设计是并发服务模型,当前有以下几种典型的模型:

  - 单进程服务,使用非阻塞IO

  使用一个进程服务多个客户,通常与客户通信的套接字设置为非阻塞的,阻塞只发生在select()、poll()、epoll_wait()等系统调用上面。这是一种行之有效的单进程状态机式服务方式,已被广泛采用。

  缺点是它无法利用SMP(对称多处理器)的优势,除非启动多个进程。此外,它尝试就绪的IO文件描述符后,立即从系统调用返回,这会导致大量的系统调用发生,尤其是在较慢的字节传输时。

  select()本身的实现也是有局限的:能打开的文件描述符最多不能超过FD_SETSIZE,很容易耗尽;每次从select()返回的描述符组中扫描就绪的描述符需要时间,如果就绪的描述符在末尾时更是如此(epoll特别彻底修复了这个问题)。

  - 多进程服务,使用阻塞IO

  也称作 accept/fork 模型,每当有客户连线时产生一个新的进程为之服务。这种方式有时是必要的,比如可以通过操作系统获得良好的内存保护,可以以不同的用户身份运行程序,可以让服务运行在不同的目录下面。但是它的缺点也很明显:进程比较占资源,进程切换开销太大,共享某些信息比较麻烦。Apache 13就使用了这种模型,MaxClients数很容易就可以达到。

  - 多线程服务,使用阻塞IO

  也称之 accept/pthread_create模型,有新客户来时创建一个服务线程而不是服务进程。这解决了多进程服务的一些问题,比如它占用资源少,信息共享方便。但是麻烦在于线程仍有可能消耗光,线程切换也需要开销。

  - 混合服务方式

  所谓的混合服务方式,以打破服务方和客户方之间严格的1:1关系。基本做法是:

  新客户到来时创建新的工作线程,当该工作线程检测到网络IO会有延迟时停止处理过程,返回给Server一个延迟处理状态,同时告诉 Server被延迟的文件描述符,延迟超时时间。Server会在合适的时候返回工作线程继续处理。注意这里的工作线程不是通过 pthread_create()创建的,而是被包装在专门用于处理延迟工作的函数里。

  这里还有一个问题,工作线程如何检测网络IO会有延迟?方法有很多,比如设置较短的超时时间调用poll(),或者甚至使用非阻塞IO。如果是套接字,可以设置SO_RCVTIMEO和SO_SNDTIMEO选项,这样更有效率。

  除了延迟线程,Server还应提供了未完成线程的支持。

  如有有特别耗费时间的操作,你可以在完成部分工作后停止处理,返回给Server一个未完成状态。这样Server会检查工作队列是否有别的线程,如果有则让它们运行,否则让该工作线程继续处理,这可以防止某些线程挨饿。

  典型的一个混合服务模型开源实现ServerKit

  Serverkit的这些线程支持功能可简化我们的服务程序设计,效率上应该也是有保证的。

  2 队列(queue)

  ServerKit提供的队列是一个单向链表,队列的存取是原子操作,如果只有一个执行单元建议不要用,因为原子操作的开销较大。

  3 堆(heap)

  malloc()分配内存有一定的局限,比如在多线程的环境里,需要序列化内存分配操作。ServerKit提供的堆管理函数,可快速分配内存,可有效减少分配内存的序列化操作,堆的大小可动态增长,堆有引用计数,这些特征比较适合多线程环境。目前ServerKit堆的最大局限是分配单元必须是固定大小。

  4 日志记录

  日志被保存在队列,有一个专门的线程处理队列中的日志记录:它或者调用syslog()写进系统日志,或者通过UDP直接写到远程机器。后者更有效。

  5 读写锁

  GNU libc也在pthreads库里实现了读写锁,如果定义了__USE_UNIX98就可以使用。不过ServerKit还提供了读写锁互相转换的函数,这使得锁的应用更为弹性。比如拥有读锁的若干个线程对同一个hash表进行检索,其中一个线程检索到了数据,此时需要修改它,一种办法是获取写锁,但这会导致释放读锁和获取写锁之间存在时间窗,另一种办法是使用ServerKit提供的函数把读锁转换成写锁,无疑这种方式更有效率。

  除了以上这些功能,ServerKit还提供了数据库连接池的管理(当前只支持MySQL)和序列化(Sequences),如感兴趣可参见相关的API文档。

  二、ServerKit服务模块编写

  ServerKit由3部分组成:server程序,负责加载服务模块、解析配置文件、建立数据库连接池;libserver,动态链接库,提供所有功能的库支持,包括server本身也是调用这个库写的;API,编程接口,你编写的服务模块和ServerKit框架进行对话的接口。

  ServerKit需要libConfuse解析配置文件,所以出了安装ServerKit,还需要安装libConfuse。关于libConfuse可参考 http://wwwnongnuorg/confuse/ 。

  下面我们看一个简单的服务模块FOO:

  #include <confuseh>

  #include <serverh>

  static long int sleep_duration;

  static int FOO_construct()

  {

  fprintf(stderr, "FOO_construct\n");

  return 1;

  }

  static int FOO_prestart(cfg_t configuration)

  {

  fprintf(stderr, "FOO_prestart\n");

  return 1;

  }

  static void FOO_operator(void foobar)

  {

  fprintf(stderr, "FOO_operator\n");

  for(;;) sleep(sleep_duration);

  return NULL;

  }

  static void FOO_report(void)

  {

  fprintf(stderr, "FOO_report\n");

  }

  

  static cfg_opt_t FOO_config[] = {

  CFG_SIMPLE_INT("sleep_duration", &sleep_duration),

  CFG_END()

  };

  static char FOO_authors[] = {"Vito Caputo <vcaputo@pengarucom>", NULL};

  

  SERVER_MODULE(FOO,0,0,1,"Example module that does nothing but sleep")

  

  按以下方法编译:

  $ gcc -c -fPIC -pthread -D_REENTRANT -g FOOc

  $ gcc -shared -lserver -lconfuse -lpthread -g -e __server_module_main -o FOOso FOOo

  -e选项指定程序运行入口,这使得你可以直接在命令行敲 /FOOso 运行模块。

  server程序根据环境变量SERVER_PERSONALITY_PATH定位主目录,并查找主目录下的c11n作为配置文件,动态加载的模块需放在主目录下的modules目录。

  $ export SERVER_PERSONALITY_PATH=`pwd`

  $ mkdir modules

  $ cp FOOso modules

  $ vi c11n

  c11n的内容:

  identity = "any_id"

  FOO {

  sleep_duration = 1;

  }

  identity标识server实例,用ps可看到程序名称形如serveridentity,本例为serverany_id。

  执行server启动服务程序。

  三、ServerKit其他功能缺陷

  缺乏daemon模式;

  只能运行在Linux box;

  DB pool只支持MySQL;

  Heap管理内存的功力有限

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » VXLAN, 一种叠加在L3网络上的L2网络

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情