网络是一条神奇的信息之河,你想要了解的,你想要传递的,只需轻轻的碰一碰河水,就能尝到神奇的甘甜。也许是它太普及,以至于,人们忘掉了它原本的神秘。
本文主要从N个层面,普及各个系统、各个层面,简单的介绍一下整个网络世界的各个环节,需要什么样的人员、什么样的工具/设备、参与什么样的工作。
一、总体架构
本图大致介绍了一个大型系统所需要的全部内容,比如淘宝,首先得有机房,放服务器等基础硬件设备,基础设备通电开机以后,需要装操作系统,装完操作系统了,得在上面装软件(APP、服务),装完软件了,就可以开发APP、网站、网页给人们使用了。
二、机房里都有啥?
1、机房物理结构:顶部、底部会有夹层,用来走线,因为机房有大量的网线、电源线需要连接。一台交换机可能就需要20根网线,通常网线走天花板,电源线走地面。
2、配电柜:机房的设备少则数十台,向百度云、华为云的机房可能有数万台,配电柜能够提供稳定的电压,防止短路,便于排查某个区域的设备故障情况。
3、不间断电源UPS:在停电的时候,能够提供稳定的电源,类似于充电宝的作用。当然,针对一些重点机房,电力部门通常会有特殊的处理,可能有一些备用线路的提供,但自己准备好UPS更能防患于未然。
4、中央监控:机房通常有数十个摄像头,8个以上监视器监控各个空间的情况。
5、消防报警系统:机房设备只能使用二氧化碳灭火器,干粉灭火器可能与机房里的空气、水附着到一起,进而引起短路。报警系统处理能够提醒保安立即处理以外,还直接连接到119救火中心。
6、放火隔断:也就是防火门之类的,避免一个区域的火情扩散到其他的区域。
7、防尘:进入机房通常需要穿鞋套,带头套,有些地方还需要穿特殊的白色大衣,以防止人身上的灰尘散落到机房。灰尘通常是导致精密硬件老化、故障的主要原因。
三、网络设备
1、路由器:几乎每个城市家庭都会有的设备了,可以支持多个局域网内设备连接到Internet。
2、猫(Modem):调制解调器,也就是把电话线传输的脉冲信号转化为计算机能够识别的数字信号,回家看看自己的猫,左边可能是电话线、光纤,右边是网口,连接到路由器。不过现在有些modem也支持无线路由的功能。
3、交换机:能够划分vlan的设备,通常能够提供20-30个网口。交换机可以把机房里的设备划分到不同的网络区域,比如1-10在1个局域网,11-20在另一个局域网,两个局域网之间无法连接。
4、防火墙:个人电脑上都有防火墙程序,在大型机房中,采用单独的硬件防火墙,也就是将防火墙程序独立成一台设备,以减轻各台应用服务器的CPU芯片压力。防火墙理应算作一个安全设备,但网络发达的今天,防火墙就像汽车的玻璃窗一样,成为一件必不可少的设备。
5、F5负载均衡服务器:当网络流量过大的时候,单一的设备,单一的软件部署在服务器上,都无法有效的解决分流的问题。比如微信,同时有好几百万人在聊天,那就是几百万句话要发给特定的人,这个时候就需要F5把这些信息分发到不同的应用服务器上去处理。这就是F5的作用。
补充说明一下:Nginx Proxy 通常是代理服务器,也就是Nginx服务部署在服务器上,作用与F5类似,连接内外网,能够分流数据。不够性能肯定没法跟硬件设备相比。
四、服务器
服务器:通常来说,就是一台性能超强的主机;一般的家用电脑是4核(4个cpu),4-8G内存;服务器通常有更高的配置,可能达到16核,32G内存,2T存储空间。不过目前虚拟机技术的发展,服务器通常由运维人员来配置,你需要什么配置的设备,机房管理人员会直接提供。
应用服务器:也就是提供应用服务的服务器,换句话说,就是把某些程序装到服务器上面,那么这台服务器的作用就变成了提供某种服务。比如简书的应用服务器,可能提供登录服务、账户注销服务、连接微信的服务、提供网站服务等等。
存储服务器:也就是用于存储数据的服务器,这款设备与应用服务器不同之处在于可以热插拔多个硬盘。个人电脑可能数据最多几百G,但例如微信,要存储上亿个用户的数据,这些数据在一台设备上是无法存储的,要放到多台设备存储。
虚拟化技术:上面讲到,也就是把CPU、内存、硬盘等空间系统的整合,然后要用的时候,能够合理分配给使用者。就好比市民之家的功能,原本各个行政单位在各个不同的地点,现在我把他们汇总到一起,在一个地方管理。当然市民之家可没有虚拟化技术这么灵活。
堡垒机:也就是用于管理服务器的服务器,使用堡垒机,可以监控到自己有多少台设备,并且通过堡垒机控制权限,限制用户登录到不同的应用服务器上面,可以理解为服务器的管家。
五、安全设备
网络安全:网络安全通常是指禁止、限制某些外网的数据发送到内网,避免内网数据被窃取;也可以防止洪水攻击、进行威胁感知,避免内网设备性能、服务受到影响。
数据安全:验证数据发送者的身份,避免数据被篡改,被窃取,被解密。比如银行的ATM上取了一笔钱,你取的是10000,这个数据不能让你篡改成100。
IDS(Intrusion Detection Systems)入侵检测系统:依照一定的安全策略,通过软、硬件,对网络、系统的运行状况进行监视,尽可能发现各种攻击企图、攻击行为或者攻击结果。譬如说,你在内网中尝试读取一个核心数据库的资料,而资料的传输地址在IDS中没有备案,那么这个操作就可能被告警。
IPS(Intrusion Prevention System)入侵防御系统:在IDS的基础上,能够阻断某些操作。譬如说,你在内网中尝试读取一个核心数据库的资料,而资料的传输地址在IDS中没有备案,那么这个操作就可能被中断。
WAF(Web Application Firewall)web应用防火墙:与传统的防火墙相比,拥有更多的安全策略,不仅仅是在网络层面进行防护,而是从应用层面进行防护。主要包括抗洪水攻击(大量的垃圾访问),URL黑名单,爬虫防护,防止SQL注入等。
威胁感知:这里我理解的是一种数据层面的防护,譬如针对一些钓鱼网站、病毒文件、病毒来源、威胁的地址进行海量记录,然后评定危险的等级,那么就可以及时感知到可能发生的风险。(感兴趣的朋友可以自行百度)
加密机:在金融、军队、涉及资金的行业(社保卡、医保卡、公交卡等)使用广泛,主要有两个作用,一个是生成密钥,一个是用密钥进行加解密。这是一种硬加密设备,也就是加解密程序运行在加密机的内存中,而不运行在任何应用服务器中,以此保护计算的安全。另外加密机拥有物理噪音发生器设备,用来生成随机数。我们通常的软件都是伪随机数,也就是根据当前的时间参数通过固定的算法来计算出一个随机数,并不是真正的随机,而是可以被破解的随机。
证书服务器:主要用于数字签名,数字证书等技术中。譬如我们每个人以前常用的U盾,每个U盾里面都有一个证书,这个证书就是有证书服务器提供的。证书可以保障数据的安全,主要是防篡改,以及认证身份。
六、操作系统
大家熟知的操作系统主要是安卓手机,苹果手机,Android是一种操作系统,IOS也是一种操作系统。不同的系统具备不同的功能,具有不同的性能,但终归都是对CPU、内存、硬盘等设备的管理。我们常用的电脑系统也就是Windows10 ,MAC OS等。
Linux操作系统:相比于win、mac,再图形化、交互方面要弱化一些,更多的是服务的概念。比如Windows提供的炫酷的操作页面,要耗费大量的计算机性能来完成,除了优秀的CPU处理器以外,还需要独立显卡等设备进行支持。Linux操作系统主要用于运行一些基础服务,相比而言稳定性更强,能够运行数万小时不用重启,适用于本平台的病毒也要少很多。Centos、redhat、AIX等都成为类UNIX系统,原因就是Linux是开源的,免费的,UNIX是付费的产品。
七、操作系统的里面
1、最底层的是硬件管理,也就是cpu、内存、硬盘、IO等控制程序。
2、I/O模块,也就是一套链接计算机高级程序与硬件设备的接口,通过这个模块,计算机就可以控制内存的读出,CPU资源的分配等。
3、进程管理,每个程序都是由一个或多个进程执行,各个进程去调用计算机资源完成任务。比如你拨打电话就是一个进程,调用了手机的拨号功能,通过SIM卡访问电话网络,想电信公司的服务器发送拨打电话的请求。
4、函数库,操作系统提供一套通用的功能,通过这套函数库,应用程序可以适用计算机的更多资源,比如读取内存,读写文件等等。
5、shell,也就是操作终端程序,通过这个程序,人类输入命令,计算机能够识别,并且能够完成任务。类似于Windows里面的CMD,你输入shutdown -s -t,就执行了一个关机的命令。
八、数据库
1、数据库的来源:最早没有数据库的时候,文件都是存在计算机的文件系统里面,比如写在一个txt文档里面。但是你的数据量过大,达到数万、数百万、上亿的时候,操作系统基础的文件系统无法支持这样的性能。你要在上亿个名字中查找一个名字,就会变得非常困难,甚至导致系统崩溃。这个时候就出现了数据库,它能够提供更丰富的增删改查服务,能够提供存储海量的数据,高性能的搜索。
2、关系型数据库:关系型数据库通过外键关联来建立表与表之间的关系,也就是说一个学生表和一个班级表,都会存班级这个属性,这个属性是两个表的共有参数,并且能够通过这个参数将两个表关联起来。关系型数据库的查询、检索性能面对海量数据也无法有效支撑,因此诞生了非关系型数据库。
3.非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定。非关系型数据库通常拥有更强大的检索性能,目前的存储架构通常是用关系型数据库存数据,用非关系型数据库去检索,数据至少是存两份。
4、大数据:采用新的技术来处理海量的数据,主要数据存储,数据分析,数据可视化,以及算法优化。可以理解为在数据库的基础上的应用扩张。
九、中间件
中间件(Middleware)通常是指在一个大型分布式的系统中,负责各个不同组件(Component)/服务(Service)之间管理以及交互数据的。举个例子,在分布式系统中,数据库往往是N多个,不同的数据库可能是按照数据ID的hash,也可能根据业务模块来分配的。而且这种分配可能随着数据增长或者业务变更而改变。这个时候,你想修改某条数据,显然就不太可能直接访问数据库了,而是需要访问数据访问层,由它来负责对最终的数据库的读写,乃至负责多个数据库之间的事务一致性。
十、服务与后台系统
1、服务的概念,就是运行在服务器上的程序,这些程序提供特定的功能。比如计算机里面的一些基础服务,有存储服务,网络服务,管理线程的服务,可以理解为不同的功能。系统的功能,就是一个操作系统。
2、微信案例:小红要给小明发送你好,这个你好这个数据就会先发送到服务器上,服务器接受发送的信息+发送人,然后把消息传给特定的人。并不是你的消息直接就发送到对方了。
3、常用应用后台系统简介:
A.用户系统,存下用户的账号、密码,登录的时候校验用户的账号、密码;注销的时候注销特定的账户;
B.订单系统,比如用支付宝完成一笔交易,就有一笔订单,订单系统记录订单,查询订单,跟踪订单处理状况;
C.商城,例如淘宝官网,可以提供商品的上下架,修改价格,商品售卖等服务;
D.ERP,企业资源管理系统,通常会提供财务模块给财务人员使用,行政模块给行政使用,销售模块给销售使用,质量模块给质量保障部门使用等等。
E.监控系统,通常指的是硬件设备监控,比如ATM机监控,机房内的服务器运行状态监控,车载POS设备监控等等。
事实上,只要有需求,就可以开发相应的系统以供使用,以上所述是常用的系统。
十一、开发语言
开发语言通常指的是一种高级语言,人类通过高级语言编写程序,相应的编译软件将高级语言翻译成计算机能够识别的二级制数据信号,就可以运行了。编译,其实就是一个翻译过程,将人类语言翻译成计算机语言。因为电信号只有2种,一种是有电,一种是没电,通过这个最基础的信息构建了我们今天繁华的网络世界。