常用web服务器架构理解

news/2024/11/20 17:25:54/

一、服务器架构理解

  一个Web项目上线,必须依托于服务器成为互联网之中的一个节点,要使我们的应用得以运转,这个节点内容需要进行一系列的工作环境安装配置,而为了目标项目的安全性、稳定性、灵活性,同时考虑公司运营成本,我们相应会做服务器架构对应的软件选择,也就是对服务器架构进行思考。

  服务器架构的第一步则是要考虑选择什么服务器的位置和软件,包括服务器选择云端的还是自己建设、服务器操作系统、进行网络连接的服务器软件、开发语言、数据库等,而这些选择的组合结果,将极大影响项目的后期整体运行以及优化扩展。

  在经过前人不断实践后,逐渐总结出来一些模式化的“解决方案”,目前常见的服务器架构模式分别有:Lamp(Linux+Apache+Mysql+PHP)、Lnmp(Linux+Nginx+Mysql+PHP)、Wamp(windows+Apache+Mysql+PHP)、Wimp(windows+IIS+Mysql+PHP)。

  由于windows操作系统具备易用、界面友好、软件丰富、操作起来非常方便的优势,中小企业常常选择Wamp和Wimp作为公司项目服务器的架构,而又由于windows性能较差、安全性低、不稳定等缺点,大公司常常选择使用Lamp和Lnmp服务器架构。

   以下根据Lamp+Lnmp架构模式具体分析优劣。

二、架构图

 

图1. lamp/lnmp基本架构

三、Lamp/Lnmp架构理解

1. LINUX系统

    Linux操作系统有很多发行版本,常见的有Linux操作系统有很多个不同的发行版,如Red Hat Enterprise Linux、SUSE Linux Enterprice、Debian、Ubuntu、CentOS等,每一个发行版都有自己的特色,比如RHEL的稳定,Ubuntu的易用,基于稳定性和性能的考虑,操作系统一般选择CentOS是一个理想的方案。

    CentOS(Community ENTerprise Operating System)是Linux发行版之一,是RHEL(Red Hat Enterprise Linux)的精简免费版,和RHEL为同样的源代码,不过,RHEL和SUSE LE等企业版,提供的升级服务均是收费升级,无法免费在线升级,因此要求免费的高度稳定性的服务器可以用CentOS替代Red Hat Enterprise Linux使用。

    Linux系统之所以会成为目前最受关注的系统之一,主要原因是它的免费,以及系统的开放性,可以随时取得程序的原代码,这对于程序开发人员是很重要的。

除了这些它还具有以下的优势:------------------------------------------------------------------------------

Linux系统优势一:跨平台的硬件支持

    由于Linux 的内核大部分是用C 语言编写的,并采用了可移植的Unix标准应用程序接口,所以它支持如i386、Alpha、AMD和Sparc等系统平台,以及从个人电脑到大型主机,甚至包括嵌入式系统在内的各种硬件设备。

Linux系统优势二:丰富的软件支持

    与其他的操作系统不同的是,安装了Linux系统后,用户常用的一些办公软件、图形处理工具、多媒体播放软件和网络工具等都已无需安装。而对于程序开发人员来说,Linux更是一个很好的操作平台,在Linux 的软件包中,包含了多种程序语言与开发工具,如gcc、cc、C++、Tcl/Tk、Perl、Fortran77 等。

Linux系统优势三:多用户多任务

    和Unix系统一样,Linux系统是一个真正的多用户多任务的操作系统。多个用户可以各自拥有和使用系统资源,即每个用户对自己的资源(例如:文件、设备)有特定的权限,互不影响,同时多个用户可以在同一时间以网络联机的方式使用计算机系统。多任务是现代计算机的最主要的一个特点,由于Linux系统调度每一个进程是平等地访问处理器的,所以它能同时执行多个程序,而且各个程序的运行是互相独立的。

