做web全栈工程师难吗?这是最难的服务器架构 光大量化基金净值

股票资讯

一、前言

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

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

我照例先把技术知识告诉你,然后把我的干货收藏给你,希望能帮助到有需要的人。

II。服务器框架的原理和技术

首先我们来看一个Web开发的服务器框架示意图,从这里开始理解:

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

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

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

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

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

数据库检索到王二麻子的数据后,马上告诉缓存服务器,缓存服务器跑去告诉业务服务器,业务服务器把王二麻子的数据给了web服务器。web服务器一挥手,不动声色地呈现了王二麻子的数据,王二麻子可能会对着数据大喊:“XX,复试!”

过程就是这样一个过程。虽然跑来跑去看似麻烦,其实并不麻烦。这台电脑每分钟能处理数千粒大麻籽。

第三,解释服务器的每个部分

(a)客户

目前web开发主要有四种类型的客户端:IOS、Android、PC(电脑)、mobile(手机等。),所以这个就不说了。一般来说,每个用户的界面都是一个客户端,用来呈现图片、文字、视频等数据供用户查看。

(二)网络服务器

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

(1)负载平衡

什么是负载均衡?我们先来看一张图:

这是最简单的服务器架构。它没有web服务器,而是由客户端、业务服务器和数据库组成。当数据量较小时,它可以正常运行。

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

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

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

(2)静态资源服务器

并非所有数据请求都需要访问数据库。前面说过,我们从客户端一步一步地运行到数据库,进行数据请求,返回数据动态请求,而存储在web服务器上的一些数据,不需要访问数据库就可以获得给客户端,这就是所谓的静态请求。

比如一些文字、图片、视频等。,在一些网页中不经常变化,基本固定在某个地方显示,开发者不调整也不会更新。静静地呆在那里,谁进入页面,谁就显示出来。这些数据被放置在没有数据库的网络服务器上,这便于更快地显示给客户端。

(iii)商务服务器

业务服务器的主要功能是:接收数据、处理(查询、写入)数据和返回数据。

(1)协议

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

(2)开发语言

服务器的开发语言是百家争鸣。可以用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在代码美观、团队协作开发方面不如PythonJava虽然好,但是很重。比如C语言做一件事需要100行代码,那么Java大概50行,Python只需要10行。

个人不推荐Ruby做服务器。第一,因为Ruby是日本人做的事,爱国情怀;第二,Ruby是一种神奇的语言。什么意思?也就是说,如果你写了一个符号或者一个指令,他在背后为你做了很多事情。你看不到这东西的底部,逻辑上也不清楚,就直接写吧。也就是说,如果你遵循一些特殊的符号,它会给你带来很多东西。这种神奇的语言不适合团队开发。如果团队发展了,大家水平参差不齐。有的人掌握的是更神奇的语法,有的人没有。

(4)数据库和缓存服务器

仔细阅读文章的朋友可能会发现,我们之前讲过最简单的服务器架构版本,没有缓存服务器也能正常运行。那么问题来了,业务服务器需要数据,直接在数据库找不到?为什么要添加缓存服务器?

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

比如数据库的读取速度为4000次/s,如果此时有10000个数据请求在线访问数据库,但是数据库忙了1s,那么客户端就要等待,数据库需要2s以上才能给出客户端想要的数据。如果是100,000,100或者1000万呢?等200s,200s,200s?这样的用户体验是不是很糟糕?

所以增加了缓存服务器,可以缓存那里常用的信息,读取速度快(具体可以在网上查缓存和内存的速度差)。当客户端再次请求时,不需要访问数据库,可以直接获取缓存服务器中的数据。

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

面向web开发的服务器架构的原理对每个人来说都已经完成了。从原理上不难理解。如果选择合适的语言进行web开发,会事半功倍,尤其是Python,很多人都可以做到。作为这样一个全栈工程师,在市场上很受欢迎。


以上就是做web全栈工程师难吗?这是最难的服务器架构光大量化基金净值的全部内容了,喜欢我们网站的可以继续关注芸洁股票网其他的资讯!