开办一个网站都需要哪些程序?
网站早已不再神秘,再也不是什么高技术活。普通用户也可以轻松的建立出相对专业的网站。下面向大家简单介绍一下个人建站的一些流程和注意事项。
一、域名
要想让人家访问自己的网站,域名是必不可少的。域名要尽可能的短、尽可能的方便记忆,比如top域名,当然现在好记的、有特征的域名已经不多了,这需要你自己进行考虑,只要觉得有一定的规律或便于用户记忆即可。
二、空间
要建网站,其次必须要有一个空间,即存放网站的地方。对于个人用户,建议购买虚拟主机。在购买虚拟主机时要看其服务、速度、响应时间等。一般选择有一定名气的服务商即可。
注:域名、空间目前国内比较好的服务商像阿里云、西部数码、中国数据等都是非常好的选择。
三、网站程序
网站程序当然是选择现成的,因为个人没有必要去从头开始编制一个网站程序,也没有那个实力。现在网上有现成的网站管理系统,这类系统还有很多,可以在自己综合试用的基本上进行选择。
在选择网站程序时,还必须考虑到其通用性和二次开发。对于通用性不好、不利于二期开发的,虽然功能强大但不建议选用,因为网站有了一定规模后需要进行个性化功能设计时会很麻烦。另外程序尽量选择asp(aspnet),PHP、JSP等在国内不是特别流行;在asp和aspnet之间也尽量选用aspnet,毕竟其基于net架构是发展的潮流。
四、网站设计
选择好了网站程序后,则需要根据自己的需要进行网站设计。一般来说,如果有专业的美工和程序员进行修改自然最好。不过个人站长可能不一定具备这种条件,可以选择服务商的智能建站。
linux系统好用的软件?
1、GoogleChromeGoogleChrome是一个强大并且功能完善的浏览器解决方案,它拥有完美的同步功能以及丰富的扩展。如果你喜欢Google的生态系统那么GoogleChrome毫无疑问会是你的菜。如果你想要更加开源的解决方案,你可以尝试Chromium,它是GoogleChrome的上游项目。
2、uGet
uGet是我遇到过最棒的下载管理器,它是开源的并且能满足你对于一款下载管理器的一切期许。uGet提供一系列便于管理下载的高级设置。你能够管理下载队列并且断点续传,针对大文件使用多连接下载,根据不同列表将文件下载至不同路径,等等。
3、Dropbox
Dropbox是目前最流行的云存储服务之一,它为新用户提供了2GB的免费存储空间,以及一个健壮并且易于使用的Linux客户端。
4、Pidgin
Pidgin是一款开源的即时通讯工具,它支持许多聊天平台,包括GoogleTalk、Yahoo甚至IRC。Pidgin可通过第三方插件进行扩展,能提供许多附加功能。
5、LibreOfficeLibreOffice是Linux平台上开发最为活跃的开源办公套件,主要包括Writer、Calc、Impress、Draw、Math、Base六个主要模块,并且每个模块都提供广泛的文件格式支持。同时LibreOffice也支持第三方的扩展,以上优势使它成为许多Linux发行版的默认办公套件。
6、Lollypop
Lollypop是一款相对较新的开源音乐播放器,拥有漂亮又不失简洁的用户界面。它提供优秀的音乐管理、歌曲推荐、在线广播和派对模式支持。虽然它是一款不具有太多特性的简洁音乐播放器,但仍值得我们去尝试。
7、VLC
VLC是一款简洁、快速、轻量并且非常强大的开源媒体播放器,它能够直接播放几乎所有格式的媒体文件,同时也能够播放在线的流媒体。它也能够安装一些时髦的扩展来完成不同的任务,比如直接在播放器内下载字幕。
8、GIMP
GIMP是Linux平台上Photoshop的替代品,它是一款开源、全功能并且专业的照片编辑软件。它打包了各式各样的工具用来编辑,更强大的是,它包含丰富的自定义设置以及第三方插件来增强体验。
9、Albert
Albert是一款快速、可扩展、可定制的生产力工具,受Alfred(Mac平台上一个非常好的生产力工具)启发并且仍处于开发阶段,它的目标是“使所有触手可及”。它能够与你的Linux发行版非常好的集成,帮助你提高生产力。
云计算提供的服务包括哪三样?
云计算通常可以分为三类:将基础设施作为服务(IaaS)、将平台作为服务(PaaS)和将软件作为服务(SaaS)。
1、IaaS:将硬件设备等基础资源封装成服务供用户使用。在IaaS环境中,用户相当于在使用裸机和磁盘,既可以让它运行Windows,也可以让它运行Linux。IaaS最大优势在于它允许用户动态申请或释放节点,按使用量计费。而IaaS是由公众共享的,因而具有更高的资源使用效率。
2、PaaS:提供用户应用程序的运行环境,典型的如GoogleAppEngine。PaaS自身负责资源的动态扩展和容错管理,用户应用程序不必过多考虑节点间的配合问题。但与此同时,用户的自主权降低,必须使用特定的编程环境并遵照特定的编程模型,只适用于解决某些特定的计算问题。
3、SaaS:针对性更强,它将某些特定应用软件功能封装成服务。SaaS既不像PaaS一样提供计算或存储资源类型的服务,也不像IaaS一样提供运行用户自定义应用程序的环境,它只提供某些专门用途的服务供应用调用。
linux云计算运维是做什么的?
是做评估产品需求及发展需求,设计网站架构的。
涉及的工作有采购服务器、安装系统、配置服务、服务器IDC上架、优化系统及服务、上线代码、配合研发搭建环境等。
linux云计算运维学什么
1、Linux系统基础-Linux的基础知识内容、命令的使用,以及用户和权限等核知识点;
2、Linux系统管理和进阶-Linux从进程、资源、任务、软件、软件包、磁盘等管理法;
3、Linux企业常用服务-企业级常用服务如DNS、FTP、Http、mail;
4、Linux企业级安全原理和防范技巧以及网络和安全-Linux安全架构、安全威胁模型、以及加密、解密等原理,常见攻击和防范手段;
5、Shell编程门及进阶-Shell脚本基本用法以及进阶,从基础到精通,需要学习一些企业级常见脚本用法。
云服务器如何保障安全?
秘诀一:从基本做起,及时安装系统补丁。不论是Windows还是Linux,任何操作系统都有漏洞,及时打上补丁避免漏洞被蓄意攻击利用,是服务器安全重要的保证之一。
秘诀二:安装和设置防火墙。对服务器安全而言,安装防火墙非常必要。防火墙对于非法访问具有很好的预防作用,但是安装了防火墙并不等于服务器安全了。在安装防火墙之后,还需要根据自身的网络环境,对防火墙进行适当的配置以达到最好的防护效果。
秘诀三:安装杀毒软件。现在网络上的病毒非常猖獗,这就需要在网络服务器上安装网络版的杀毒软件来控制病毒传播。同时,在网络杀毒软件的使用中,要定期或及时升级杀毒软件,并且每天自动更新病毒库。
秘诀四:关闭不需要的服务和端口。服务器操作系统在安装时,会启动一些不需要的服务,这样会占用系统的资源,而且也会增加系统的安全隐患。对于一段时间内完全不会用到的服务器,可以完全关闭;对于其间要使用的服务器,也应该关闭不需要的服务,如Telnet等。另外,还要关掉没有必要开的TCP端口。
秘诀五:定期对服务器进行备份。为防止不能预料的系统故障或用户不小心的非法操作,必须对系统进行安全备份。除了对全系统进行每月一次的备份外,还应对修改过的数据进行每周一次的备份。同时,应该将修改过的重要系统文件存放在不同服务器上,以便出现系统崩溃时(通常是硬盘出错),可以及时地将系统恢复到正常状态。
秘诀六:账号和密码保护。账号和密码保护可以说是服务器系统的第一道防线,目前网上大部分对服务器系统的攻击都是从截获或猜测密码开始的。一旦黑客进入了系统,那么前面的防卫措施几乎就失去了作用,所以对服务器系统管理员的账号和密码进行管理是保证系统安全非常重要的措施。
秘诀七:监测系统日志。通过运行系统日志程序,系统会记录下所有用户使用系统的情形,包括最近登录时间、使用的账号、进行的活动等。日志程序会定期生成报表,通过对报表进行分析,就可以知道是否有异常现象。
公司近年来在新媒体直播方面大胆尝试,积累了丰富的异地多会场媒体直播实战经验。本文以一次重要活动的技术方案为例,阐述此类直播技术的设计和实现方法,该技术的运用能起到扩大赛事活动影响,营造主会场与分会场上下联动的作用。
为扩大影响,营造热烈氛围,主办方要求电视台能够对各会场活动进行大屏展示并进行实况互动直播,效果呈现为:主会场可以观看收听到其他分会场视音频信号,分会场也可以收听收看主会场视音频信号。经过前期与运营商、相关部门进行调研沟通,后期技术人员的系统调试和网络搭建测试,初步选定了两个方案。
一个方案是网络推拉流直播。技术上需要在各分会场布置拍摄地点和网络专线,通过切换设备输出一路现场视音频总信号进行编码,然后以推流的方式将码流输出到云端服务器,由云端软件管理界面完成信号画面的发布和调度。该方案优点是技术上部署快,架构简单,短期内可以快速实现,所以是目前媒体公司多会场直播实现的主要方法,加上设备相对简单,后台由直播平台管理,所以成本较低,多数直播平台采用此方案直播,人员设备采用打包租赁的方式,活动案例很多。有如某公司由扎根华南,服务大湾区的电视转播服务商。团队承包全国多个重要赛事、节目的直播项目。公司与北京星拓视联文化传媒有限公司、四开花园网络科技(广州)有限公司、北京龙聚文化传媒有限公司、河南卫视、澳亚卫视等企事业单位有长期合作关系。曾制作过国外版权机构ESPN播出的直播节目,拥有强大的制作实力。直播案例包括:2019散打天下总决赛(广西贵港)、EFP-恒大U15/U17足球冠军赛(双制作区)、河南卫视-武林风横琴之巅直播、Glory荣耀拳击赛事、WCBA-中国女子篮球联赛。缺点是由于直播码率偏低,视频质量通常在6M以下,延时也比较严重,通常为6到10秒。
另一个方案是电视直播。在各分会场布置视音频现场制作系统,三机位广播级摄像机加现场切换台输出广播级现场信号通过编码器进行码流转换成IP视频流,传输至视音频光端机进行信号传输,经过运营商内部光纤网络、STN专网或MSTP综合业务平台完成双向数据交互。异地多会场视频电视直播的切换的方式通常分为三级,一级切换负责总信号的制作,二级切换负责汇总各会场的信号供一级切换,三级切换负责各分会场现场信号的制作。整个系统涉及各个部门和人员协同参与(市县两级电视台、通信运营商、设备厂商、网络营运商)。该方案优点:直播码率较高,视音频质量和清晰度方面优势明显,安全有保障。缺点:调试时间较长,投入人力设备多,成本高。
因电视直播方案涉及技术面广,效果较好,本文选择此方案作为重点阐述。
一直播技术方案
1 前期准备工作
公司在直播上需要多部门分工合作,共同进行系统测试和网络搭建,在效果呈现上需满足:
◆各会场视频信号接入现场大屏显示;
◆各分会场大屏均可以看到主会场视频信号;
◆主会场大屏可根据节目流程切换显示分会场视频信号。
技术上实现:主会场通过视频切换台对主会场视频信号以及分会场视频信号进行特技切换,视频信号和音频信号输出至直播编码器,直播编码器对视音频信号进行采集并编码,发布至电视广播直播或流媒体服务器进行各平台分发直播。用户通过电视广播收看收听或移动客户端访问主站点,进行身份验证后即能进行会议信息的接收以及会议实况录像的选择观看。
前期准备工作有:
◆协调营运商布点施工提供直播专线网络和互联网专线;
◆协调营运商提供STN平台传输,并完成各会场的布点、协同调试保障工作;
◆各分会场的视频拍摄和切换输出系统安装调试;
◆主会场和各分会场编解码和光收发设备的安装调试;
◆系统联调;
◆外包宣传团队进行前期宣传
高效的团队结构,策略核心来自国际4A广告李奥贝纳;产品核心来自全球知名企业汇丰银行;技术核心来自老牌行业巨头微软科技;地处南中国一线城市广州,国内电商互联网巨头云集的地区,与业界紧密接触,掌握前沿信息与资源。作为越秀集团合作伙伴,为集团提供年度社会责任报告装订版及线上版的设计与制作;作为平安人寿APP内容制作供应商,为平安人寿提供多款游戏及互动应用。
2网络直播流程细则
前期准备:根据客户提出的直播要求,预约准确的直播时间,制定直播成熟的策划,引入抽奖元素,吸引用户;前期专业团队制作宣推的推文、小程序等进行预热,多渠道分发保证直播传播效果;公司专业服化团队,指导主播造型,全程负责直播主播的妆发;直播道具、器材齐全,可适用于室内室外直播,直播设备包括但不限于脚架、话筒、摄像机、单反、灯光等。
直播现场:提前2小时到场布置场地,调整灯光,加防抖效果,以保证直播质量达到最佳效果确认最佳拍摄位置,技术人员检测设备和网速。
直播期间:确保网络畅通,手机直播若使用wifi则开启飞行模式,拉流直播由导播密切关注网络情况,同时制定全方位的应急预案。直播助手留意现场直播情况,关注观众提出问题,及时互动。直播过程中进行抽奖互动,现场直播放置二维码,让用户扫码进群抽奖,送出礼品。扫码进群保证直播观看人数不下降,保持直播热度。
直播后:及时生成直播视频,反馈直播数据。
3设备的选型
整个系统组成包括:主会场视音频设备(广播直播车、电视直播车、新媒体直播系统、网络直播万能机、多路编解码器)。制作设备具体为大型直播运营一台8讯道(扩16讯)4K超高清转播车、、一套12讯道高清EFP,
UHD-1转播车车内配置。车体(含车头):单侧拉12米,展开4米;摄像机:索尼HDC4300x8讯(各焦段佳能4K镜头);切换台:索尼XVS6000 2ME 28键直切;矩阵:ROSS ultrix 64X64(12G)带净切换倒换备份;同步:泰克SPG700系列同步发生器及倒换;画面分割:Ross UltrixScape;周边模块:Opengear系列Ross及Cobalt 9904等;转换器:索尼hdrc4000 HDR转换器x2台;通话系统:RTS ZEUSIII +KP32/KP12面板EVS:XT-VIA /XT4K(按需,最大4个LSM工位) 录制:AJA kipro ultra plus音频:YAMAHA CL3主台、YAMAHA-DM1000备台、dante音频路由及台口箱。)。同时也为各种小型直播,配备有针对性的全套直播设备包括电容麦克风、外置声卡、美颜摄像头、监听耳麦、直播电脑(拉流)、补光灯、支架配件。
主会场是活动直播是否能够取得成功的关键点,因此在系统搭建的时候我们除了考虑设备的安全稳定性外,重点还对关键部位进行了备份;分会场视音设备;便携式视频切换台;编解码设备;光端收发设备;直播采集分发设备;光网络内部数据系统;网络服务中心(流媒体服务器、WEB服务器、数据库服务器);各会场终端设备;会场LED大屏显示系统。
4 网络架设方案
由于普通光端机信号传输距离过大,需要加设中继设备对光信号进行放大才能收发正常,安全性因此受到路由节点的不稳定因素影响。因此,我们放弃了视音频基带信号进行远距离光传输的方法,采用了网络运营商的专网和骨干传输网核心传输技术,此方案采用了电信STN(Smart Transport Network)智能传送网,是采用IP RAN和PTN技术相结合发展起来的一种增强型分组组网技术,是可以承载视频、音频、数据的综合应用网络,最大的优点是可以灵活地调整带宽,有着高可靠性做保障,通过网管可以实现端对端的管理,性能指标好(吞吐量、时延、丢帧率)。视音频信号运用编解码压缩,通过TS over IP面向专业广播电视信号传输实现流通进行传输,将TS包封装成IP包,经广播电视编解码设备上的IP输入输出接口进行配置,在发送端完成编码和IP化,在接收端经过适配、解复用、解码的逆转过程解码后输出现场信号,系统总延时在两秒之内,能够较好地完成各地的视音频信号实时传输,传输质量稳定可靠,更为灵活有效。此次直播技术系统包含“信号摄录”“信号处理及调度”“信号传输”“信号呈现及发布”等四部分,依据传输手段和发布渠道的异同,分为:公网IP流直播、专网IP流直播、电视直播、广播直播。所有现场信号通过编码器,把视频信号转换成IP流,通过公网(4G网络和光纤专网),把信号传输到各个会场,在主会场通过解码器把信号传输分发到各平台进行直播。传输网络拓扑如图2。
5 核心参数的设置
多会场异地直播不仅系统繁杂,投入的人员和装备规模大,指挥调度协同难度高,为确保系统的稳定安全和协同工作有序展开,技术人员对系统采用的主要编码参数和传输网络分别进行饱和压力测试,从而确保广播电视信号可以正常工作于电信运营商提供的专网,保障活动直播安全稳定进行。
主会场电信专网采用上下行1000M带宽,各分会场上下行100M带宽,采用电信专网STN加内部业务地址实现源到目的IP点对点编解码组播形式进行multicast,另外运营商再提供上下行100M互联网专线,并单独提供公网IP以及开通以下端口:9000-9010、18255、10020、80、1935。现场广播电视信号以H264进行编码,编码器主要参数设置有:视频方面码率为10Mbps,GOP Length:12,buffer mode:CBR,GOP Structure:IBBP,音频方面PCR间隔:18,音频编码标准为:MPEG Layer2 bitrate256Kbps,音频声道:stereo,网络协议采用:IP Encapsulation:UDP,IP包为TS Packets per IP Packet:7。特别需要注意的是,在编码器中音频的设置需要把AC3BYPASS设置为OFF,否则编码器的SDI接口会出现只有画面没有声音的情况。在配置编解码器时还需要注意源IP是编码器IP,目的IP是解码器在NMS软件里的TS over IP里设置的IP(与解码器的液晶面板IP是不同的,液晶面板的IP设置对应的是NMS软件里的管理IP)。
二经验总结
◆主办方牵头成立直播工作领导小组,统筹协调各单位有效配合为活动直播提供技术支持、保障、服务,明确了责任分工;
◆确定活动整体方案,因电视台本身没有光纤网络传输平台,所以主办方需在明确各会场地点后协调运营商解决各直播点之间的视频光纤专线布点和与主会场之间连接贯通,并提供STN平台运用,同时提供会场数据网络光纤专线和内部高速网络的布点、调试与贯通;
◆直播预备基本应急措施。如直播信号有主备路、甚至多路信号保障,要求多路播出前进行技术测试,保证畅通、互不交织,以确保需要时相互转换;直播节目进行相对延时播出,发现问题及时更改补救;直播出现如何问题,有准备直播内容相关的静止画面或短视频,及时进行遮挡操作。
◆县区台支持会场的视频导播切换、视频拍摄;
◆设备系统厂家支持会场流媒体直播系统、编解码的调试运行保障。正是由于指挥调度高效、前期准备工作充分、专业技术人员调试到位,诸多直播工作才能圆满顺利完成。
三结束语
以上就是异地多会场直播的方案,这种方案已经成功地运用多个重要活动直播当中,如文明火炬传递、桃花节、马拉松等活动。该方案的成功运用开创了传统媒体直播和新媒体直播融合发展的先河,收到了良好的社会效益和经济效益,在实际运用中,满足了在重大活动直播中的新要求,突破了传统多点异地直播中电视直播的时间空间限制,系统搭建更加灵活,实现更加快捷便利。未来我们将更加有效地组织开展新系统新技术的探索和运用,优化流程,确保在直播中系统能够更加安全,运行更加稳定高效;充分结合传统媒体和新媒体的技术运用,发挥媒体融合技术先行的优势,促进媒体深度融合。
消息队列(Message Queue)是一种进程间通信或同一进程的不同线程间的通信方式。
Broker(消息服务器)
Broker的概念来自与Apache ActiveMQ,通俗的讲就是MQ的服务器。
Producer(生产者)
业务的发起方,负责生产消息传输给broker
Consumer(消费者)
业务的处理方,负责从broker获取消息并进行业务逻辑处理
Topic(主题)
发布订阅模式下的消息统一汇集地,不同生产者向topic发送消息,由MQ服务器分发到不同的订阅 者,实现消息的广播
Queue(队列)
PTP模式下,特定生产者向特定queue发送消息,消费者订阅特定的queue完成指定消息的接收。
Message(消息体)
根据不同通信协议定义的固定格式进行编码的数据包,来封装业务数据,实现消息的传输
点对点模型用于消息生产者和消息消费者之间点到点的通信。
点对点模式包含三个角色:
每个消息都被发送到一个特定的队列,接收者从队列中获取消息。队列保留着消息,可以放在内存 中也可以持久化,直到他们被消费或超时。
特点:
发布订阅模型包含三个角色:
多个发布者将消息发送到Topic,系统将这些消息传递给多个订阅者。
特点:
AMQP即Advanced Message Queuing Protocol,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP 的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
优点:可靠、通用
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议。
优点:格式简洁、占用带宽小、移动端通信、PUSH、嵌入式系统
STOMP(Streaming Text Orientated Message Protocol)是流文本定向消息协议,是一种为MOM(Message Oriented Middleware,面向消息的中间件)设计的简单文本协议。STOMP提供一个可互操作的连接格式,允许客户端与任意STOMP消息代理(Broker)进行交互。
优点:命令模式(非topic\queue模式)
XMPP(可扩展消息处理现场协议,Extensible Messaging and Presence Protocol)是基于可扩展标记语言(XML)的协议,多用于即时消息(IM)以及在线现场探测。适用于服务器之间的准即时操作。核心是基于XML流传输,这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。
优点:通用公开、兼容性强、可扩展、安全性高,但XML编码格式占用带宽大
RabbitMQ 是实现 AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 RabbitMQ 主要是为了实现系统之间的双向解耦而实现的。当生产者大量产生数据时,消费者无法快速消费,那么需要一个中间层。保存这个数据。
RabbitMQ 是一个开源的 AMQP 实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP 等,支持 AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
Channel(通道)
道是两个管理器之间的一种单向点对点的的通信连接,如果需要双向交流,可以建立一对通道。
Exchange(消息交换机)
Exchange类似于数据通信网络中的交换机,提供消息路由策略。
RabbitMq中,producer不是通过信道直接将消息发送给queue,而是先发送给Exchange。一个Exchange可以和多个Queue进行绑定,producer在传递消息的时候,会传递一个ROUTING_KEY,Exchange会根据这个ROUTING_KEY按照特定的路由算法,将消息路由给指定的queue。和Queue一样,Exchange也可设置为持久化,临时或者自动删除。
Exchange有4种类型:direct(默认),fanout, topic, 和headers。
不同类型的Exchange转发消息的策略有所区别:
Binding(绑定)
所谓绑定就是将一个特定的 Exchange 和一个特定的 Queue 绑定起来。Exchange 和Queue的绑定可以是多对多的关系。
Routing Key(路由关键字)
exchange根据这个关键字进行消息投递。
vhost(虚拟主机)
在RabbitMq server上可以创建多个虚拟的message broker,又叫做virtual hosts (vhosts)。每一个vhost本质上是一个mini-rabbitmq server,分别管理各自的exchange,和bindings。vhost相当于物理的server,可以为不同app提供边界隔离,使得应用安全的运行在不同的vhost实例上,相互之间不会干扰。producer和consumer连接rabbit server需要指定一个vhost。
假设P1和C1注册了相同的Broker,Exchange和Queue。P1发送的消息最终会被C1消费。
基本的通信流程大概如下所示:
Consumer收到消息时需要显式的向rabbit broker发送basic。ack消息或者consumer订阅消息时设置auto_ack参数为true。
在通信过程中,队列对ACK的处理有以下几种情况:
即消息的Ackownledge确认机制,为了保证消息不丢失,消息队列提供了消息Acknowledge机制,即ACK机制,当Consumer确认消息已经被消费处理,发送一个ACK给消息队列,此时消息队列便可以删除这个消息了。如果Consumer宕机/关闭,没有发送ACK,消息队列将认为这个消息没有被处理,会将这个消息重新发送给其他的Consumer重新消费处理。
消息的收发处理支持事务,例如:在任务中心场景中,一次处理可能涉及多个消息的接收、处理,这应该处于同一个事务范围内,如果一个消息处理失败,事务回滚,消息重新回到队列中。
消息的持久化,对于一些关键的核心业务来说是非常重要的,启用消息持久化后,消息队列宕机重启后,消息可以从持久化存储恢复,消息不丢失,可以继续消费处理。
fanout 模式
模式特点:
direct 模式
任何发送到Direct Exchange的消息都会被转发到routing_key中指定的Queue。
如果一个exchange 声明为direct,并且bind中指定了routing_key,那么发送消息时需要同时指明该exchange和routing_key。
简而言之就是:生产者生成消息发送给Exchange, Exchange根据Exchange类型和basic_publish中的routing_key进行消息发送 消费者:订阅Exchange并根据Exchange类型和binding key(bindings 中的routing key) ,如果生产者和订阅者的routing_key相同,Exchange就会路由到那个队列。
topic 模式
前面讲到direct类型的Exchange路由规则是完全匹配binding key与routing key,但这种严格的匹配方式在很多情况下不能满足实际业务需求。
topic类型的Exchange在匹配规则上进行了扩展,它与direct类型的Exchage相似,也是将消息路由到binding key与routing key相匹配的Queue中,但这里的匹配规则有些不同。
它约定:
以上图中的配置为例,routingKey=”quickorangerabbit”的消息会同时路由到Q1与Q2,routingKey=”lazyorangefox”的消息会路由到Q1,routingKey=”lazybrownfox”的消息会路由到Q2,routingKey=”lazypinkrabbit”的消息会路由到Q2(只会投递给Q2一次,虽然这个routingKey与Q2的两个bindingKey都匹配);routingKey=”quickbrownfox”、routingKey=”orange”、routingKey=”quickorangemalerabbit”的消息将会被丢弃,因为它们没有匹配任何bindingKey。
RabbitMQ,部署分三种模式:单机模式,普通集群模式,镜像集群模式。
普通集群模式
多台机器部署,每个机器放一个rabbitmq实例,但是创建的queue只会放在一个rabbitmq实例上,每个实例同步queue的元数据。
如果消费时连的是其他实例,那个实例会从queue所在实例拉取数据。这就会导致拉取数据的开销,如果那个放queue的实例宕机了,那么其他实例就无法从那个实例拉取,即便开启了消息持久化,让rabbitmq落地存储消息的话,消息不一定会丢,但得等这个实例恢复了,然后才可以继续从这个queue拉取数据, 这就没什么高可用可言,主要是提供吞吐量 ,让集群中多个节点来服务某个queue的读写操作。
镜像集群模式
queue的元数据和消息都会存放在多个实例,每次写消息就自动同步到多个queue实例里。这样任何一个机器宕机,其他机器都可以顶上,但是性能开销太大,消息同步导致网络带宽压力和消耗很重,另外,没有扩展性可言,如果queue负载很重,加机器,新增的机器也包含了这个queue的所有数据,并没有办法线性扩展你的queue。此时,需要开启镜像集群模式,在rabbitmq管理控制台新增一个策略,将数据同步到指定数量的节点,然后你再次创建queue的时候,应用这个策略,就会自动将数据同步到其他的节点上去了。
Kafka 是 Apache 的子项目,是一个高性能跨语言的分布式发布/订阅消息队列系统(没有严格实现 JMS 规范的点对点模型,但可以实现其效果),在企业开发中有广泛的应用。高性能是其最大优势,劣势是消息的可靠性(丢失或重复),这个劣势是为了换取高性能,开发者可以以稍降低性能,来换取消息的可靠性。
一个Topic可以认为是一类消息,每个topic将被分成多个partition(区),每个partition在存储层面是append log文件。任何发布到此partition的消息都会被直接追加到log文件的尾部,每条消息在文件中的位置称为offset(偏移量),offset为一个long型数字,它是唯一标记一条消息。它唯一的标记一条消息。kafka并没有提供其他额外的索引机制来存储offset,因为在kafka中几乎不允许对消息进行“随机读写”。
Kafka和JMS(Java Message Service)实现(activeMQ)不同的是:即使消息被消费,消息仍然不会被立即删除。日志文件将会根据broker中的配置要求,保留一定的时间之后删除;比如log文件保留2天,那么两天后,文件会被清除,无论其中的消息是否被消费。kafka通过这种简单的手段,来释放磁盘空间,以及减少消息消费之后对文件内容改动的磁盘IO开支。
对于consumer而言,它需要保存消费消息的offset,对于offset的保存和使用,有consumer来控制;当consumer正常消费消息时,offset将会"线性"的向前驱动,即消息将依次顺序被消费。事实上consumer可以使用任意顺序消费消息,它只需要将offset重置为任意值。(offset将会保存在zookeeper中,参见下文)
kafka集群几乎不需要维护任何consumer和producer状态信息,这些信息有zookeeper保存;因此producer和consumer的客户端实现非常轻量级,它们可以随意离开,而不会对集群造成额外的影响。
partitions的设计目的有多个。最根本原因是kafka基于文件存储。通过分区,可以将日志内容分散到多个server上,来避免文件尺寸达到单机磁盘的上限,每个partiton都会被当前server(kafka实例)保存;可以将一个topic切分多任意多个partitions,来消息保存/消费的效率。此外越多的partitions意味着可以容纳更多的consumer,有效提升并发消费的能力。(具体原理参见下文)。
一个Topic的多个partitions,被分布在kafka集群中的多个server上;每个server(kafka实例)负责partitions中消息的读写操作;此外kafka还可以配置partitions需要备份的个数(replicas),每个partition将会被备份到多台机器上,以提高可用性。
基于replicated方案,那么就意味着需要对多个备份进行调度;每个partition都有一个server为"leader";leader负责所有的读写操作,如果leader失效,那么将会有其他follower来接管(成为新的leader);follower只是单调的和leader跟进,同步消息即可。由此可见作为leader的server承载了全部的请求压力,因此从集群的整体考虑,有多少个partitions就意味着有多少个"leader",kafka会将"leader"均衡的分散在每个实例上,来确保整体的性能稳定。
Producers
Producer将消息发布到指定的Topic中,同时Producer也能决定将此消息归属于哪个partition;比如基于"round-robin"方式或者通过其他的一些算法等。
Consumers
本质上kafka只支持Topic。每个consumer属于一个consumer group;反过来说,每个group中可以有多个consumer。发送到Topic的消息,只会被订阅此Topic的每个group中的一个consumer消费。
如果所有的consumer都具有相同的group,这种情况和queue模式很像;消息将会在consumers之间负载均衡。
如果所有的consumer都具有不同的group,那这就是"发布-订阅";消息将会广播给所有的消费者。
在kafka中,一个partition中的消息只会被group中的一个consumer消费;每个group中consumer消息消费互相独立;我们可以认为一个group是一个"订阅"者,一个Topic中的每个partions,只会被一个"订阅者"中的一个consumer消费,不过一个consumer可以消费多个partitions中的消息。kafka只能保证一个partition中的消息被某个consumer消费时,消息是顺序的。事实上,从Topic角度来说,消息仍不是有序的。
Kafka的设计原理决定,对于一个topic,同一个group中不能有多于partitions个数的consumer同时消费,否则将意味着某些consumer将无法得到消息。
Guarantees
Kafka就比较适合高吞吐量并且允许少量数据丢失的场景,如果非要保证“消息可靠传输”,可以使用JMS。
Kafka Producer 消息发送有两种方式(配置参数 producertype):
对于同步方式(producertype=sync)?Kafka Producer 消息发送有三种确认方式(配置参数 acks):
kafka的设计初衷是希望作为一个统一的信息收集平台,能够实时的收集反馈信息,并需要能够支撑较大的数据量,且具备良好的容错能力。
持久性
kafka使用文件存储消息,这就直接决定kafka在性能上严重依赖文件系统的本身特性。且无论任何OS下,对文件系统本身的优化几乎没有可能。文件缓存/直接内存映射等是常用的手段。因为kafka是对日志文件进行append操作,因此磁盘检索的开支是较小的;同时为了减少磁盘写入的次数,broker会将消息暂时buffer起来,当消息的个数(或尺寸)达到一定阀值时,再flush到磁盘,这样减少了磁盘IO调用的次数。
性能
需要考虑的影响性能点很多,除磁盘IO之外,我们还需要考虑网络IO,这直接关系到kafka的吞吐量问题。kafka并没有提供太多高超的技巧;对于producer端,可以将消息buffer起来,当消息的条数达到一定阀值时,批量发送给broker;对于consumer端也是一样,批量fetch多条消息。不过消息量的大小可以通过配置文件来指定。对于kafka broker端,似乎有个sendfile系统调用可以潜在的提升网络IO的性能:将文件的数据映射到系统内存中,socket直接读取相应的内存区域即可,而无需进程再次copy和交换。 其实对于producer/consumer/broker三者而言,CPU的开支应该都不大,因此启用消息压缩机制是一个良好的策略;压缩需要消耗少量的CPU资源,不过对于kafka而言,网络IO更应该需要考虑。可以将任何在网络上传输的消息都经过压缩。kafka支持gzip/snappy等多种压缩方式。
生产者
负载均衡: producer将会和Topic下所有partition leader保持socket连接;消息由producer直接通过socket发送到broker,中间不会经过任何“路由层“。事实上,消息被路由到哪个partition上,有producer客户端决定。比如可以采用“random““key-hash““轮询“等,如果一个topic中有多个partitions,那么在producer端实现“消息均衡分发“是必要的。
其中partition leader的位置(host:port)注册在zookeeper中,producer作为zookeeper client,已经注册了watch用来监听partition leader的变更事件。
异步发送:将多条消息暂且在客户端buffer起来,并将他们批量的发送到broker,小数据IO太多,会拖慢整体的网络延迟,批量延迟发送事实上提升了网络效率。不过这也有一定的隐患,比如说当producer失效时,那些尚未发送的消息将会丢失。
消费者
consumer端向broker发送“fetch”请求,并告知其获取消息的offset;此后consumer将会获得一定条数的消息;consumer端也可以重置offset来重新消费消息。
在JMS实现中,Topic模型基于push方式,即broker将消息推送给consumer端。不过在kafka中,采用了pull方式,即consumer在和broker建立连接之后,主动去pull(或者说fetch)消息;这中模式有些优点,首先consumer端可以根据自己的消费能力适时的去fetch消息并处理,且可以控制消息消费的进度(offset);此外,消费者可以良好的控制消息消费的数量,batch fetch。
其他JMS实现,消息消费的位置是有prodiver保留,以便避免重复发送消息或者将没有消费成功的消息重发等,同时还要控制消息的状态。这就要求JMS broker需要太多额外的工作。在kafka中,partition中的消息只有一个consumer在消费,且不存在消息状态的控制,也没有复杂的消息确认机制,可见kafka broker端是相当轻量级的。当消息被consumer接收之后,consumer可以在本地保存最后消息的offset,并间歇性的向zookeeper注册offset。由此可见,consumer客户端也很轻量级。
对于JMS实现,消息传输担保非常直接:有且只有一次(exactly once)。
在kafka中稍有不同:
at most once: 消费者fetch消息,然后保存offset,然后处理消息;当client保存offset之后,但是在消息处理过程中出现了异常,导致部分消息未能继续处理。那么此后"未处理"的消息将不能被fetch到,这就是"at most once"。
at least once: 消费者fetch消息,然后处理消息,然后保存offset。如果消息处理成功之后,但是在保存offset阶段zookeeper异常导致保存操作未能执行成功,这就导致接下来再次fetch时可能获得上次已经处理过的消息,这就是"at least once",原因offset没有及时的提交给zookeeper,zookeeper恢复正常还是之前offset状态。
exactly once: kafka中并没有严格的去实现(基于2阶段提交,事务),我们认为这种策略在kafka中是没有必要的。
通常情况下“at-least-once”是我们首选。(相比at most once而言,重复接收数据总比丢失数据要好)。
kafka高可用由多个broker组成,每个broker是一个节点;
创建一个topic,这个topic会划分为多个partition,每个partition存在于不同的broker上,每个partition就放一部分数据。
kafka是一个分布式消息队列,就是说一个topic的数据,是分散放在不同的机器上,每个机器就放一部分数据。
在08版本以前,是没有HA机制的,就是任何一个broker宕机了,那个broker上的partition就废了,没法写也没法读,没有什么高可用性可言。
08版本以后,才提供了HA机制,也就是就是replica副本机制。每个partition的数据都会同步到其他的机器上,形成自己的多个replica副本。然后所有replica会选举一个leader出来,那么生产和消费都跟这个leader打交道,然后其他replica就是follower。
写的时候,leader会负责把数据同步到所有follower上去,读的时候就直接读leader上数据即可。
kafka会均匀的将一个partition的所有replica分布在不同的机器上,从而提高容错性。
如果某个broker宕机了也没事,它上面的partition在其他机器上都有副本的,如果这上面有某个partition的leader,那么此时会重新选举一个新的leader出来,大家继续读写那个新的leader即可。这就有所谓的高可用性了。
写数据的时候,生产者就写leader,然后leader将数据落地写本地磁盘,接着其他follower自己主动从leader来pull数据。一旦所有follower同步好数据了,就会发送ack给leader,leader收到所有follower的ack之后,就会返回写成功的消息给生产者。
消息丢失会出现在三个环节,分别是生产者、mq中间件、消费者:
RabbitMQ
Kafka
大体和RabbitMQ相同。
Rabbitmq
需要保证顺序的消息投递到同一个queue中,这个queue只能有一个consumer,如果需要提升性能,可以用内存队列做排队,然后分发给底层不同的worker来处理。
Kafka
写入一个partition中的数据一定是有序的。生产者在写的时候 ,可以指定一个key,比如指定订单id作为key,这个订单相关数据一定会被分发到一个partition中去。消费者从partition中取出数据的时候也一定是有序的,把每个数据放入对应的一个内存队列,一个partition中有几条相关数据就用几个内存队列,消费者开启多个线程,每个线程处理一个内存队列。
1、Windows系列操作系统
Microsoft Windows是美国微软公司研发的一套操作系统,系统版本从最初的Windows 10到大家熟知的Windows 95、Windows 98、Windows ME、Windows 2000、Windows 2003;
Windows XP、Windows Vista、Windows 7、Windows 8、Windows 81、Windows 10,不断持续更新和维护。
优点:软件丰富 高易用性 只要经过简单学习就能流畅使用;
缺点:在使用中感染病毒的风险较大。
小结: 得益于Windows的易用性,任何人只要经过简单的学习就能使用,Windows系统成为目前全球使用人数最多的系统,被广泛应用于日常工作与生活的各个领域,因为用户基础巨大,所以可以使用的软件也是最多的,这是其最大的优点。
但是巨大的用户基础也给Windows系统带来隐患,绝大多数的木马、病毒、恶意软件,都是瞄准视窗系统用户下手,所以用户在使用中感染病毒的风险比较大。
2、Linux操作系统
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件,Android系统就是基于Linux而开发出来的。
优点:开源,系统的漏洞更容易被发现,也更容易被修补;
缺点:如果不熟知Linux命令,几乎完全无法使用这个系统。
小结:Linux是开源的免费操作系统,因开源的特性,系统的漏洞更容易被发现,也更容易被修补。此外,因为Linux原本的人机交互界面是命令行,用户如果不熟知Linux命令,几乎完全无法使用这个系统,因为过于专业,Linux常被用作各种服务器操作系统。
可以说,Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。
3、UNIX操作系统
UNIX操作系统(尤尼斯),是一个强大的多用户、多任务操作系统,支持多种处理器架构,属于分时操作系统,最早由KenThompson、Dennis Ritchie和Douglas McIlroy于1969年在AT&T的贝尔实验室开发。
目前它的商标权由国际开放标准组织所拥有,只有符合单一UNIX规范的UNIX系统才能使用UNIX这个名称,否则只能称为类UNIX(UNIX-like)。
优点:有强大的可移植性,适合多种硬件平台 在安全性稳定性和性能高于Linux 但是需要专业的硬件平台;
缺点:门槛较高。
小结:UNIX是最早出现的操作系统之一,最初的Linux就是是仿制的minix编写的,UNIX发展到现在已趋于成熟,需要大量专业知识才能操作,此外,UNIX系统具有强大的可移植性,适合多种硬件平台。此外,UNIX具有良好的用户界面;
程序接口提供了C语言和相关库函数及系统调用,命令接口是SHELL,系统的可操作性很强,你甚至可以不用显示器,取而代知的是非常简易的输出设备,在安全性稳定性和性能高于Linux 但是需要专业的硬件平台,门槛较高。
4、苹果(OSX)操作系统
Mac系统是基于Unix内核的图形化操作系统,一般情况下在普通PC上无法安装的操作系统,是苹果旗下PC专属系统,由苹果公司自行开发。如今苹果机的操作系统已经到了OS 1015,该系统的许多特点和服务都体现了苹果简洁公司的理念。
优点:界面美观,操作简便,也不需要额外购买;
缺点:通常只能运行于苹果电脑,因为苹果电脑高昂售价,Mac的用户相对较少。
小结:Mac系统是苹果公司基于UNIX操作系统进行深度再开发的操作系统,完全闭源,只能运行在苹果公司的电脑上。
Windows、Unix、Mac OSX 、Linux都是不错的操作系统,用户可以根据自己的需求来选择适合自己的操作系统。
0条评论