Linux系统优势四:可靠的安全性

    Linux系统是一个具有先天病毒免疫能力的操作系统,很少受到病毒攻击。

    对于一个开放式系统而言,在方便用户的同时,很可能存在安全隐患。不过,利用Linux自带防火墙、入侵检测和安全认证等工具,及时修补系统的漏洞,就能大大提高Linux系统的安全性,让黑客们无机可乘。

Linux系统优势五:良好的稳定性

    Linux 内核的源代码是以标准规范的32 位(在64 位CPU上是64 位)的计算机来做的最佳化设计,可确保其系统的稳定性。正因为Linux 的稳定,才使得一些安装 Linux 的主机像Unix 机一样常年不关而不曾宕机。

Linux系统优势六:完善的网络功能

    Linux 内置了很丰富的免费网络服务器软件、数据库和网页的开发工具,如Apache、Sendmail、VSFtp、SSH、MySQL、PHP和JSP 等。近年来,越来越多的企业看到了Linux 的这些强大的功能,利用Linux 担任全方位的网络服务器。

----------------------------------------------------------------------------------------------------------

linux除了以上的优势,程序员自己还可以利用shell脚本开发系统功能。综上对linux的认识,我们没有理由不选择Linux。

2. Apach服务器

    Apache是LAMP架构最核心的Web Server,开源、稳定、模块丰富是Apache的优势。但Apache的缺点是有些臃肿,内存和CPU开销大,性能上有损耗,不如一些轻量级的Web服务器(例如nginx)高效,轻量级的Web服务器对于静态文件的响应能力来说远高于Apache服务器。

3. Nginx服务器

    Nginx是一个小巧而高效的Linux下的Web服务器软件,是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler 站点开发的,已经在一些俄罗斯的大型网站上运行多年,相当的稳定。

    Nginx性能稳定、功能丰富、运维简单、处理静态文件速度快且消耗系统资源极少。

    作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率。

    作为负载均衡服务器:Nginx 既可以在内部直接支持Rails和PHP,也可以支持作为 HTTP代理服务器对外进行服务。Nginx 用C编写,不论是系统资源开销还是CPU使用效率都比Perlbal要好的多。

    作为邮件代理服务器:Nginx同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last/fm 描述了成功并且美妙的使用经验。

    Nginx 安装非常的简单,配置文件非常简洁(还能够支持perl语法)。Nginx支持平滑加载新的配置,还能够在不间断服务的情况下进行软件版本的升级。

4. PHP

PHP是目前web开发使用最多的语言。

优点

    开源、免费、快捷性(程序开发快,运行快,技术本身学习快)、插件丰富、网上的解决方案有很多(有庞大的开源社区可以提供帮助)、跨平台性强、效率高、图像处理好、面向对象。

缺点

1) 函数命名不规范:驼峰法和下滑线,传参位置不一;

2) 单线程: PHP本身一直以来就是个单进程的程序,虽然php的pthreads扩展早就有了,但是它不够稳定,运行运行着就会莫名其妙的自己挂掉,php的扩展都是C写的,这也就意味着任何一个扩展出现线程竞争资源控制问题都能让整个系统挂掉;

3) 核心异步网络不支持(当然在linux只有同步非阻塞网络模型)。少了这个,使得很难开发一个能够承受大并发的网络应用。传统的网络模型和io都阻塞的,这样基本的编程的做法就是一个进程(或者线程)响应一个用户链接请求。因此无法完成像实时网游那样需要成千上万网络连接的任务。尽管php也有Libevent、eio扩展对此算是某种程度上面的弥补,但是感觉都不是那么完善;

4) 只支持web开发,不方便做 .exe文件,不方便做桌面应用程序,不方便做手机程序;

5) 不适合做爬虫。自动运行脚本,科学运算项目,这语言基本构架就不适合,虽然有很多方法实现。

6) 后期维护困难,后期提速空间局限性较大。

