全栈工程师累吗

核心提示一、前言Web开发是一直以来程序员的热门发展方向,尤其是全栈工程师的薪资待遇很丰厚,最近有很多小伙伴问到我关于Web开发的问题,最常见的就是"web开发难吗"、"学什么语言做web开发好找工作"。作为一个多年在线下教学web开发的老师,今天

一.导言

Web开发一直是程序员,尤其是全栈工程师的热门开发方向。最近很多朋友问我关于Web开发的问题。最常见的有“web开发难吗?”以及“开发web找工作要学什么语言?”

作为一个多年在线教授web开发的老师,今天我就用通俗易懂的方式给大家讲讲web开发最重要的东西——服务器架构原理。你可以通过这个介绍性的解释给出自己的答案,看清一切的本质。

老规矩,先说技术知识点,然后把自己收集的干货给你,希望能帮到有需要的人。

二、服务器框架的原理和技术

首先我们来看一个Web开发的服务器框架示意图。我们将从这里学到:

我暂时不对里面的板块做详细分析。我们将在本文后面详细解释它们。我们先梳理一下web开发的服务器框架原理。

从图中的白色箭头可以看出,服务器的响应过程大致可以分为两个过程:

数据请求流程:客户端→web服务器→业务服务器→缓存服务器→数据库

数据返回流程:数据库→缓存服务器→业务服务器→web服务器→客户端

比如一个叫王二麻子的同学,想从电脑上查自己的四级成绩。此时,当他在电脑上登录查询页面时,他是在客户端。当他在客户端输入个人信息后点击查询按钮时,客户端开始向web服务器发送王二麻子的数据请求,web服务器命令业务服务器与缓存服务器进行核对处理,缓存服务器再将王二麻子的数据取到数据库中检索数据。

数据库检索到王二麻子的数据,马上告诉缓存服务器,缓存服务器跑去告诉业务服务器,业务服务器把王二麻子的数据交给web服务器。web服务器默默的一挥手,呈现出王二马子的数据,王二马子可能会对着数据破口大骂:“XX,你又要重考了!”

就是这么一个过程。虽然跑来跑去看起来很麻烦,但其实一点都不麻烦。计算机每分钟能处理几千万个麻子王。

三。服务器各部分的说明

客户

目前web开发的客户端主要有四类:IOS、Android、PC、移动,这个就不说了。一般来说,每个用户的界面就是客户端,用来将图片、文字、视频等数据呈现给用户查看。

网络服务器

web服务器有两个主要功能:负载平衡和静态资源服务器。

负载均衡

什么是负载平衡?先来看一张图:

这是最简单的服务器架构。它没有web服务器,只有一个客户端、一个业务服务器和一个数据库。它可以在少量数据的情况下正常运行。

如果一个业务服务器可以支持5000个客户端访问,只要不超过5000个设备访问就可以了,但是如果超过5000个客户端访问呢?只剩下两种方法了。一种是通过改变开发语言来重构业务服务器,以提高其性能,这就涉及到开发语言的性能。我们以后会讲到;第二,增加业务服务器的数量,保证大量客户端的正常访问,增加负载能力,这也是常用的方法。

那么问题来了,增加业务服务器数量,但是“看起来”都一样,客户端很郁闷。我应该访问哪个服务器?

所以需要一个web服务器进行统筹分配,分配哪些业务服务器客户端应该访问,合理分配资源,避免客户端统一访问某个业务服务器造成的过载,这就是web服务器的负载均衡功能。

静态资源服务器

并非所有数据请求都需要访问数据库。如上所述,我们从客户端一步步运行到数据库,进行数据请求,返回数据动态请求。然而,一些存储在web服务器上的数据可以在不访问数据库的情况下被客户端获取,这被称为静态请求。

比如一些文字、图片、视频等。,在一些网页中不会频繁变化,基本上固定在某个地方展示,开发者除非调整,否则不会更新。静静的呆在那里,谁进入页面就显示谁。这些数据放在没有数据库的web服务器上,这样可以更快地显示给客户端。

服务服务器

服务器的主要功能是:接收数据、处理数据和返回数据。

草案

