用什么工具画 软件架构设计图
1、Microsoft Office Visio
Office Visio 是office软件系列中的负责绘制流程图和示意图的软件,是一款便于IT和商务人员就复杂信息、系统和流程进行可视化处理、分析和交流的软件。
2、ProcessOn
是一款网页版的在线作图工具,优点是无需下载安装、破解这些破事,同时支持在线协作,可以多人同时对一个文件协作编辑,而且上手比较容易,它提供很多流程图模版,可以方便的画出流程图、思维导图、原型图、UML图。
3、OmniGraffle
OmniGraffle可以用来绘制图表,流程图,组织结构图以及插图,也可以用来组织头脑中思考的信息,组织头脑风暴的结果,绘制心智图,作为样式管理器,或设计网页或PDF文档的原型。只能于运行在Mac OS X和iPad平台之上。
4、亿图
是一款基于矢量的绘图工具,包含大量的事例库和模板库。可以很方便的绘制各种专业的业务流程图、组织结构图、商业图表、程序流程图、数据流程图、工程管理图、软件设计图、网络拓扑图等等。
5、Axure RP
Axure RP是美国Axure Software Solution公司旗舰产品,是一个专业的快速原型设计工具,让负责定义需求和规格、设计功能和界面的专家能够快速创建应用软件或Web网站的线框图、流程图、原型和规格说明文档。
大数据数量庞大,格式多样化。大量数据由家庭、制造工厂和办公场所的各种设备、互联网事务交易、社交网络的活动、自动化传感器、移动设备以及科研仪器等生成。它的爆炸式增长已超出了传统IT基础架构的处理能力,给企业和社会带来严峻的数据管理问题。因此必须开发新的数据架构,围绕“数据收集、数据管理、数据分析、知识形成、智慧行动”的全过程,开发使用这些数据,释放出更多数据的隐藏价值。
一、大数据建设思路
1)数据的获得
大数据产生的根本原因在于感知式系统的广泛使用。随着技术的发展,人们已经有能力制造极其微小的带有处理功能的传感器,并开始将这些设备广泛的布置于社会的各个角落,通过这些设备来对整个社会的运转进行监控。这些设备会源源不断的产生新数据,这种数据的产生方式是自动的。因此在数据收集方面,要对来自网络包括物联网、社交网络和机构信息系统的数据附上时空标志,去伪存真,尽可能收集异源甚至是异构的数据,必要时还可与历史数据对照,多角度验证数据的全面性和可信性。
2)数据的汇集和存储
互联网是个神奇的大网,大数据开发和软件定制也是一种模式,这里提供最详细的报价,如果你真的想做,可以来这里,这个手机的开始数字是一八七中间的是三儿零最后的是一四二五零,按照顺序组合起来就可以找到,我想说的是,除非你想做或者了解这方面的内容,如果只是凑热闹的话,就不要来了
数据只有不断流动和充分共享,才有生命力。应在各专用数据库建设的基础上,通过数据集成,实现各级各类信息系统的数据交换和数据共享。 数据存储要达到低成本、低能耗、高可靠性目标,通常要用到冗余配置、分布化和云计算技术,在存储时要按照一定规则对数据进行分类,通过过滤和去重,减少存储量,同时加入便于日后检索的标签。
3)数据的管理
大数据管理的技术也层出不穷。在众多技术中,有6种数据管理技术普遍被关注,即分布式存储与计算、内存数据库技术、列式数据库技术、云数据库、非关系型的数据库、移动数据库技术。其中分布式存储与计算受关注度最高。上图是一个图书数据管理系统。
4)数据的分析
数据分析处理:有些行业的数据涉及上百个参数,其复杂性不仅体现在数据样本本身,更体现在多源异构、多实体和多空间之间的交互动态性,难以用传统的方法描述与度量,处理的复杂度很大,需要将高维图像等多媒体数据降维后度量与处理,利用上下文关联进行语义分析,从大量动态而且可能是模棱两可的数据中综合信息,并导出可理解的内容。大数据的处理类型很多,主要的处理模式可以分为流处理和批处理两种。批处理是先存储后处理,而流处理则是直接处理数据。挖掘的任务主要是关联分析、聚类分析、分类、预测、时序模式和偏差分析等。
5)大数据的价值:决策支持系统
大数据的神奇之处就是通过对过去和现在的数据进行分析,它能够精确预测未来;通过对组织内部的和外部的数据整合,它能够洞察事物之间的相关关系;通过对海量数据的挖掘,它能够代替人脑,承担起企业和社会管理的职责。
6)数据的使用
大数据有三层内涵:一是数据量巨大、来源多样和类型多样的数据集;二是新型的数据处理和分析技术;三是运用数据分析形成价值。大数据对科学研究、经济建设、社会发展和文化生活等各个领域正在产生革命性的影响。大数据应用的关键,也是其必要条件,就在于"IT"与"经营"的融合,当然,这里的经营的内涵可以非常广泛,小至一个零售门店的经营,大至一个城市的经营。
二、大数据基本架构
基于上述大数据的特征,通过传统IT技术存储和处理大数据成本高昂。一个企业要大力发展大数据应用首先需要解决两个问题:一是低成本、快速地对海量、多类别的数据进行抽取和存储;二是使用新的技术对数据进行分析和挖掘,为企业创造价值。因此,大数据的存储和处理与云计算技术密不可分,在当前的技术条件下,基于廉价硬件的分布式系统(如Hadoop等)被认为是最适合处理大数据的技术平台。
Hadoop是一个分布式的基础架构,能够让用户方便高效地利用运算资源和处理海量数据,目前已在很多大型互联网企业得到了广泛应用,如亚马逊、Facebook和Yahoo等。其是一个开放式的架构,架构成员也在不断扩充完善中,通常架构如图2所示:
Hadoop体系架构
(1)Hadoop最底层是一个HDFS(Hadoop Distributed File System,分布式文件系统),存储在HDFS中的文件先被分成块,然后再将这些块复制到多个主机中(DataNode,数据节点)。
(2)Hadoop的核心是MapReduce(映射和化简编程模型)引擎,Map意为将单个任务分解为多个,而Reduce则意为将分解后的多任务结果汇总,该引擎由JobTrackers(工作追踪,对应命名节点)和TaskTrackers(任务追踪,对应数据节点)组成。当处理大数据查询时,MapReduce会将任务分解在多个节点处理,从而提高了数据处理的效率,避免了单机性能瓶颈限制。
(3)Hive是Hadoop架构中的数据仓库,主要用于静态的结构以及需要经常分析的工作。Hbase主要作为面向列的数据库运行在HDFS上,可存储PB级的数据。Hbase利用MapReduce来处理内部的海量数据,并能在海量数据中定位所需的数据且访问它。
(4)Sqoop是为数据的互操作性而设计,可以从关系数据库导入数据到Hadoop,并能直接导入到HDFS或Hive。
(5)Zookeeper在Hadoop架构中负责应用程序的协调工作,以保持Hadoop集群内的同步工作。
(6)Thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发,最初由Facebook开发,是构建在各种编程语言间无缝结合的、高效的服务。
Hadoop核心设计
Hbase——分布式数据存储系统
Client:使用HBase RPC机制与HMaster和HRegionServer进行通信
Zookeeper:协同服务管理,HMaster通过Zookeepe可以随时感知各个HRegionServer的健康状况
HMaster: 管理用户对表的增删改查操作
HRegionServer:HBase中最核心的模块,主要负责响应用户I/O请求,向HDFS文件系统中读写数据
HRegion:Hbase中分布式存储的最小单元,可以理解成一个Table
HStore:HBase存储的核心。由MemStore和StoreFile组成。
HLog:每次用户操作写入Memstore的同时,也会写一份数据到HLog文件
结合上述Hadoop架构功能,大数据平台系统功能建议如图所示:
应用系统:对于大多数企业而言,运营领域的应用是大数据最核心的应用,之前企业主要使用来自生产经营中的各种报表数据,但随着大数据时代的到来,来自于互联网、物联网、各种传感器的海量数据扑面而至。于是,一些企业开始挖掘和利用这些数据,来推动运营效率的提升。
数据平台:借助大数据平台,未来的互联网络将可以让商家更了解消费者的使用惯,从而改进使用体验。基于大数据基础上的相应分析,能够更有针对性的改进用户体验,同时挖掘新的商业机会。
数据源:数据源是指数据库应用程序所使用的数据库或者数据库服务器。丰富的数据源是大数据产业发展的前提。数据源在不断拓展,越来越多样化。如:智能汽车可以把动态行驶过程变成数据,嵌入到生产设备里的物联网可以把生产过程和设备动态状况变成数据。对数据源的不断拓展不仅能带来采集设备的发展,而且可以通过控制新的数据源更好地控制数据的价值。然而我国数字化的数据资源总量远远低于美欧,就已有有限的数据资源来说,还存在标准化、准确性、完整性低,利用价值不高的情况,这降低了数据的价值。
三、大数据的目标效果
通过大数据的引入和部署,可以达到如下效果:
1)数据整合
·统一数据模型:承载企业数据模型,促进企业各域数据逻辑模型的统一;
·统一数据标准:统一建立标准的数据编码目录,实现企业数据的标准化与统一存储;
·统一数据视图:实现统一数据视图,使企业在客户、产品和资源等视角获取到一致的信息。
2)数据质量管控
·数据质量校验:根据规则对所存储的数据进行一致性、完整性和准确性的校验,保证数据的一致性、完整性和准确性;
·数据质量管控:通过建立企业数据的质量标准、数据管控的组织、数据管控的流程,对数据质量进行统一管控,以达到数据质量逐步完善。
3)数据共享
·消除网状接口,建立大数据共享中心,为各业务系统提供共享数据,降低接口复杂度,提高系统间接口效率与质量;
·以实时或准实时的方式将整合或计算好的数据向外系统提供。
4)数据应用
·查询应用:平台实现条件不固定、不可预见、格式灵活的按需查询功能;
·固定报表应用:视统计维度和指标固定的分析结果的展示,可根据业务系统的需求,分析产生各种业务报表数据等;
·动态分析应用:按关心的维度和指标对数据进行主题性的分析,动态分析应用中维度和指标不固定。
四、总结
基于分布式技术构建的大数据平台能够有效降低数据存储成本,提升数据分析处理效率,并具备海量数据、高并发场景的支撑能力,可大幅缩短数据查询响应时间,满足企业各上层应用的数据需求。
一、计算机网络的基本组成
计算机网络是一个很复杂的系统,它由许多计算机软件、硬件和通信设备组合而成。下面对一个计算机网络所需的主要部分,即服务器、工作站、外围设备、网络软件作简要介绍。
1服务器(Server)
在计算机网络中,服务器是整个网络系统的核心,一般是指分散在不同地点担负一定数据处理任务和提供资源的计算机,它为网络用户提供服务并管理整个网络,它影响着网络的整体性能。一般在大型网络中采用大型机、中型机和小型机作为网络服务器,可保证网络的可靠性。对于网点不多,网络通信量不大,数据安全性要求不太高的网络,可以选用高档微机作网络服务器。根据服务器在网络中担负的网络功能的不同,又可分为文件服务器、通信服务器和打印服务器等。在小型局域网中,最常用的是文件服务器。一般来说网络越大、用户越多、服务器负荷越大,对服务器性能要求越高。
2工作站(Workstation)
工作站有时也称为“节点”或“客户机(Client)”,是指通过网络适配器和线缆连接到网络上的计算机,是网络用户进行信息处理的个人计算机。它和服务器不同,服务器是为整个网络提供服务并管理整个网络,而工作站只是一个接入网络的设备,它保持原有计算机的功能,作为独立的计算机为用户服务,同时又可按一定的权限访问服务器,享用网络资源。
工作站通常都是普通的个人计算机,有时为了节约经费,不配软、硬盘,称为“无盘工作站”。
3网络外围设备
是指连接服务器和工作站的一些连线或连接设备,如同轴电缆、双绞线、光纤等传输介质,网卡(NIC)、中继器(Repeater)、集线器(Hub)、交换机(Switch)、网桥(Bridge)等,又如用于广域网的设备:调制解调器(Modem)、路由器(Router)、网关(Gateway)等,接口设备:T型头、BNC连接器、终端匹配器、RJ45头、ST头、SC头、FC头等。
4网络软件
前面介绍的都是网络硬件设备。要想网络能很好地运行,还必须有网络软件。
通常网络软件包括网络操作系统(NOS)、网络协议软件和网络通信软件等。其中,网络操作系统是为了使计算机具备正常运行和连接上网的能力,常见的网络操作系统有UNIX、Linux、Novell Netware、Windows NT、Windows 2000 Server、Windows XP等;网络协议软件是为了各台计算能使用统一的协议,可以看成是计算机之间相互会话使用的语言;而运用协议进行实际的通信则是由通信软件完成的。
网络软件功能的强弱直接影响到网络的性能,因为网络中的资源共享、相互通信、访问控制和文件管理等都是通过网络软件实现的。
二、计算机网络的拓扑结构
所谓计算机网络的拓扑结构是指网络中各结点(包括连接到网络中的设备、计算机)的地理分布和互连关系的几何构形,即网络中结点的互连模式。
网络的拓扑结构影响着整个网络的设计、功能、可靠性和通信费用等指标,常见的网络拓扑结构有总线型、星型、环型等,通过使用路由器和交换机等互连设备,可在此基础上构建一个更大网络。
1总线型
在总线型结构中,将所有的入网计算机接入到一条通信传输线上,为防止信号反射,一般在总线两端连有终端匹配器如图6-1(a)。总线型结构的优点是信道利用率高,可扩充性好,结构简单,价格便宜。当数据在总线上传递时,会不断地“广播”,第一节点均可收到此信息,各节点会对比数据送达的地址与自己的地址是否相同,若相同,则接收该数据,否则不必理会该数据。缺点是同一时刻只能有两个网络结点在相互通信,网络延伸距离有限,网络容纳的节点数有限。在总线上只要有一个结点连接出现问题,会影响整个网络运行,且不易找到故障点。
图6-1 网络拓扑结构
2星型
在星型结构中,以中央结点为中心,其他结点都与中央结点相连。每台计算机通过单独的通信线路连接到中央结点,由该中央结点向目的结点传送信息,如图6-1(b),因此,中央结点必须有较强的功能和较高的可靠性。
在已实现的网络拓扑结构中,这是最流行的一种。跟总线型拓扑结构相比,它的主要的优势是一旦某一个电缆线段被损坏了,只有连接到那个电缆段的主机才会受到影响,结构简单,建网容易,便于管理。缺点是该拓扑是以点对点方式布线的,故所需线材较多,成本相对较高,此外中央结点易成为系统的“瓶颈”,且一旦发生故障,将导致全网瘫痪。
3环型
在环型结构中,如图6-1(c)所示,各网络结点连成封闭环路,数据只能是单向传递,每个收到数据包的结点都向它的下一结点转发该数据包,环游一圈后由发送结点回收。当数据包经过目标结点时,目标结点根据数据包中的目标地址判断出是自己接收,并把该数据包拷贝到自己的接收缓冲中。
环型拓扑结构的优点是:结构简单,网络管理比较简单,实时性强。缺点是:成本较高,可靠性差,网络扩充复杂,网络中若有任一结点发生故障都会使整个网络瘫痪。
三、计算机网络的体系结构
要弄清网络的体系结构,需先弄清网络协议是什么。
网络协议是两台网络上的计算机进行通信时使用的语言,是通信的规则和约定。为了在网络上传输数据,网络协议定义了数据应该如何被打成包、并且定义了在接收数据时接收计算机如何解包。在同一网络中的两台计算机为了相互通信,必须运行同一协议,就如同两个人交谈时,必须采用对方听得懂的语言和语速。
由于网络结点之间的连接可能是很复杂的,因此,为了减少协议设计的复杂性,在制定协议时,一般把复杂成分分解成一些简单成分,再将它们复合起来,而大多数网络都按层来组织,并且规定:(1)一般是将用户应用程序作为最高层,把物理通信线路作为最低层,将其间再分为若干层,规定每层处理的任务,也规定每层的接口标准;(2)每一层向上一层提供服务,而与再上一层不发生关系;(3)每一层可以调用下一层的服务传输信息,而与再下一层不发生关系。(4)相邻两层有明显的接口。
除最低层可水平通信外,其他层只能垂直通信。
层和协议的集合被称为网络的体系结构。为了帮助大家理解,我们从现实生活中的一个例子来理解网络的层次关系。假如一个只懂得法语的法国文学家和一个只懂得中文的中国文学家要进行学术交流,那么他们可将论文翻译成英语或某一种中间语言,然后交给各自的秘书选一种通信方式发给对方,如图6-2所示。
图6-2 中法文学家学术交流方式
下面介绍两个重要的网络体系结构:OSI参考模型和TCP/IP参考模型。
1OSI参考模型
由于世界各大型计算机厂商推出各自的网络体系结构,不同计算机厂商的设备相互通信困难。为建立更大范围内的计算机网络,必然要解决异构网络的互连,因而国际标准化组织ISO于1977年提出“开放系统互连参考模型”,即著名的OSI(Open system interconnection/Reference Model)。它将计算机网络规定为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层等七层,受到计算机界和通信界的极大关注。
2TCP/IP参考模型
TCP/IP(Transmission Control Protocol/Internet protocol)协议是Internet使用的通信协议,由ARPANET研究中心开发。TCP/IP是一组协议集(Internet protocol suite),而TCP、IP是该协议中最重要最普遍使用的两个协议,所以用TCP/IP来泛指该组协议。
TCP/IP协议的体系结构被分为四层:
(1)网络接口层 是该模型的最低层,其作用是负责接收IP数据报,并通过网络发送出去,或者从网络上接收网络帧,分离IP数据报。
(2)网络层 IP协议被定义驻留在这一层中,它负责将信息从一台主机传到指定接收的另一台主机。主要功能是:寻址、打包和路由选择。
(3)传输层 提供了两个协议用于数据传输,即传输控制协议TCP和通用数据协议UDP,负责提供准确可靠和高效的数据传送服务。
(4)应用层 位于TCP/IP最高层,为用户提供一组常用的应用程序协议。例如:简单邮件传输协议SMTP、文件传协议FTP、远程登录协议Telnet、超文本传输协议HTTP(该协议是后来扩充的)等。随着Internet的发展,又开发了许多实用的应用层协议。
图6-3是TCP/IP模型和OSI模型的简单比较:
图6-3 TCP/IP模型和OSI模型的对比
项目微服务架构图
微服务架构根据目前产品存在的问题,针对快速开发、海量用户、大量数据、低延迟等互联网应用的实际需要,通过对业务架构、系统架构、基础架构、技术架构进行设计,彻底解决系统解耦、性能低下等问题,而且支持云计算部署,可以满足高并发、高可用、高稳定。微服务并没有一个官方的定义,可以理解为一种架构风格 。
大数据管理数据处理过程图
大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察力。大数据处理的主要流程包括数据收集、数据存储、数据处理、数据应用等主要环节。随着业务的增长,大量和流程、规则相关的非结构化数据也爆发式增长。大数据处理,大
产品开发流程图
产品开发流程(Product Development Process)产品开发流程是指企业用于想像、设计和商业化一种产品的步骤或活动的序列。产品开发流程涉及的人员从产品经理到设计师、前端、后端等等一系列人员,这篇文章主要关于产品开发的完整流程,希望对各个工作岗位上的人有借鉴意义。很多产品经理不
阿里巴巴数据中台全景图
阿里是数据中台概念的首先提出者,其案例更具分析意义。从阿里巴巴数据中台全景图可以看出,阿里的数据中台包括了计算与存储平台、数据资产管理、智能数据研发、统一数据中心中间件(OneService)四大模块,最上层支撑着阿里数据、数据大屏、生意参谋等大数据应用。阿里数据中台架构。数据中台建设理论、方
Web开发技术架构图
大型web系统架构动态应用,是相对于网站静态内容而言,是指以c/c++、php、Java、perl、net等服务器端语言开发的网络应用软件,比如论坛、网络相册。1、学习Web开发原理,包括MVC/MTV等Web框架; 2、学习Django Web框架,从技术原理到项目实践; 3、学习Djan
互联网工作原理拓扑图
互联网工作原理拓扑图模板,计算机网络是由很多台计算机组成的, 要实现网络之间传输数据, 必须要做两件事, 数据传输目的地址和保证数据迅速可靠传输的措施。计算机网络是由许多计算机组成的,要实现网络的计算机之间传输数据,必须要作两件事,数据传输目的地址和保证数据迅速可靠传输的措施。拓扑图用于计算机
管理业务流程图
业务管理是网路管理中比较重要的部分,涉及的面也比较广泛。在这一管理层,大多数的管理信息直接在GSM系统的各网路单元与GSM网路管理设施之间交换。这些管理信息还包括由AuC管理的安全性数据,由HLR管理的客户数据,由MSC管理的费率和计费数据等。业务管理(Business Management)
电商知识图谱
知识图谱(Knowledge Graph/Vault,以下简称KG)本质上是语义网络,是一种基于图的数据结构,由节点(Point)和边(Edge)组成。电商就是电子商务的简称,在互联网上销售产品而进行的商业活动,是把现实生活中的商业活动,搬到虚拟的世界当中电商这一特殊领域的知识图谱构建过程中,
树状网络拓扑图
树型拓扑(tree topology):一种类似于总线拓扑的局域网拓扑。树型网络可以包含分支,每个分支又可包含多个结点。树状拓扑结构是一种分级结构。在树状结构的网络中,任意两个节点之间不产生回路,每条通路都支持双向传输、这种结构的特点是扩充方便、灵活,成本低,易推广,适合于分主次或分等级的层级
云平台整体架构图
云计算的体系结构由5部分组成,分别为应用层,平台层,资源层,用户访问层和管理层,云计算的本质是通过网络提供服务,所以其体系结构以服务为核心。公认的云架构是划分为基础设施层、平台层和软件服务层三个层次的,对应名称为IaaS,PaaS和SaaS。
根据我们关注的角度不同,可以将架构分成三种: 软件系统中元件之间的关系,比如用户界面,数据库,外部系统接口,商业逻辑元件,等等。
比如下面就是笔者亲身经历过的一个软件系统的逻辑架构图
图2、一个逻辑架构的例子
从上面这张图中可以看出,此系统被划分成三个逻辑层次,即表象层次,商业层次和数据持久层次。每一个层次都含有多个逻辑元件。比如WEB服务器层次中有HTML服务元件、Session服务元件、安全服务元件、系统管理元件等。 软件元件是怎样放到硬件上的。
比如下面这张物理架构图描述了一个分布于北京和上海的分布式系统的物理架构,图中所有的元件都是物理设备,包括网络分流器、代理服务器、WEB服务器、应用服务器、报表服务器、整合服务器、存储服务器、主机等等。 系统的非功能性特征,如可扩展性、可靠性、强壮性、灵活性、性能等。
系统架构的设计要求架构师具备软件和硬件的功能和性能的过硬知识,这一工作无疑是架构设计工作中最为困难的工作。
此外,从每一个角度上看,都可以看到架构的两要素:元件划分和设计决定。
首先,一个软件系统中的元件首先是逻辑元件。这些逻辑元件如何放到硬件上,以及这些元件如何为整个系统的可扩展性、可靠性、强壮性、灵活性、性能等做出贡献,是非常重要的信息。
其次,进行软件设计需要做出的决定中,必然会包括逻辑结构、物理结构,以及它们如何影响到系统的所有非功能性特征。这些决定中会有很多是一旦作出,就很难更改的。
根据作者的经验,一个基于数据库的系统架构,有多少个数据表,就会有多少页的架构设计文档。比如一个中等的数据库应用系统通常含有一百个左右的数据表,这样的一个系统设计通常需要有一百页左右的架构设计文档。
网络拓扑图:网络拓扑图介绍及在线制作
网络拓扑图就是指用传输媒体互联各种各样机器设备的物理布局,即哪种方法把互联网中的电子计算机等机器设备相互连接。拓扑绘画出云端服务器、服务中心的互联网配备和相互之间的联接。互联网的拓扑结构有很多种多样,关键有星形构造、环型构造、总线
网络拓扑图往往是由网络拓扑图软件绘制,网络拓扑图软件可以让使用者方便地对网络拓扑图进行添加,修改、保存、复制等操作。这些事情如果是由手工绘制来操作的话,会麻烦许多。但对于网络拓扑图软件来说,都不是问题。另外对于有条件上网的使用者来说,以软件形式存在的网络拓扑图无疑能够更方便地与他人共享。
星型拓扑结构
星型结构是最古老的一种连接方式,大家每天都使用的电话属于这种结构。星型结构是指各工作站以星型方式连接成网。网络有中央节点,其他节点(工作站、服务器)都与中央节点直接相连,这种结构以中央节点为中心,因此又称为集中式网络。
这种结构便于集中控制,因为端用户之间的通信必须经过中心站。由于这一特点,也带来了易于维护和安全等优点。端用户设备因为故障而停机时也不会影响其它端用户间的通信。同时它的网络延迟时间较小,传输误差较低。但这种结构非常不利的一点是,中心系统必须具有极高的可靠性,因为中心系统一旦损坏,整个系统便趋于瘫痪。对此中心系统通常采用双机热备份,以提高系统的可靠性。
环型网络拓扑结构
环型结构在LAN中使用较多。这种结构中的传输媒体从一个端用户到另一个端用户,直到将所有的端用户连成环型。数据在环路中沿着一个方向在各个节点间传输,信息从一个节点传到另一个节点。这种结构显而易见消除了端用户通信时对中心系统的依赖性。
环行结构的特点是:每个端用户都与两个相临的端用户相连,因而存在着点到点链路,但总是以单向方式操作,于是便有上游端用户和下游端用户之称;信息流在网中是沿着固定方向流动的,两个节点仅有一条道路,故简化了路径选择的控制;环路上各节点都是自举控制,故控制软件简单;由于信息源在环路中是串行地穿过各个节点,当环中节点过多时,势必影响信息传输速率,使网络的响应时间延长;环路是封闭的,不便于扩充;可靠性低,一个节点故障,将会造成全网瘫痪;维护难,对分支节点故障定位较难。
总线拓扑结构
总线结构是使用同一媒体或电缆连接所有端用户的一种方式,也就是说,连接端用户的物理媒体由所有设备共享,各工作站地位平等,无中心节点控制,公用总线上的信息多以基带形式串行传递,其传递方向总是从发送信息的节点开始向两端扩散,如同广播电台发射的信息一样,因此又称广播式计算机网络。各节点在接受信息时都进行地址检查,看是否与自己的工作站地址相符,相符则接收网上的信息。
使用这种结构必须解决的一个问题是确保端用户使用媒体发送数据时不能出现冲突。在点到点链路配置时,这是相当简单的。如果这条链路是半双工操作,只需使用很简单的机制便可保证两个端用户轮流工作。在一点到多点方式中,对线路的访问依靠控制端的探询来确定。然而,在LAN环境下,由于所有数据站都是平等的,不能采取上述机制。对此,研究了一种在总线共享型网络使用的媒体访问方法:带有碰撞检测的载波侦听多路访问,英文缩写成CSMA/CD。
这种结构具有费用低、数据端用户入网灵活、站点或某个端用户失效不影响其它站点或端用户通信的优点。缺点是一次仅能一个端用户发送数据,其它端用户必须等待到获得发送权;媒体访问获取机制较复杂;维护难,分支节点故障查找难。尽管有上述一些缺点,但由于布线要求简单,扩充容易,端用户失效、增删不影响全网工作,所以是LAN技术中使用最普遍的一种。
分布式拓扑结构
分布式结构的网络是将分布在不同地点的计算机通过线路互连起来的一种网络形式。
分布式结构的网络具有如下特点:由于采用分散控制,即使整个网络中的某个局部出现故障,也不会影响全网的操作,因而具有很高的可靠性;网中的路径选择最短路径算法,故网上延迟时间少,传输速率高,但控制复杂;各个节点间均可以直接建立数据链路,信息流程最短;便于全网范围内的资源共享。缺点为连接线路用电缆长,造价高;网络管理软件复杂;报文分组交换、路径选择、流向控制复杂;在一般局域网中不采用这种结构。
树型拓扑结构
树型结构是分级的集中控制式网络,与星型相比,它的通信线路总长度短,成本较低,节点易于扩充,寻找路径比较方便,但除了叶节点及其相连的线路外,任一节点或其相连的线路故障都会使系统受到影响。
网状拓扑结构
在网状拓扑结构中,网络的每台设备之间均有点到点的链路连接,这种连接不经济,只有每个站点都要频繁发送信息时才使用这种方法。它的安装也复杂,但系统可靠性高,容错能力强。有时也称为分布式结构。
蜂窝拓扑结构
蜂窝拓扑结构是无线局域网中常用的结构。它以无线传输介质(微波、卫星、红外等)点到点和多点传输为特征,是一种无线网,适用于城市网、校园网、企业网。
混合拓扑结构
混合拓扑结构是由星型结构或环型结构和总线型结构结合在一起的网络结构,这样的拓扑结构更能满足较大网络的拓展,解决星型网络在传输距离上的局限,而同时又解决了总线型网络在连接用户数量上的限制。
混合拓扑的优点:应用相当广泛,它解决了星型和总线型拓扑结构的不足,满足了大公司组网的实际需求。扩展相当灵活。速度较快:因为其骨干网采用高速的同轴电缆或光缆,所以整个网络在速度上应不受太多的限制。缺点是:由于仍采用广播式的消息传送方式,所以在总线长度和节点数量上也会受到限制。同样具有总线型网络结构的网络速率会随着用户的增多而下降的弱点。较难维护,这主要受到总线型网络拓扑结构的制约,如果总线断,则整个网络也就瘫痪了。
创建网络拓扑图的方式有很多,若选择在线绘制网络拓扑图,推荐使用在线制图网站:freedgoDesign。freedgoDesign,其访问地址为:
。freedgodesign在线制图网站是一款多类型的图形图表设计软件,软件内容自带丰富的几何图形模板,可以用于绘制专业的网络拓扑图,泳道图、影响图、SDL图、审批图、会计网络拓扑图等,提供丰富的网络图例子,上手更轻松
在具体的网络拓扑图中需要把业务逻辑分解成更小、更具体的步骤。然后,考虑流程中任何可能的异常,如果是,为备选路径添加决策节点。
继续重复这个过程,直到你达到了每个人都能完全理解的简单步骤。
现在,一起开看如何使用FreedgoDesign制好看的网络拓扑图。
步骤一:
访问
,先注册一个用户,注册成功后,登录到首页
步骤二:
访问
/draw_,进入制图页面,或者从首页页面顶部菜单点击开始制作。
进入制图页面后点击文件->从类型中新建->网络架构->网络图
或者点击图例,在图例中找到网络架构->网络图,选择一个类似的图例进行改动
步骤三:
从左侧符号栏拖拽合适的几何图形至画布,松手后,椭圆图形就被固定画布上,双击几何图形,还可输入文字。当鼠标放置在图形上时,
图形四周会显示“小三角形”,是为了方便用户点击后能够快速生成新的图形。
步骤四:
软件提供多种连接样式,在该网络拓扑图中,可以选择普通的直角连接线。在连接线上,还可以输入文字做进一步的说明。
步骤五:
网络拓扑图制作工具拥有一套功能丰富的样式,用户可以对封闭图形进行单色填充、渐变填充、文本大小位置颜色调整。经过图案填充的网络拓扑图,颜值提升了不少。
步骤六:
按照绘图要求,一步一步的地完成网络拓扑图的绘制。最终完成了整幅的绘制任务。
[注]:在线网络拓扑图设计如何在线制图网络拓扑图网络拓扑部署制作怎么画网络拓扑图网络拓扑工具物理网络部署图网络拓扑图与部署架构图基本网络图制作网络拓扑图制作
网络拓扑图怎么画如何使用visio绘制网络拓扑图画法:
1、打开开始菜单--程序--microsoftofficevisio
2、把需要的绘图菜单调出来:点击文件--形状--网络
3、选择网络里面的服务器、计算机和显示器、网络和外设和网络位置。这是最常用的四项网络绘图功能。
4、选择好绘图工具,在visio的左侧将会出现你选择的绘图工具栏窗口
5、绘图时,根据需要来选择图形。比如说画云:在网络位置的工具栏选择云长按鼠标左键然后拖到右侧的编辑网格中。
6、为了让图形更加的美观,我们还可以对编辑好的图形做一定的放大缩小改动,点击图形四周的绿色小方块拉动鼠标方向键进行相应的调整;
7、网络中间的路线我们可以用工具栏里面的连接线工具来代表。
8、依次把对应的硬件设备和pc编辑上去就ok了。
网络拓扑结构是指用传输媒体互连各种设备的物理布局(将参与LAN工作的各种设备用媒体互连在一起有多种方法,但是实际上只有几种方式能适合LAN的工作)。
网络拓扑图是指由网络节点设备和通信介质构成的网络结构图。
OfficeVisio是一款便于IT和商务专业人员就复杂信息、系统和流程进行可视化处理、分析和交流的软件。使用具有专业外观的OfficeVisio图表,可以促进对系统和流程的了解,深入了解复杂信息并利用这些知识做出更好的业务决策。
MicrosoftOfficeVisio帮助您创建具有专业外观的图表,以便理解、记录和分析信息、数据、系统和过程。
大多数图形软件程序依赖于艺术技能。然而,在您使用Visio时,以可视方式传递重要信息就像打开模板、将形状拖放到绘图中以及对即将完成的工作应用主题一样轻松。OfficeVisio2010中的新增功能和增强功能使得创建Visio图表更为简单、快捷,令人印象更加深刻。
网络拓扑图怎么画如何使用visio绘制网络拓扑图方法/步骤
以microsoftvisio2010为例,首先在电脑上下载并安装visio2010软件,然后打开该软件,如下图所示。
点击模板类型里的网络,在该模板下可以找到基本网络图和详细网络图,如果我们仅仅画一个简单的网络拓扑图,可以选择基本网络图,如下图所示。
点击基本网络图进入绘图界面,在左侧形状列表里可以看到绘制基本网络图所需要的基本形状,如下图所示。
接下来开始绘制网络拓扑图了,首先点击左侧的形状列表,找到计算机和显示器形状,将图形拖到绘图面板,作为网络设备,如下图所示。
然后在图形里绘制交换机,路由器,防火墙,无线接入等设备,并用连接线连接,如下图所示。
最后在添加上设备注释,经过以上操作,一张简单的网络拓扑图就绘制完成了,如下图所示。
拓扑图绘制完毕后,可以通过另存为功能将图纸保存为格式,方便非专业人士浏览,如下图所示。
END
注意事项
除了使用visio之外,使用PPT也可以绘制拓扑图。
1 HDFS中的一些概念
HDFS(Hadoop Distributed File System):分布式文件系统,将一个文件分成多个块,分别存储(拷贝)到不同的节点上,它是Hadoop体系中数据存储管理的基础。它是一个高度容错的系统,能检测和应对硬件故障,用于在低成本的通用硬件上运行。HDFS简化了文件的一致性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序。
11 数据块
每个磁盘都有数据块的概念,在HDFS中也有数据块的概念,HDFS中的所有文件都是分割成块存储在Datanode上的,每个块默认64M。。每个块都有多个副本存储在不同的机器上:默认有3个副本,3个副本不可能存放在同一个机器上。
HDFS副本存放策略
以下是HDFS文件存储架构图
**:表示每台机器
绿色:文件被分割出的块
例如:
上图中part-0文件,有2个块。块1和块3只在2个机器上分别出现过2次。
上图中part-1文件,有3个块。块2,4,5分别在不同的机器上各出现3次
HDFS中也可以显示块信息,使用fsck命令
例如:下面的命令将列出文件系统中各个文件由哪些块构成
$ hadoop fsck / -files -blocks
12 NameNode和DataNode
HDFS的设计是主(Master)从(Slave)结构的。也就是,一个管理者(NameNode)和多个工作者(DataNode)组成。
121 管理者:Namenode
NameNode是主节点,它是一个中心服务器,负责管理整个文件系统的命名空间和控制着客户端对文件的访问。它不保存文件的内容,而是保存着文件的元数据(文件名称,所在目录,文件权限,文件拥有者,文件有多少块,每个块有多少副本,块都存在哪些节点上)。
Namenode负责文件的元数据操作,Datanode处理文件内容的读写请求。
跟文件相关的流不经过Namenode,只会询问该文件跟哪个Datanode有关系。
副本存放在哪些Datanode上是由Namenode来控制。读取文件时,Namenode尽量让用户先读取最近的副本。
Namenode全权管理数据块的复制,周期性的从集群中的每个Datanode接收心跳信号和块状态报告。
Namenode和Datanode就是通过这两种方式来进行通信:
心跳信号:意味着该Datanode节点工作正常
块状态报告:包含了一个该Datanode上所有数据块的列表
元数据保存在内存中
Namenode维护着整个文件系统树以及树内的所有文件。这些信息以两个文件的形式永久保存在磁盘上。命名空间镜像文件(fsimage)和操作日志(fsedits)文件
1 fsimage是什么?
fsimage是元数据镜像文件:Namenode启动后,文件的元数据被加载到内存中,加载到内存后也会把这些元数据写入到本地的磁盘中,这个文件就是fsimage文件。
元数据镜像在内存中保存一份最新的,内存中的镜像=fsimage+fsedit
2 fsedits是什么?
fsedits是元数据操作日志文件:客户端要对文件进行读写操作,在这些操作产生的日志就存在了fsedit文件中。
121 工作者:Datanode
DataNode是从节点,它的作用很简单,就是存储文件的块数据。以及块数据的校验和。
一个数据块在Ddtanode以文件存储在磁盘上,包括两个文件:数据本身和元数据(数据块的长度,块数据的校验和,时间戳)
Datanode启动后向Namenode注册,通过后,周期性(1小时)的向Namenode上报所有块信息。
心跳是3秒一次,如果超过10分钟没有收到某个Datanode的心跳。则认为该节点不可用。
13 Secondary Namenode
Secondary Namenode:Secondary表示助手的意思,也就是说Secondary Namenode表示NameNode的助手,辅助NameNode工作的一个节点。要了解Secondary Namenode节点都辅助NameNode做了哪些工作,我们需要先回顾下NameNode是做什么的?
NameNode是HDFS中的一个主节点,主要是来管理其他DataNode从节点。它存储了HDFS系统的namespace和控制着客户端对HDFS文件系统的访问。NameNode在维护整个文件系统树的时候是以两个文件的形式永久保存在磁盘上。镜像文件(fsimage)和操作日志文件(fsedits)。考虑以下,这两个文件一直这样运行存在着有什么问题?
fsedits操作日志文件会越来越大,因为它保存着客户端对HDFS文件系统的访问日志。
只有在NameNode重启后,edits logs才会合并到fsimage中,产生一个新的文件系统快照。但是NameNode是很少重启的。
为了保证edit logs文件不会太大和fsimage是一个最新的文件,此时需要一个节点来备份这些文件。定期的合并这两个文件然后再推送给NameNode,这样就减轻NameNode工作的压力,同时也保证了假如Namenode节点宕机后数据无法恢复问题。虽然可能不会把所有的数据全部恢复出来,但是至少丢失的很少。
所以,Secondary Namenode做的就是这些辅助工作
Secondary NameNode所做的不过是在文件系统中设置一个检查点来帮助NameNode更好的工作。它不是要取代掉NameNode也不是NameNode的备份。
SecondaryNameNode有两个作用,一是镜像备份,二是日志与镜像的定期合并。两个过程同时进行,称为checkpoint
在core-sitexml配置文件中有2个参数可配置,但一般来说我们不做修改。fscheckpointperiod表示多长时间记录一次hdfs的镜像。默认是1小时。fscheckpointsize表示一次记录多大的size,默认64M。
<property> <name>fscheckpointperiod</name> <value>3600</value> <description>The number of seconds between two periodic checkpoints </description></property><property> <name>fscheckpointsize</name> <value>67108864</value> <description>The size of the current edit log (in bytes) that triggers a periodic checkpoint even if the fscheckpointperiod hasn’t expired </description></property>可以参考这篇博客,写的还是很详细的Secondary NameNode:它究竟有什么作用?
14 HDFS的优缺点
优点:
高容错性
数据自动保存多个副本
副本丢失后,自动恢复
适合批处理
移动计算而非数据
数据位置暴露给计算框架
适合大数据处理
GB、TB、甚至PB级数据
百万规模以上的文件数量
10K+节点规模
流式文件访问
一次性写入,多次读取
保证数据一致性
可构建在廉价机器上
通过多副本提高可靠性
提供了容错和恢复机制
缺点:
低延迟与高吞吐率的数据访问 ,比如毫秒级
小文件存取
占用NameNode大量内存
寻道时间超过读取时间
并发写入、文件随机修改
一个文件同一个时间只能有一个写者
仅支持append
2 HDFS的架构
HDFS以流式数据访问(一次写入,多次读取)模式来存储超大文件,运行于商用硬件集群上。超大文件是指GB,TB,PB的文件。目前已经有存储到PB级别的Hadoop集群了。
计算机字节关系
Hadoop1x HDFS官方架构图
21 HDFS架构之NameNode和DataNode
HDFS架构图
客户端(HDFS Client):如果想对文件进行读写的话,首先需要通过Namenode来获取一些信息。Namenode存储着命名空间(namespace)和元数据(metadata)
客户端有如下工作:
文件的切分
与Namenode交互,获取文件位置信息
与Datanode交互,读取或者写入数据
管理HDFS
访问HDFS(浏览器,Shell命令,JavaAPI)
辅助节点(Secondary):用于辅助Namenode工作,分担其工作量。主要工作是nameSpace的冷备份工作,并非热备份。定期将Namenode的镜像文件(fsimage)和操作日志(fsedit)进行合并,然后推送给Namenode
1 fsimage是什么?
是元数据镜像文件:Namenode启动后,文件的元数据被加载到内存中,加载到内存后也会把这些元数据写入到本地的磁盘中,这个文件就是fsimage文件。
元数据镜像在内存中保存一份最新的,内存中的镜像=fsimage+fsedit
2 fsedits是什么?
是元数据操作日志文件:客户端要对文件进行读写操作,在这些操作产生的日志就存在了fsedit文件中。
数据节点(Datanode):Namenode和Datanode通信是通过心跳和块报告。每个文件被分割成不同的块,存在不同的机器的本地磁盘上。
22 Namenode和Secondary Namenode运行关系
Secondarynamenode工作原理
日志与镜像的定期合并总共分以下五步:
Secondary Namenode通知Namenode切换editlog
Secondary Namenode通过Http方式从Namenode获取fsimage和editlog
Secondary Namenode将fsimage载入内存,然后开始合并editlog
Secondary Namenode将新的fsimage发回给Namenode
Namenode收到fsiamge后将新的fsimage替换旧的fsimage
3 HDFS文件的读写流程
31 HDFS文件的读取
HDFS文件读取:
首先调用FileSystem对象的open方法,其实是一个DistributedFileSystem的实例
DistributedFileSystem通过rpc获得文件的第一批个block的locations,同一block按照重复数会返回多个locations,这些locations按照hadoop拓扑结构排序,距离客户端近的排在前面
前两步会返回一个FSDataInputStream对象,该对象会被封装成DFSInputStream对象,DFSInputStream可以方便的管理datanode和namenode数据流。客户端调用read方法,DFSInputStream最会找出离客户端最近的datanode并连接。
数据从datanode源源不断的流向客户端。
如果第一块的数据读完了,就会关闭指向第一块的datanode连接,接着读取下一块。这些操作对客户端来说是透明的,客户端的角度看来只是读一个持续不断的流。
如果第一批block都读完了,DFSInputStream就会去namenode拿下一批blocks的location,然后继续读,如果所有的块都读完,这时就会关闭掉所有的流。
32 HDFS文件的写入
HDFS文件写入:
客户端通过调用DistributedFileSystem的create方法创建新文件
DistributedFileSystem通过RPC调用namenode去创建一个没有blocks关联的新文件,创建前,namenode会做各种校验,比如文件是否存在,客户端有无权限去创建等。如果校验通过,namenode就会记录下新文件,否则就会抛出IO异常
前两步结束后会返回FSDataOutputStream的对象,和读文件的时候相似,FSDataOutputStream被封装成DFSOutputStream,DFSOutputStream可以协调namenode和datanode。客户端开始写数据到DFSOutputStream,DFSOutputStream会把数据切成一个个小packet,然后排成队列data quene。
DataStreamer会去处理接受data quene,他先问询namenode这个新的block最适合存储的在哪几个datanode里,比如重复数是3,那么就找到3个最适合的datanode,把他们排成一个pipelineDataStreamer把packet按队列输出到管道的第一个datanode中,第一个datanode又把packet输出到第二个datanode中,以此类推。
DFSOutputStream还有一个对列叫ack quene,也是有packet组成,等待datanode的收到响应,当pipeline中的所有datanode都表示已经收到的时候,这时akc quene才会把对应的packet包移除掉。
客户端完成写数据后调用close方法关闭写入流
DataStreamer把剩余得包都刷到pipeline里然后等待ack信息,收到最后一个ack后,通知datanode把文件标示为已完成。
一种方案为Haproxy+etcd+confd,采用松散式的组织结构,但各个组件之间的通讯是非常严密的,且扩展性更强,定制也更加灵活。
一、架构优势
约定由Haproxy+etcd+confd+Docker构建的基础服务平台简称“HECD” 架构,整合了多种开源组件,看似松散的结构,事实上已经是一个有机的整体,它们互相联系、互相作用,是Docker生态圈中最理想的组合之一,具有以下优势:
自动、实时发现及无感知服务刷新;
支持任意多台Docker主宿机;
支持多种APP接入且打散至不分主宿机;
采用Etcd存储信息,集群支持可靠性高;
采用Confd配置引擎,支持各类接入层,如Nginx;
支持负载均衡、故障迁移;
具备资源弹性,伸缩自如(通过生成、销毁容器实现);
二、架构说明在HECD架构中,首先管理员操作Docker Client,除了提交容器(Container)启动与停止指令外,还通过REST-API方式向Etcd(K/V)存储组件注册容器信息,包括容器名称、主宿机IP、映射端口等。Confd配置组件会定时查询Etcd组件获取最新的容器信息,根据定义好的配置模板生成Haproxy配置文件Haproxycfg,并且自动reload haproxy服务。用户在访问业务服务时,完全没有感知后端APP的上线、下线、切换及迁移,达到了自动发现、高可用的目的。详细架构图见图1-1。
图1-1 平台架构图
为了方便大家理解各组件间的关系,通过图1-2进行架构流程梳理,首先管理员通过Shell或API操作容器,下一步将容器信息注册到Etcd组件,Confd组件会定时查询Etcd,获取已经注册到Etcd中容器信息,最后通过Confd的模板引擎生成Haproxy配置,整个流程结束。
图1-2架构流程图
了解架构流程后,我们逐一对流程中各组件进行详细介绍。
1、Etcd介绍
Etcd是一个高可用的 Key/Value 存储系统,主要用于分享配置和服务发现。
简单:支持 curl 方式的用户 API (HTTP+JSON)
安全:可选 SSL 客户端证书认证
快速:单实例可达每秒 1000 次写操作
可靠:使用 Raft 实现分布式
2、Confd介绍
Confd是一个轻量级的配置管理工具。通过查询Etcd,结合配置模板引擎,保持本地配置最新,同时具备定期探测机制,配置变更自动reload。
3、Haproxy介绍
HAProxy是提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。(来源百科)
三、架构部署
平台环境基于Centos65+Docker12构建,其中Etcd的版本为etcd version 050-alpha,Confd版本为confd 062,Haproxy版本为HA-Proxy version 1424。下面对平台的运行环境、安装部署、组件说明等进行详细说明,环境设备角色表如下:
1、组件安装
11 Docker安装
SSH终端登录192168122服务器,执行以下命令:
# yum -y install docker-io# service docker start
# chkconfig docker on
12 Haproxy、confd安装
SSH终端登录192168120服务器,执行以下命令:
1、haproxy# yum –y install haproxy
2、confd
# wget https://githubcom/kelseyhightower/confd/releases/download/v063/confd-063-linux-amd64
# mv confd /usr/local/bin/confd
# chmod +x /usr/local/bin/confd
# /usr/local/bin/confd -version
confd 062
13 Etcd安装
SSH终端登录192168121服务器,执行以下命令:
# yum -y install golang# mkdir -p /home/install && cd /home/install
# git clone https://githubcom/coreos/etcd
# cd etcd
# /build
# cp bin/etcd /bin/etcd
# /bin/etcd -version
etcd version 050-alpha 2、组件配置
21 Etcd配置
由于etcd是一个轻量级的K/V存储平台,启动时指定相关参数即可,无需配置。
# /bin/etcd -peer-addr 192168121:7001 -addr 192168121:4001 -data-dir /data/etcd -peer-bind-addr 0000:7001 -bind-addr 0000:4001 &由于etcd具备多机支持,参数“-peer-addr”指定与其它节点通讯的地址;参数“-addr”指定服务监听地址;参数“-data-dir”为指定数据存储目录。
由于etcd是通过REST-API方式进行交互,常见操作如下:
1) 设置(set) key操作
# curl -L http://192168121:4001/v2/keys/mykey-XPUT -d value="this is awesome"{"action":"set","node":{"key":"/mykey","value":"this is awesome","modifiedIndex":28,"createdIndex":28}} 2) 获取(get) key信息# curl -L http://192168121:4001/v2/keys/mykey
{"action":"get","node":{"key":"/mykey","value":"this is awesome","modifiedIndex":28,"createdIndex":28}}
3) 删除key信息
# curl -L http://192168121:4001/v2/keys/mykey-XDELETE {"action":"delete","node":{"key":"/mykey","modifiedIndex":29,"createdIndex":28},"prevNode":{"key":"/mykey","value":"this is awesome","modifiedIndex":28,"createdIndex":28}} 更多操作API见https://githubcom/coreos/etcd/blob/master/Documentation/apimd。22 Confd+Haproxy配置
由于Haproxy的配置文件是由Confd组件生成,要求Confd务必要与haproxy安装在同一台主机上,Confd的配置有两种,一种为Confd资源配置文件,默认路径为“/etc/confd/confd”目录,另一种为配置模板文件,默认路径为“/etc/confd/templates”。具体配置如下:
创建配置文件目录
# mkdir -p /etc/confd/{confd,templates}(1)配置资源文件
详细见以下配置文件,其中“src”为指定模板文件名称(默认到路径/etc/confd/templates中查找);“dest”指定生成的Haproxy配置文件路径;“keys”指定关联Etcd中key的URI列表;“reload_cmd”指定服务重载的命令,本例中配置成haproxy的reload命令。
/etc/confd/confd/ haproxytoml
[template]src = "haproxycfgtmpl"
dest = "/etc/haproxy/haproxycfg"
keys = [
"/app/servers",
]
reload_cmd = "/etc/initd/haproxy reload"
(2)配置模板文件
Confd模板引擎采用了Go语言的文本模板,更多见http://golangorg/pkg/text/template/,具备简单的逻辑语法,包括循环体、处理函数等,本示例的模板文件如下,通过range循环输出Key及Value信息。
/etc/confd/templates/haproxycfgtmpl
globallog 127001 local3
maxconn 5000
uid 99
gid 99
daemon
defaults
log 127001 local3
mode http
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen frontend 0000:80
mode http
balance roundrobin
maxconn 2000
option forwardfor
{{range gets "/app/servers/"}}
server {{base Key}} {{Value}} check inter 5000 fall 1 rise 2
{{end}}
stats enable
stats uri /admin-status
stats auth admin:123456
stats admin if TRUE
(3)模板引擎说明
本小节详细说明Confd模板引擎基础语法与示例,下面为示例用到的KEY信息。
# curl -XPUT http://192168121:4001/v2/keys/app/servers/backstabbing_rosalind-d value="192168122:49156"# curl -XPUT http://192168121:4001/v2/keys/app/servers/cocky_morse-d value="192168122:49158"
# curl -XPUT http://192168121:4001/v2/keys/app/servers/goofy_goldstine-d value="192168122:49160"
# curl -XPUT http://192168121:4001/v2/keys/app/servers/prickly_blackwell-d value="192168122:49162"1、base
作为pathBase函数的别名,获取路径最后一段。
{{ with get "/app/servers/prickly_blackwell"}}
server {{base Key}} {{Value}} check
{{end}}
prickly_blackwell 192168122:491622、get
返回一对匹配的KV,找不到则返回错误。
{{with get "/app/servers/prickly_blackwell"}}
key: {{Key}}
value: {{Value}}
{{end}}
/app/servers/prickly_blackwell 192168122:491623、gets
{{range gets "/app/servers/"}}
{{Key}} {{Value}}
{{end}}
/app/servers/backstabbing_rosalind 192168122:49156/app/servers/cocky_morse 192168122:49158
/app/servers/goofy_goldstine 192168122:49160
app/servers/prickly_blackwell 192168122:49162
4、getv
返回一个匹配key的字符串型Value,找不到则返回错误。
{{getv "/app/servers/cocky_morse"}}
192168122:491585、getvs
返回所有匹配key的字符串型Value,找不到则返回错误。
{{range getvs "/app/servers/"}}
value: {{}}
{{end}}
value: 192168122:49156value: 192168122:49158
value: 192168122:49160
value: 192168122:49162
6、split
对输入的字符串做split处理,即将字符串按指定分隔符拆分成数组。
{{ $url := split (getv "/app/servers/cocky_morse") ":" }}
host: {{index $url 0}}
port: {{index $url 1}}
host: 192168122port: 49158
7、ls
返回所有的字符串型子key,找不到则返回错误。
{{range ls "/app/servers/"}}
subkey: {{}}
{{end}}
subkey: backstabbing_rosalindsubkey: cocky_morse
subkey: goofy_goldstine
subkey: prickly_blackwell
8、lsdir
返回所有的字符串型子目录,找不到则返回一个空列表。
{{range lsdir "/app/"}}
subdir: {{}}
{{end}}
subdir: servers(4)启动confd及haproxy服务
下面为启动Confd服务命令行,参数“interval”为指定探测etcd的频率,单位为秒,参数“-node”为指定etcd监听服务主地址,以便获取容器信息。
# /usr/local/bin/confd -verbose -interval 10 -node '192168121:4001' -confdir /etc/confd > /var/log/confdlog &# /etc/initd/haproxy start
0条评论