• web技术栈中不可或缺的Linux技术


    Web技术最重要的载体便是服务器,服务器运行在公共的网络环境下,为广大的用户提供网页浏览、信息通讯、消息推送等服务,从最开始的硬件服务器到虚拟主机技术,再到虚拟化技术的出现和云概念的兴起,绝大部分都是基于Linux操作系统的,因此web工程中,Linux也是一枚举足轻重的角色,不过掌握一门Linux技术也是重中之重,个人认为《Linux就该这么学》这本书拿来入门还是挺不错的,下面将开始介绍Linux作为web技术的重要角色的几个要点。

    1703261027d049821c3047416bef4eb4c3f077cc

                                            图:WEB技术栈

    1、 应用部署

    绝大多数Web应用都承载在各大Linux发行版(如ubuntu 、redhat、centos)上,因此掌握Linux环境下的应用部署和日常维护尤为重要。下面列举一些典型的应用部署解决方案:

    PHP:Nginx/LAMP(Linux+Apache+Mysql+PHP),提供HTTP(S)服务并提供PHP解析的Fastcgi;

    JAVA WEB:Tomcat/Jboss,提供HTTP(S)服务、Servlet和JSP容器;

    Node.js:pm2/nodemon:提供守护进程和集群管理服务,Node.js应用本身即可开启Server;

    那么我们需要如何进行应用部署的技能补充呢?事实上,学习WEB应用部署并不难,首先我们需要扎实Linux的基本功:了解Linux操作系统概念和发行版、掌握基本的命令和程序安装的方法(通常我们会通过包管理器或者源码安装的方式进行)。接下来的步骤简化来说就是安装应用部署所需的环境、进行环境的配置、拉取项目代码、启动应用。

    或许我们可以再前卫一些,通过虚拟化或者容器等技术去进行web应用的部署,都是依赖于上述这些最基本的套路。至于一些技术上细节和进阶的内容,可以通过相关的专业网站或书籍参考。

    2、 日常维护

    往往我们的Web应用在运行状态下,偶有意外发生,如服务不可用、性能瓶颈等,这时候我们便需要对应用的生产环境进行现场勘查。

    通常情况下,我们首先会进行系统运行状态的检查,通过工具或命令采集和查看机器运行状态指数(CPU利用率、物理内存占用率、网络、IOPS等)、服务运行状态(服务可用性、响应速度、最大并发数等),基于以上的参数,我们可以建立监控系统和可视化平台,通过脚本收集参数信息,再通过WEB前端进行可视化的展示(nagios、zabbix等)。

    接下来的重头戏则是日志系统,web应用中日志里保存了用户的操作和结果反馈,可以快速进行场景和行为的还原。一般我们会将日志分为两类:结构化日志和非结构化日志。非结构化日志(如log4j)主要是提供给开发者和维护者人工审阅和快速查询的,往往当用户量和数据量达到一定数量级时,会变得不利于阅读和分析,因此并不适合大规模的web应用场景。结构化日志(如bunyan)通过代码生成和序列化之后进行持久化存储,我们可以通过相应的工具进行海量日志的分析和挖掘,甚至可以直接和业务耦合,进行集中化的日志分析(如ELK的日志实时分析),缺点是需要通过工具转换成人工可阅读的文档。

    基于日志分析和实时监控,我们可以从而建立警报系统,(当然监控以上提及的监控平台均提供了警报功能)通过邮件等方式将服务器运行状态、故障、意外事件等进行推送。

    3、 性能优化和架构

    一款好的产品总不会一成不变,web产品在发展过程中通常会遇到性能瓶颈,这时候我们便需要对应用进行优化,甚至对整体架构进行升级。

    撇开Web应用本身的业务代码和逻辑上的优化点不说,且讲一下在Linux环境下的优化策略,而其最重要的便是参数调优,主要解决Linux默认配置带来的性能问题,其中主要的一些调优点为:打开文件树(limits)、内核参数调优(协议栈中的各参数、网络接口队列等),通常情况下,我们需要对实际的服务环境进行参数的调整。

    当我们的web应用在不断的遇到性能瓶颈和升级优化之后,整体架构也会随之演化,从最开始的单机的架构到横向扩展(升级硬件配置、增加机器数量)架构,再到纵向扩展(数据库读写分离、业务切分等)架构,然后成为面向服务的分布式集群,甚至结合新兴的大数据等技术建立高可用的集群。

    对于web开发者而言,Linux的知识和技能掌握是非常重要的,我们尤其需要一套渐进式的学习路径去熟悉和巩固,其中为代表的书籍《Linux就该这么学》提供了大部分的Linux基础学习和实战教程,非常值得阅读几番。当遇到一些难以处理的场景,需提高自身解决问题的能力,合理利用Linux开源社区的资源快速找到解决方案。

  • 相关阅读:
    跃迁方法论 Continuous practice
    EPI online zoom session 面试算法基础知识直播分享
    台州 OJ 2648 小希的迷宫
    洛谷 P1074 靶形数独
    洛谷 P1433 DP 状态压缩
    台州 OJ FatMouse and Cheese 深搜 记忆化搜索
    台州 OJ 2676 Tree of Tree 树状 DP
    台州 OJ 2537 Charlie's Change 多重背包 二进制优化 路径记录
    台州 OJ 2378 Tug of War
    台州 OJ 2850 Key Task BFS
  • 原文地址:https://www.cnblogs.com/Hdf-fight/p/6622430.html
Copyright © 2020-2023  润新知