目前服务器主要遵循两种协议进行数据传输和处理:http/https和socket请求。Http属于应用层,socket比较原生,也就是所谓的TCP/IP层,属于网络层。这两个我就不细说了,往这方面发展我会学的。

开发语言

服务器的开发语言可谓是百家争鸣。可以用C,C++,Java,PHP,Python,Ruby等语言开发,但是性能和性价比还是有区别的。

目前服务器比较多的语言是Java和PHP。为什么?第一,php比较简单,这个功能比较容易上手;其次,java可以大规模团队协作开发,封装成模块,代码可以重用。

但是还是有越来越多的公司使用C/C++和Python开发服务器的趋势。为什么?

因为很多服务器开发的开发周期是很久以前,十几年前。当时企业为了快速攻城略地,先创业,选择开发周期短的语言做服务器。虽然负载有限,但可以通过硬件来补充。但是,随着手机和电脑越来越多,客户端越来越多,如果仍然以硬件来补充服务器的负载性能,就会面临很多问题。

比如阿里遇到过的电费问题,要让机器一直开着。随着阿里的业务量越来越大,硬件每天消耗的电费是一个很头疼的问题。没日没夜的烧只会烧钱,光电费就占公司全年开支的10~30%。我们做什么呢那么只能从服务器的开发入手,选择一种性能更高的语言来重构服务器,性能会有所提升。部分服务器改造后,单台服务器性能可提升10倍。

所以C/C++这种机器语言成为了强大的企业开发服务器的首选,所以C/C++永远不会过时。

对于中小型企业,不建议使用C/C++进行开发服务器。虽然他们的性能很高,但是很难开发。而且市面上真正懂C/C++的程序员很少,所以付出的薪水自然也高。可以用脚本语言进行开发,让业务先跑起来。到了瓶颈,相信公司也有稳定的资金支持。此时重建服务器更为合适。

个人比较倾向于中小企业的服务器开发用Python。为什么不是其他语言?

首先,Python是一种面向对象的脚本语言,代码量小,语法简洁,逻辑清晰。PHP在漂亮的代码和团队协作开发方面不如Python。Java虽然好,但是很重。比如C语言做一件事需要100行代码,那么Java大概是50行,而Python只需要10行。

我个人不建议用Ruby做服务器。一是因为红宝石是日本人做的东西,爱国情怀;第二,Ruby是一种神奇的语言。这是什么意思?也就是你写一个符号或者一个指令,他就会在背后为你做很多事情。这个东西你看不到底,逻辑不清晰。写就好了,也就是说,如果你按照它的一些特殊符号,它会给你带来很多东西。这种神奇的语言不适合团队开发。如果就团队发展而言,大家的水平参差不齐。有的人掌握了比较神奇的语法,有的人没有,所以不适合团队开发。

和数据库缓存服务器。

认真看文章的朋友可能会发现,我们之前讲过最简单版本的服务器架构,没有缓存服务器也能正常运行。那么问题来了。如果业务服务器需要数据,难道不能直接去数据库找吗?为什么要添加缓存服务器?

实际上,这是为了减少数据库的负载,提高客户端的体验。服务器相当于一个缓存区,可以缓存数据。

举个例子,如果数据库的读取速度是4000次/秒,如果此时有10000个在线请求访问数据库,但是数据库忙了1s,那么客户端就要等待,数据库要用2s以上才能给出客户端想要的数据。如果是十万,一千,一万呢?等等20秒,200秒,2000秒?这样的用户体验是不是很糟糕?

所以加了一个缓存服务器,可以把常用信息缓存在那里,读取速度快。当客户端再次请求时,不需要访问数据库,只需要取缓存服务器中的数据。

在数据存储方面,有更先进的分布式文件存储系统,也解决了传统数据库的缺点,比如阿里采用的TDFS,亚马逊采用的GDFS等。这是比较高端的技术,有机会可以去了解一下。

web开发的服务器架构原理给大家说完了,原则上理解起来也不是很难。选择合适的语言做web开发,会事半功倍,尤其是Python,很多人前后台都能做,作为这样的全栈工程师在市场上很吃香。

 
友情链接
鄂ICP备19019357号-22