5. MYSQL数据库

    开源的数据库中,MySQL在性能、稳定性和功能上是首选,可以达到百万级别的数据存储,网站初期可以将MySQL和Web服务器放在一起,但是当访问量达到一定规模后,应该将MySQL数据库从Web Server上独立出来,在单独的服务器上运行,同时保持Web Server和MySQL服务器的稳定连接。

  当数据库访问量达到更大的级别,可以考虑使用MySQL Cluster等数据库集群或者库表散列等解决方案。

四、总结

    Linux开源、安全、高性能、稳定;apache服务器开源稳定;Nginx消耗低、速度快、稳定;mysql数据库高性能、稳定、免费;PHP开发速度快。所以综合来说。LAMP/LNMP架构的网站性能高,且成本低,非常适合大部分的商业运作,稳定性、安全性远远优于WIMP/WAMP架构的网站,可以负载的访问量也非常大,在IT领域发展,对于个人或公司,用LAMP/LNMP架构自己项目服务器,肯定会更好。

五、参考网站

1. http://www.williamlong.info/archives/1908.html

2. https://www.cnblogs.com/xiaotaoing/p/6687418.html

3. https://www.cnblogs.com/soundcode/p/6576637.html


http://www.ppmy.cn/news/650949.html

相关文章

HarmonyOS 实战——认识服务卡片及运行第一个服务卡片

HarmonyOS 实战——认识服务卡片及运行第一个服务卡片 HarmonyOS 实战——认识服务卡片及运行第一个服务卡片原子化服务的理解用户角度开发角度 工具配置安装 Java下载和安装 HUAWEI DevEco Studio创建以及运行工程创建工程创建卡片服务运行工程 HarmonyOS 实战——认识服务卡片…

用实战项目经验告诉你什么是二方包!

前言 只有光头才能变强。 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 最近在整合各种的系统,在这个过程中遇到了各种的问题,三歪今天来分享一下关于「项目结构」或者说「二方包」的事。 我们…

C++ 编写WebService服务

大家好,很久没有写相关的技术文章了,最近一直考虑一个问题,就是对于一个老C程序员来说,后续路程如何走下去:该学写什么,了解写什么?想了想,突然注意到最近公司接到的客户需求&#x…

Android——后台服务

Android应用编程实验 实验名称:Android 后台服务 实验目的:通过Service设计后台服务程序,通过Broadcast实现信息广播机制 实验内容: 设计一个简单的后台音乐服务程序;设计一个简单的信息广播程序示例;利用B…

什么是边缘计算?

注:本篇翻译自施巍松教授的论文《Edge Computing : Vision and Challenges》 目录 文章目录 摘要简介什么是边缘计算什么是边缘计算边缘计算的优点 案例研究云卸载视频分析智能家居智慧城市 机遇和挑战编程可行性命名数据抽象服务管理私密性最优化指标 小结 摘要 …

什么是项目管理?怎么管?(一)

前言 项目管理是团队建立共同语言的需要、保证每个项目结果的需要、积累企业过程资产必要,同时还是打造企业战略执行力和项目管理核心竞争力的需要。 项目管理就是要做好项目的事、做好团队的事、做好企业组织的事、做好商业的事,就是又要当爹又要当妈。…

fiddler抓包——手机添加代理后APP连不上网的常见4种原因及解决办法

更新 遇到的问题是: Android6.0及以下系统可以抓包,而Android7.0及以上系统不能再抓包。 原因: Android7.0的版本新增了证书验证,即app内不再像原来一样默认信任用户的证书。 Android7.0以上无法抓包问题解决。 fiddler抓包—…

Android 编写开启自启动的脚本服务

前言 因为公司有一款手机在升级之后用户找不到内部sdcard 中的数据,分析了主要原因是因为升级前后内部sdcard 的链接的路径改变了。之前sdcard的数据在/sdcard/emulated/ 目录下,升级时候放在了/sdcard/emulated/0/ 下面。一个解决方案就是在手机启动的时…