一个程序员从Python转向Erlang的自述
概览
在这篇文章中,我将会讲解我从Python转向Erlang的过程。如果你不是一位Python开发人员,或者你不需要或是不想要极度的扩大系统规模,那么这篇文章可能对你没什么用。如果你无意为企业打造基础设施,或是你开发的产品只是简单的博客、小型资产管理系统,或是非常简单的网页,那么这篇文章对你一点帮助都没有。另外,如果你是一名初学者,正考虑选择一种语言进行学习,请你千万不要根据我的这篇文章放弃Python。我要讲的,是我自己使用Python时所遇到的那些问题,以及Erlang帮我解决这些问题的过程。
开始的时候我会讲述一下我的过去,然后用自己的总结来结束这篇文章。如果你在阅读的过程中,能够与我有共鸣,请你来联系我,我们好好聊一聊。正是出于这个目的,我才决定把自己的经验分享出来。
我的15年编程之路
最早学习编程的时候,我是用MEL(Maya Embedded Language)起步的。之后,我找到了第一份工作,得到了第一份薪水。不久之后,为了获得更严肃的开发工作,我开始学习Python,并完成了K&R的阅读,使用C语言开发Python扩展程序。许多年之后,我对Web开发产生了浓厚的兴趣。我退出了动画行业,并且加入了德黑兰一家著名的科技公司。
不久之前,我用Python开发了一个名叫Appido.IR的产品,这是一个视频/音乐流媒体服务。
现在来说说我遇到的问题吧。
选择正确的框架
所有人都热爱Django,但是我却讨厌它,而且没有任何理由!也许是因为帮曾帮助Massimo开发了Web2py,也或许是Web2py的简洁性惯坏了我,让我无法选择另外一个full-stack框架。但是在后来的一个无聊的项目上,我最终还是尝试了Django。
Full-Stack Python框架就是个蜜罐
Django和Web2py各自有什么问题?什么问题都没有!直到你在一些模板引擎和数据库ORM中开始使用Bottle/Falcon之后,你才会开始感觉那些企业框架的速度是如此之慢。在使用一个简单的RESTful API的时候,你不得不浪费你的CPU周期,而且没有好的理由。而在使用复杂的API服务的时候,你必须要找到一条越狱的道路,构建一个全新的架构,然后把它放在你所谓的full-stack框架中。我们来看看下面这个例子:
在Appido.ir Streaming Technology这家公司内,在FFMPEG的和大量其他开源工具的帮助下,我们实施了Dash协议。Appido有自己的OAuth2服务器,这是一个授权系统,一个工作流程引擎,可以用来制定时间表、监测、记录日志、寻找错误、创建报告等等。使用Web2py/Django进行了数周的艰苦研发之后,我们发现只凭借一个单一的框架根本没法成功。在大的框架内创建文件夹,尝试MVC模式、或是创建一个不错的数据库控制面板根本没法帮你扩大规模!而且最后那些你原本不想要的功能会反过头来阻挡你的脚步。是的,你在这里能找到一些蜂蜜,但是你却必须要地方那些愤怒的蜜蜂。因此,我发明了自己的基于Falcon的框架。
Python框架同样也是蜜罐!
于是你开始使用Bottle、Falcon、Flask……然后发现自己需要安装任务队列,并且安排模块时刻表。因为在web 2.0中,每一个需要500ms以上的请求,都需要是有状态的!这是一条不成文的规则。对于长时间等待的请求,你需要给用户提供一些状态。你的客户没时间等待你完成计算过程。你需要将发送邮件、转换图片等负担放在Celery上(也可以是你自己发明的自定义多进程队列)。它有什么问题?我们来看一下:
假设你正在开发一个流媒体服务。你的客户上传了20GB大小的4K视频文件,你将这段视频转换成了10种不同的分辨率,然后发邮件告知客户这个转换过程已经完成了。
由于你有40个worker在使用Celery,在视频转换的过程中那个,服务器出现过载,转换速度越来越慢。于是你找到了一个自以为是天才的解决方案!安装另一台服务器,上面配备了流媒体代码和工具,将Celery作为worker。好了,问题解决了!然而并没有!半夜的时候,你发现6台服务器中,有5台的CPU利用率为0,而第六台的利用率为100%。为什么?原来Redis在配合Celery的时候,会出现时序问题,这个问题会阻碍worker拣选任务。安装RabbitMQ或许能解决问题。但是在寻找蜂蜜的过程中,你依然会被蜜蜂蛰的满身都是包。如果你在搭建这个系统的过程中没有遇到上述问题,那么恭喜你,你是这个世界上最幸运的人。
我没遇到这些问题!那你请继续……
假如你的服务器运转的很正常,你需要的是增加web服务的RPS,无论你是使用增加WSGI worker的方法,还是使用Tornado/Gevent的方法,两者都可以帮你解决问题。你还会注意到,使用SQLAlchemy会让你的请求速度变慢(因为SQLAlchemy极其复杂)。写Raw SQL命令能解决你的问题。我们看看下面这个简单的例子,一个有着几百万条记录的Postgres数据库:
def pure_python():
max_per_task = db.DBSession.query(
Version.task_id, func.max(Version.version_number).label( 'max'))\
.join(Task)\
.filter(Task.project_id == proj_id)\
.group_by(Version.task_id)\
.subquery()
return Version.query\
.join(max_per_task,
tuple_(max_per_task.c.task_id, max_per_task.c.max) ==
tuple_(Version.task_id, Version.version_number))\
.all()
def simple_sql():
sql = """
select
max("Versions".id) as id
from "Versions"
join "Tasks" on "Versions".task_id = "Tasks".id
join "Projects" on "Tasks".project_id = "Projects".id
where "Projects".id = %s
group by "Versions".task_id, "Versions".take_name
""" % proj_id
conn = db.DBSession.connection()
result = conn.execute(sql)
return result.fetchall()
And Results
pure_python: 3.284 sec
simple_sql: 0.228 sec
我已经解决了所有问题。到底哪里出问题了?
你真的解决了所有问题吗?好吧,就算是吧,你现在想要尝试在Python代码中添加一些Erlang功能。你会发现,Erlang中根本不存在那些分配/规模化问题。在Python世界中,寻找规模化问题的解决方式是非常普遍的事情。要想实现规模化,你需要进行分配。而要想分配,你又需要优秀的服务导向架构,而且它还要拥有协同工作的能力。你一定要有足够的耐心,能够忍耐错误的频繁出现,并且做好失效备援。其实在Python中,这些功能都是可以实现的,不过代价非常高。你必须要规避Python的问题,还需要正确的SQL,创建自定义索引。Python的Global Interpreter Lock(GIL)会给你设置障碍。共享状态通常情况下在开始的时候能为你提供一定的帮助,但是有的时候会导致灾难性的后果。除此之外,对于每一次真实世界的计算,你都需要为Python编写扩展程序(原生C API、Swig、Cython或是pypy)。
Erlang虽然没有C语言那么快,但是它的分配模式让我们可以很轻松的编写程序,来保护数据中心中的每一个核心(如果你能理解NIF,你就无往不利了)。用Erlang连接数据库需要你拥有SQL方面的知识(这一点和Python一样)。
总结
如果你需要创建一个云服务,或是为了给数以万计的用户提供服务,而需要扩大系统规模,你一定要选择正确的工具。Python在快速测试和模拟方面很强大,学会Python可以帮你找到工作。使用Python你可以在一夜之间就将复杂的创意变成产品。Python适合拥有大量用户的大型项目。但是在大规模扩大系统规模方面,我个人还是觉得它不够好用,有时候甚至会给你制造困难。
长话短说,你可以用Python来找工作,或是获得一份合作合同,之后用Erlang来完成工作。
原 文:WHY AND HOW I SWITCHED FROM PYTHON TO ERLANG
译 文:https://www.sdk.cn/news/4125
作 者:Christian(编译)
收起阅读 »
Docker 终于有 Windows 和 Mac 版了
今天是Docker容器化系统的第三个生日,为了庆祝该公司推出了其软件的Mac和Windows测试版程序。
它提供了一个集成的、易于部署的环境,用于构建、组装和运输在Mac或Windows系统上的应用程序,同时在Docker工具箱上也具有诸多改进。
Docker的Mac和Windows版本开发并不需要专用的机器,这使开发者更容易开发,并为他们在本地主机网络上访问容器运行提供方便。它包括一个用于容器的DNS服务器,并与Mac OS X和Windows网络系统集成。在Mac上,Docker甚至可以在连接到企业VPN。
Docker的Mac版本可以与Docker工具箱在同一时间同一台机器上使用,允许开发人员继续使用工具箱来评估Docker的Mac版本。而在Windows系统上你需要在使用Docker之前停止使用工具箱。
“Docker的Mac产品已经解决了对我们来说的所有这些问题,多亏了原生的Mac应用程序,安装已显著顺畅,并能自动更新。官方图片现在在Mac上只是‘仅仅工作’,而新开发的工作流使工程师能够快速运行服务的新版本,在他们的Mac上开发原生软件,一切都仅仅只是工作。”Mixcloud——少数几家曾使用过内测软件的公司之一的联合创始人Mat Clayton如是说。
如果您有兴趣参与内测,你可以通过注册Docker网站,接收邀请。Docker的Mac和Windows版本正处于不同的发展阶段,虽然他们共享一个主要的代码库。Docker的Windows版本最初以较慢的速度推送给用户,但最终也将与Mac版本有相同的功能。Windows版本目前只适用于支持Hyper-V的Windows10。
英文原文链接:http://betanews.com/2016/03/24/docker-windows-mac/
中文翻译链接:http://www.oschina.net/news/71885/docker-to-mac-windows
收起阅读 »
不懂编程的运维人员到底还能走多远?
首先,可以肯定的说,未来的IT岗位需要的是综合能力强的人员,运维、开发、数据库、网络,技术岗位对上述知识体系都要会一些,才能很好的胜任对应岗位工作。
下面已经不是趋势,而是菜鸟及老鸟都必须要认真考虑的:
- []运维人员要会运维、开发、数据库、网络,但侧重点是运维,[/][]开发人员要会运维、开发、数据库、网络,但侧重点是开发,[/][]数据库人员要会运维,开发,数据库,网络,但侧重点是数据库,[/][]网络人员要会运维,开发,数据库,网络,但侧重点是网络,最好侧重点转运维,[/][]硬件工程师(F5,存储设备等)建议趁早转岗linux运维,云计算已经把硬件给灭了,硬件集中化了。[/]
只会技术知识还不够,工作态度,做人素质,沟通表达,责任心都是具备核心竞争力的容易被忽略的资本!
技术知识和态度素质比例接近6:4,岗位越高对技术要求的比例越低!
互联网,移动互联网,甚至是物联网的时代对IT人才的综合能力要求越来越高!一些极其低端的工作大多数人的岗位会被自动化、虚拟化、云计算、甚至是机器人取代是毫不夸张的!
例如:IDC机房运维,低端网络工程师,各类硬件工程师。
新的时代对我们IT人员有了新的挑战,我们不能抱残守缺,而一定要快速学习,适应时代对我们的更多要求,不要本位主义,单纯的认为运维就不需要开发,开发就不需要运维,这些想法都是在重复掩耳盗铃的寓言故事。
就拿老男孩老师本人来说吧,除了会开发、运维、网络、数据库能力外,还要会讲课、教育学、心理学、销售、市场、领导、演讲,管理、财务、法律等技能,当然了,我给自己的定位是教育企业的老板,大家如果学习运维,给自己的定位是高级运维或架构师,就必须要会linux运维,python开发,linux集群架构。
另外,强烈建议,想从事linux运维的朋友一定要先掌握好运维岗位需要的本领后,然后再去蚕食开发领域。想从事开发的朋友一定要先掌握好开发岗位需要的本领后,然后再去蚕食运维等领域。
切记,一定不要太浮躁,人云亦云,一定不要边玩linux,边玩开发,一个时间点专注一点,你就可以更快找到工作,找到工作后再去利用周末去培训或自学,除非你参加脱产班的培训,或者时间真的很充裕。
掌握了一项岗位的知识能力后,如果你真的掌握了的话,再学其它岗位技术的也会轻松很多,因为学习的方法都是相通的。
一定要先掌握你想从事的本领域的岗位的基本本领,短时间千万不要样样都了解,会导致样样都稀松,最后找工作到处碰壁,短时间就是抓重点(记得我讲的浴室着火吧)!
虽然企业对运维的岗位要求趋势是越来越高了,但也不代表只学一种找不到工作。
对于新手,是无法再短时间内掌握运维和开发两项本领的,哪怕即使是运维知识也是海量,学了前面的,忘了后面的网友满地都是,最后厌学,能力没提升,给自己带来困扰。
例如你想从事运维,可以先学好linux运维,适当了解python开发,然后,找到工作后,再利用周末去学习。老男孩教育linux运维班新班会精讲shell和python开发基础,很多同学月薪可以达到12-13K,这个事实说明,先精通一门技术的重要性,但是一旦拿到offer,我们就会告诉学生要参加学习python开发以及高级架构师课程,说到这大家都明白了吧,linux运维,linxu架构,python开发,都是运维岗位需要的,打好linux基础,可以找到工作,但是要想立足和发展就必须要学习linux网站集群架构,python开发,这是现实的行业内的人都看得出的趋势,不这样努力这样做的,就算找到了工作可能也会丢失掉,谈不上立足和发展了。
如果你想从事开发工作也是一样,可以先学好开发,然后再去学linux运维+linux架构。(学历达不到本科的同学,如果选择纯开发一定要慎重,衡量下自己适合不适合,能不能下足功夫和高学历的去拼,开发领域的竞争者大把的本科、硕士的人群,而运维领域本科的同学基本上是凤毛麟角,这也是老男孩老师当初差异化发展的思想,虽然老男孩是本科双学士)。
新手一旦考虑学习开发,我建议可以学习python全栈开发,差异化发展,未来做开发做运维可以有更多的选择,而不是去选择PHP,JAVA等开发语言。综上,解答开篇的不懂编程的运维还能走多远?
- []linux(含shell)已成为IT技术岗位的必备的技术(开发,数据库,网络等岗)。[/][]linux运维学好目前北上广的薪水可以到8-15K,但是如果不快速继续深入高级架构师和python开发,未来发展瓶颈十分大,时间久了,有可能上升空间就被会架构又会python开发的人堵死,刻不容缓。[/][]python已成为IT技术岗位发展提升竞争力的必备技术(开发,数据库,网络等岗)。[/][]linux高级架构师(大规模网站集群架构)也将成为IT技术岗位发展提升竞争力的必备技术(开发,数据库,网络等岗)。[/]
因此,linux运维+linux架构+python开发这三项技术是近3-5年运维人员必备的技术,也是纯开发提升竞争力最有利的武器。掌握上述三项技术的先后顺序可以为:
linux运维+linux架构或linux运维+python开发,这三项技术是有紧密联系的,高级运维及架构师发展都得会!
有关运维人员的开发语言,做运维的人员一定要放弃小众语言的学习,例如perl,ruby,也不要选择偏离linux运维的php和JAVA。
linux+(shell/python)是当下最火的运维人员学习的组合,跟着趋势准没错!总结:
如果学习纯开发可以选的语言有:python,php,java,但是这些开发岗位发展到1-2年后,还是需要学习linux运维+linux架构的,这就是所说的大一统的IT岗位技能要求趋势。
掌握了上述运维和开发本领后,将来还可以朝大数据、云计算等热门领域过渡,基础不牢地动山摇,没有运维和开发基础,大数据、云计算这样的空中楼阁,你就有看和想的份。
文章作者:老男孩教育创始人老男孩老师
分享原文:http://oldboy.blog.51cto.com/2561410/1749513
收起阅读 »
数人云-下一代DCOS
公司简介
数人科技隶属于北京数字世纪科技有限公司,由原 Google 架构师王璞博士于2014年创立,其核心团队来自于 Google、RedHat 和 HP。数人科技致力于打造下一代 DCOS 数人云,将应用弹性做到极致。
“数人云”是一款部署在公有云、私有云以及混合云之上的 DCOS(Data Center Operating System ),旨在帮助用户在云端快速建立并稳定运行一个高性能生产环境,将应用弹性做到极致,实现一站式的微服务架构集群系统。
基于领先的 Mesos 和 Docker 技术,数人云可为用户的业务系统带来高可用的服务质量,快速的性能伸缩,高效的资源利用以及便捷的可视化管理和监控;同时,数人云保证用户的计算资源和数据完全为用户私有可控。
数人Team
著名天使投资人徐小平曾经说过,有三种人他不会投资,其中就有一种就是没有"合作伙伴"的情况。因为在没有合伙人的情况下是创始人股权一家独大,而普通员工和领导是没有绝对的股权分配的,当创业公司遇到困难的情况下,这种没有合伙人的体制创业公司是很少有人和创始人一起度过难关的。而你拥有合伙人的创业团队,股权分配合理,当公司遇到一定困难的情况下,大家都是设法一起度过难关,为公司的发展做出贡献的,这样的创业公司更容易成功,相反没有创业合伙人的团队一般拿到投资后也撑不了多久!
公司产品
目前数人科技产品只有"数人云"。数人云是一套基于开源Mesos + Doker技术的DCOS(数据中心操作系统)。将应用弹性做到极致的轻量PaaS平台,使用数人云DCOS,可像用单机电脑一样管理集群和云端应用,一键伸缩,满足业务快速增长需求,一键部署Docker容器应用和Spark等分布式应用,快速搭建微服务和大数据生产环境。产品特点如下:
一键伸缩
资源池化
混合云管理
一键部署
简化运维
服务高可用
产品Demo地址:https://dashboard.shurenyun.com/home
效果图:
五大场景解决方案
高并发
大数据云计算时代,企业的生产环境都要求高并发处理业务,让用户体验达到极致。
容器云
容器的诞生,提升了系统资源的高利用率和微服务架构的优越性发挥到极致,服务高效运转,让Auto Scaling变得更轻巧和简便。
持续集成
持续集成已经成为企业开发体制中一个快速迭代的先决条件,可以高效的促进开发者之间的合作开发效率和产品迭代速率。
大数据处理平台
大数据时代,大数据处理平台的搭建、管理、维护给运维人员带来了很大的维护成本和学习成本,数人云可以快速部署和管理。
企业应用平台
大数据应用的普及和分布式应用的架构深入企业中心,让企业平台的构建带来阻力,数人云完全Docker化应用,可以让你快熟Build。
解决方案:
数人云行业解决方案已经涉及:金融、互联网、生物信息、电商、运营商、能源。期待数人的发展和潜力,适配更多场景和行业为IT Worker、企业带来更多的便捷和利益!行业解决方案详情介绍请转战:https://www.shurenyun.com/
融资情况和媒体报道
数人云获3000万元A轮融资,打造轻量级PaaS平台发挥应用弹性。媒体报道如下:
http://36kr.com/p/5043988.html
http://tech.sina.com.cn/it/2016-03-02/doc-ifxpvysx1840192.shtml
http://tech.163.com/16/0302/15/BH5OJ7SN000915BF.html
http://www.techweb.com.cn/network/virtual/2016-03-02/2288655.shtml
招聘信息-期待你的加入
详情请转战拉钩:http://www.lagou.com/gongsi/j37868.html
刚融完资本,数人应该不差钱了,有找工作的伙伴可以投递你优秀的简历加入数人这个优秀的团队,数人值得你加入!
结语
在国家政治支持的创客时代,希望数人科技可以认准自己的方向一路向前,走在容器创业行列的前端,希望数人科技越来越好给行业带来更多推动力和正能量!创客报:开源技术社区下面的一个子频道,每周给你推荐优秀的创业公司和团队,让你更了解互联网创业! 收起阅读 »
解码IDC
什么是IDC
IDC即是Internet Data Center,是为集中式收集、存储、处理和发送数据的设备提供运行维护的设施以及相关的服务体系,通俗来讲,IDC就是机房。
IDC提供的主要业务包括主机托管(机位、机架、VIP机房出租)、资源出租(如虚拟主机业务、数据存储服务)、系统维护(系统配置、数据备份、故障排除服务)、管理服务(如带宽管理、流量分析、负载均衡、入侵检测、系统漏洞诊断),以及其他支撑、运行服务等。
什么是ISP和ICP
ISP:
ISP的英文是Internet Service Provider,翻译为互联网服务提供商,即向广大用户综合提供互联网接入业务、 信息业务、和增值业务的电信运营商。像我们熟知的中国电信,之前的中国网通现在的新联通,中国移动,中国铁通等等,都是主要的ISP运营商。ICP:
ICP的英文是Internet Content Provider,翻译为互联网内容提供商,即向广大用户综合提供互联网信息业务和 增值业务的电信运营商。一般网站都应该算为ICP运营商,这也是为什么我们常有需要ICP备案,而ICP在国内也分为商业ICP和非商业ICP。
什么是带宽独享和共享
顾名思义,独享带宽,就好比该线路是您服务器的专用高速公路,线路上传输的只有您自己服务器的数据,当然传输的量有一定限制,是根据用户要求来配备,一般是以100M为一个递增单位;而共享带宽,就是说有多台服务器在共同享受这条线路,线路上除了您,还有其他用户服务器的数据传输。独享与共享各自的优、缺点?
独享带宽
- []优点:可自由使用带宽量,能保证速度和网络质量;[/]
- 缺点:费用昂贵,一般100M的独享带宽,每月费用从上万到数万不等;
- []优点:价格比独享方式低廉不少,并且可以实现同线路上的高速资源共享;[/][]缺点:速度相对较低且不稳定,传输速率随线路上网络数据传输运行状态而有所变化;[/]
What VPS/虚拟主机
VPS是利用VPS(Virtual Private Server)技术,在一台服务器上创建多个相互隔离的虚拟专用服务器的优质服务。每个VPS的运行和管理都与一台独立主机完全相同,都可分配独立公网IP地址、独立操作系统Windows/Linux、独立超大空间、独立内存、独立CPU资源、独立执行程序和独立系统配置等。用户除了可以分配多个虚拟主机及无限企业邮箱外,更具有独立服务器功能,可自行安装程序,单独重启服务器,总而言之,VPS是一项具备高弹性、高质量及低成本效益的服务器解决方案。
虚拟主机(Virtual Host Virtual Server)是使用特殊的软硬件技术,把一台计算机主机分成一台台“虚拟”的主机,每一台虚拟主机都具有独立的域名和IP地址(或共享的IP地址),具有完整的Internet服务器功能。
业务:[list=1][]同质、低价、低水平的无序竞争,缺乏增值业务;[/][]缺乏灵活的运营模式和技术架构,业务创新困难;[/][]运营商面临转型:"卖资源" -> "卖服务" -> "卖能力"[/]成本:[list=1][]庞杂的设备,每天都会产生巨额的财务成本[/][]各类业务系统结构复杂重复,服务器、存储设备的无序扩张[/][]人力成本[/]能耗:[list=1][]设备以专用方式分配,产生资源孤岛,机器利用率低[/][]按传统设计方式,无论运营商业务量有多大,设备始终运行,导致其设备始终按最大容量耗电[/]管理:[list=1][]缺乏完善的流程定义,当前多采用人工方式,缺少相应的平台支持[/][]资源管理缺乏自动化,大量人力资源耗费在繁重的重复性工作上,无法关注业务发展和服务质量[/]云时代IDC运营商面临的挑战
企业节能减排需求
引入云计算的新一代IDC
IDC融合架构组件
云计算对运营商的影响- IT技术架构
云计算将促使运营商的IT技术架构将从分散、独立、非标准的IT系统转变为集中、共享、标准的云服务
IDC未来
收起阅读 »
IT设备管理之基础设施
什么是服务器
简单的说,服务器就是在网络中为其他客户机提供服务的计算机
服务器是计算机的一种,它是在网络操作系统的控制下为网络环境里的客户机提供(如PC) 共享资源(包括查询、存储、计算等)的高性能计算机,它的高性能主要体现在高速度的CPU 运算能力、长时间的可靠运行、强大的I/O 外部数据吞吐能力等方面。
服务器主要为客户机提供Web 应用、数据库、文件、打印服务。
服务器分类
按处理器架构分类 :
- [] 巨型机与大型机(专用处理器)[/][] 小型机(IA-64,RISC处理器)[/][] PC服务器(CISC处理器)[/]
处理器是服务器工作的核心部件,对于双路和多路服务器来说,升级处理器对于服务器性能的提高非常重要。32-位处理器 (CISC)服务器基础知识之CPU
- []广阔的兼容性 [/][]64位数据总线[/][]32位地址总线[/]
- []支持大容量内存[/][]64位数据总线[/][]64位地址总线[/][]需要 64位操作系统 [/]
按CPU个数来分:PC服务器分类
- []4路及4路以上服务器(企业级服务器)[/][]2路服务器(部门级服务器)[/][]1路服务器(入门级服务器)[/]
内存错误和防止出现内存错误的方法
- []单位 (1位数据错误)[/][]多位 (超过1位数据错)[/][]硬件错 – 数据错误反复出现,即使在“擦除”错误以后 (来自:DRAM, DIMM插槽, 或控制器中的物理错误)[/][]软错误 – 在“擦除”错误以后 出现的数据错误(来自:由于高度活动的粒子产生断断续续的错误)[/]
- []先进的测试方法可以提高内存的可靠性 [/][]错误检查/纠正技术 [/][]ECC 内存 [/][]多位ECC内存 [/]
存储的演变
常见的磁盘种类:磁盘
- []Serial ATA (SATA)磁盘[/][]Serial Attached SCSI (SAS)磁盘[/][]SSD 磁盘[/]
- []磁盘尺寸:3.5”/2.5”/1.8”[/][]磁盘容量:146GB/300GB/500GB…[/][]磁盘转速:10K/15K/7200[/][]是否支持热插拔[/][]平均无故障时间(MTBF)[/][]内外部传输速率[/][]平均寻道时间 [/][]IOPS[/]
传输率对比
机架式服务器
Raid基本概念
RAID (Redundant Array of Independent Disks)即独立磁盘冗余阵列,RAID技术将多个单独的物理硬盘以不同的方式组合成一个逻辑硬盘,从而达到提升存储容量、读写性能和数据安全性的目的。根据不同的组合方式可以分为不同的RAID级别
Raid出现原因
RAID 0 条带存储(Striping)
RAID 1 镜像/双工
RAID 5 (条带技术+分布式校验)
Raid级别比较
其中RAID3与RAID5的区别为:RAID3更适合于顺序存取,RAID5更适合于随机存取。需要根据具体的应用情况决定使用那种RAID级别。
RAID性能比较
存储体系架构介绍
- [] Direct Attached Storage(DAS)直接外挂存储 [/]
- [] Network Attached Storage (NAS)网络连接存储 [/]
- [] Storage Area Network (SAN)存储区域网络应用光纤技术的SAN网络,传输介质为光纤,性能最高,目前使用较广 [/][]ISCSI(IP-SAN)[/]
- []优点: 成本低,对于小型用户来说,易于维护[/][]缺点: 性能不高,系统停机多,资源无法共享,多系统环境下的管理成本增加[/]
- []优点: 方便,文件级的数据共享,集中化管理[/][]缺点: 需要贡献文件系统,安全性无法保障,性能一般,磁盘级数据无法共享/集中,复杂系统的成本大,维护难,扩容受限[/]
- []优点: 集中化的管理,高性能,减少停机时间,安全保障高[/][]缺点: 成本昂贵、系统复杂。磁盘阵列的兼容性限制了设备选择空间及资源共享。[/]
DAS、NAS、SAN与ISCSI性能比较
数据封装的图示
数据封装的例子
根据网络设备作用在OSI的层次,有以下几种类型:基本网络设备
- []第1层(物理层) 中继器 HUB[/][]第2层(数据链路层) 网桥 交换机[/][]第3层(网络层) 路由器[/]
交换机Switch/网卡
交换机是OSI模型的第二层设备,在OSI参考模型的数据链路层(第二层)工作,交换机根据进入端口数据帧的MAC地址来过滤、转发或扩散该数据帧。
提供计算机与计算机网络的数据传输,也称为网络适配器(LAN Adapter),集成在主板上,或插在主板的扩展槽中,可以是以太网卡、令牌环网卡或FDDI网卡
路由器Router
路由器在网络间传送基于网络层或者说第三层信息的的数据分组
路由器能够对智能判定数据在网络上传送的最佳路径
[list=1][]工作层次不同;[/][]数据转发所依据的对象不同;[/][]是否可以分割广播域;[/][]路由器提供了防火墙的服务.[/]交换机和路由器的区别
传输介质
传输介质是网络中信息传递的载体。传输介质的性能直接影响网络的运行。网络常用的传输介质有同轴电缆、双绞线、光缆等。在这三种传输介质中,双绞线被广泛应用于电话系统中,它的性能较差,但价格也比较低;同轴电缆在有线电视系统中经常采用,它的性能较好,价格适中;光纤则是最先进的通信线路,它的各项性能指标都非常好,但成本很高而且连接起来有一定的难度。收起阅读 »
浅谈IT培训知识体系
前言
有时候经常会被别的部门叫去培训IT知识体系,想对公司整个技术组织架构有个详细的了解和对IT知识体系的了解。但是同事们的技术专业水平又不是很强,那我们应该怎么逐步讲解,然后放大知识面,逐步深入呢?看完下面几个方面,你相信你就知道怎么切入了!
一、设备管理
设备管理主要包括如下两方面:
1、服务器、交换机、路由器、存储设备运维管理
2、IDC现状及未来发展趋势分析
二、网络管理
网络管理主要包括如下几方面:
1、企业网络架构
2、防火墙工作原理
3、常用网络协议
4、DNS工作原理及其作用
5、VLAN、VPN工作原理及作用
6、CDN原理及监控
三、软件系统架构
软件系统架构主要包括如下几方面:
1、企业应用架构设计
2、分布式系统
3、互联网架构演变
四、中间件管理
中间件管理主要包括如下几方面:
1、Liunx操作系统基本知识
2、各种操作系统对比
3、应用服务器工作原理及故障排除
4、负载均衡F5/Nginx/LVS/HAProxy原理和作用
5、JVM作用及工作原理
五、数据库管理
数据库管理主要包括如下几方面:
1、MySql数据库性能监控
2、MySql数据库日志监控
3、MySql数据库服务监控
4、NoSql数据库服务监控
5、NoSql数据库性能监控
6、数据库事件管理与配置管理
7、分布式数据管理了解
六、安全管理
安全管理主要包括如下几方面:
1、操作系统安全,账号保护、重要文件防护、防攻击,安全服务等
2、网络安全
3、应用安全,网站监控常用技术
七、云计算
云计算主要包括如下几方面:
1、IaaS基础设施服务
2、PaaS基础平台服务
3、SaaS软件服务
4、Cass容器集成服务
八、大数据
大数据主要包括如下几方面:
1、Hadoop生态系统体系
2、大数据聚合分析
3、大数据存储迁移
4、集群管理,大数据消息系统
以上都是个人总结,各位看官勿喷!收起阅读 »