聊聊开发中经历的几种后端语言

article/2025/8/26 23:53:19

前言

谈这个话题,没有任何语言之争,只是个人开发的经历。

适合

开发语言的选择只是当时条件下适合每个项目或者每个团队乃至每个公司的最佳选择,并不是说XXX公司也用这个我们用这个肯定没问题。
当时还在某手机公司,有次跟某公司后端leader聊天的时候,我说我们现在一些高并发的场景的项目都在用lua开发,那哥们说了几句,你们XX手机现在都流量这么高了,Facebook 微博都在用PHP开发,你们的量都超过微博了。然后,后面没法聊了,不知道该怎么接这茬了。大家都了解的是,Facebook在很多年前已经开发了HHVM来优化PHP的性能,对PHP的了解和熟悉已经将PHP用到了极致了。微博也一直在用PHP,鸟哥在微博作为技术专家工作了很多年,后面微博PHP的版本升级也有鸟哥兜底,所以这种大型的公司,不管使用何种语言都有会资源上的保证,小公司是没法比的。
所以选择适合的语言,有适合的人和资源保证,才是王道,公司和个人心里才有底。
我们公司现在是这样选择的,后台管理系统一般用PHP开发,前台的一些简单项目比如短连接服务、跳转服务等等的都使用lua开发,中间件项目,服务项目抽奖、插屏、消息服务等使用GO开发,当然了,主要对外的几个高访问量的项目也使用GO开发。LB上的安全防火墙也是使用lua开发的。
原则就是,对外的高访问量的项目和中间件的项目使用GO开发,简单项目,LB上的需求都是使用lua开发,后台管理系统使用PHP开发。

PHP

PHP这门语言,应该是算我开发时间最长的语言了。专门的WEB开发语言,优秀的开源框架、开源项目数不胜数,开发便捷,容易入门,是中小型公司热衷的选择。还有PHP的新版本7.X之后对性能成倍级的提升,加上高性能的异步并发的通信网络服务swoole的加持,让PHP换发出了第二春,性能上对80-90%以上的项目已经不存在问题了。当时我们支付系统使用的swoole,确实解决了很多痛点。到现在,项目的选择都是优先想到PHP。
原来的公司有个访问量比较高的应用,每天3K万的请求量,到现在还是使用的PHP,使用了四台机器,两台机器提供API,两台提供后台服务,性能上一点问题也没有,即使将来性能上有问题了,加一两台机器,再抗几年也是没问题的,出过几次事故,都是MySQL的问题,跟PHP本身没有任何关系,还有很多项目每天几百万的请求量,都是PHP开发的。所以前面说了,80-90%以上的项目根本不会有性能的问题。
高并发大流量的场景还是有些限制的,比如抢购秒杀等等。我们每次新品发布的时候,前面阶段加上限流,逻辑上为了达到每秒3000多单的下单率,每次活动前,都需要把机器从平常两三台加到8台,来满足3000多的下单率。

lua

lua作为后端语言,主要是指OpenResty。OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。简单的将openresty的lua理解成Nginx就可以了。
之前也研究过一段时间的openresty,但都处在学习和练手的阶段,没有开发过生产的项目。使用lua开发高并发的项目,是因为当时有个项目,困扰了我们很长时间。大概是这样的,每天凌晨0-2点,会把昨天的日志打包上传到服务器,每天的这个时候,四台的机器的负载都在80-90以上,服务基本上处于不可用的状态,过了凌晨2点,服务慢慢就会恢复,想了很多办法都未能解决这个棘手的问题。后来就尝试使用lua将项目重写了下,写完之后就灰度发布到一台机器上了,观察了一段时间,发现这台机器在0-2点负载最高是5,基本上解决了我们的问题,观察经过了安全期后全部发布。下面是当时修改之后的监控数据的截图,修改之前的截图找不到了。
在这里插入图片描述
后来就深入研究了openresty,找一些开源的框架,发现了vanilla,Vanilla是一个基于Openresty实现的高性能Web应用开发框架。后来的一些高并发的项目或者接口就使用lua重构了一次。整体上还是比较满意的。

golang

golang的语言的使用应该算是一个水到渠成的事情。前期一些高并发的项目都是用lua开发,优点是解释型语言,写个小的项目或者网关上waf类的项目,可以说相当适合,即改即生效,网关上拉个黑名单,限流限频调整配置等等。弊端也越来越明显,面向对象是使用lua的metatable实现的,很弱很弱,手误或者写错或者有BUG很难及时的定位到,有问题了经常需要调试老半天,或者写一两天代码需要半天时间调试,相当影响开发效率和定位问题的效率。急需一种新的方案来解决高并发的场景,然后Golang就骑着大白马来了,当时可选方案很少,只有Java和Golang,团队成员都是PHP出身的,转战Java的代价太大成本太高。相比之下,Golang就容易的多,入门简单,专为为高并发而生,他爹Google又令人这么放心。唯一担心的就是,原来接触的PHP Lua都是解释型语言,写游戏的时候倒是使用过几年actionscript3,但是写客户端程序和写服务器程序是有天壤之别的。使用了Golang之后觉得担心是多余的,相当顺手,现在是越来越喜欢了。写了一天代码之后下班的时候编译一下,解决掉几个编译错误之后基本上就没其他问题了,第二天测试下就可以发布了。使用解释型语言的时候哪有这么顺利过,一般得调试老半天,一度都以为自己半年来技术都牛逼到这个程度,差点都离职去面试阿里的P10了,O(∩_∩)O哈哈~。直到使用解释型语言的时候就回到现实了,自己还是以前的哪个自己… 总之,挺好用的,值得尝试下。

技术人得有点追求

很多年以前,我们的技术负责人说过一句话,我们问,PHP+MYSQL已经能满足80-90%的项目需要,为什么还有那么多人和小公司去冒着风险去尝试新的技术、新的语言,新的异步方式、新的消息队列,他说过的话至今记忆深刻,你们说的都对,但是技术人得有点追求啊。
多尝试,只会有好处没坏处。一些小的独立的项目试试新的实现方式,效果也许会令人大吃一惊,更优的解决方案就慢慢呈现出来了。


http://chatgpt.dhexx.cn/article/TnEkJb27.shtml

相关文章

服务器后端的编程语言

本文为 csdn cedricliang 编纂翻译,如有转载,请于原文篇头出标明译者及原文出处,以示尊重! 翻译:cedricliang 原文:http://blog.csdn.net/cedricliang/article/details/48437437 对于那些需要web服务的初创…

这么多语言,究竟哪个适合写后端,Java还是?

温馨提示 请拖动到文章末尾,长按识别「抽奖」小程序。现金红包等你来拿。 【公众号回复“1024”,送你一个特别推送】 9:10约会,真爱,请“星标” 前言 作为开发者我们都知道,开发后台语言可选择的方向会很多&#xff0c…

【编程语言】盘点当前主流的后端语言,随便选哪一种都能月薪过万!

当前主流后端开发语言如下: Java 笔者目前是Java开发工程师。Java一般用来做应用的,它作为热门服务端语言活跃多年了,很多公司都有找Java程序员,市场有很多需求。所以说,选择学习Java,也许不是最好的&…

2021最热门的后端编程语言排行榜出炉!

三足鼎立 截止2020年底,后端编程语言中,java依然是市场的王者,C/C、python和go占据一部分江山,从2021年开始,未来十年,在后端编程语言中,各位觉得哪个编程语言会越来越流行,java会一…

当前主流的后端语言,谁能夺得桂冠,果然是后生可畏!

主流后端语言 如今编程语言遍地开花,烟花迷乱,小编整理了最流行的几种编程语言如下: 这几种语言都是经久不衰,占领着后端编程界的半壁江山。TIOBE上的语言排名: C、Java、python,C, C#鏖战榜首…

【项目】前端如何与后端交互

在项目开发中使用了前后端分离,当分离后前后端如何进行交互呢?结合项目做一些简单的实践,经过晓风姐的点拨有了本篇分享。 结构 简单的来说是我发现现在写不下去了,我先补好 REST的博客再来更新~~~ RESTful架构 REST全称是Repre…

【学习笔记】Web前端到后端数据的交互

【学习笔记】Web前端到后端数据的交互 📒博客首页:*铁甲小宝同学* 📒 🌞文章目的:HTML—入门篇🌞 🙏博主也在学习阶段,如若发现问题,请告知,非常感谢&#x1…

前端和后端的JSON数据交互

因为之前一直在学后端方面的内容,对于前端这块的知识一直半懂半不懂。昨天学了ajax,一些知识点记录下。 前端知识 最重要的两种请求方式:GET、POST。 GET : 有请求参数,无请求体 POST : 有请求体,但也可以有请求参数…

JAVA前端与后端交互面试题

1.前端与后端交互面试题 1.1. 描述Servlet调用过程? 答案: (1)在浏览器输入地址,浏览器先去查找hosts文件,将主机名翻译为ip地址,如果找不到就再去查询dns服务器将主机名翻译成ip地址。 &…

java后端与前端的交互_前端和后端数据交互的基本知识和常见方式

一。首先了解前端,后端,数据三者的关系。 1.前端常常是是html,css,js三者的构成的页面的总称。运行在客户端。以浏览器为例。 2.后端常常是后端语言。比如php,java等写的一些脚本。来操作服务器。 3.数据,数…

前后端数据交互

简单实现前后端数据交互 功能要求主要涉及框架后端新建项目新建数据库编写实体类编写映射类编写控制器 前端headbody1.用户接口 UI2. JS 交互 运行测试总结 功能要求 简单实现 员工信息 从 后端 服务器 数据库 加载 并 动态渲染 在Web端,以及Web端新增 员工信息 发…

前端和后端如何进行交互?

背景 目前互联网应用呈现方式基本都是app客户端和web端,其次是移动网站和小程序。以app客户端或web端为例子(统一认为前端),前端负责用户的交互与数据收集与展示,数据经后台处理存储在数据库。设计师在参与项目时&…

新手入门前端与后端交互案例(HTML+Java+Axios)

需求分析 前端网页向后端发起相应请求,后端响应前端的请求,做出相关操作.如前端发出获取数据库用户表的请求,后端则将用户表的内容返回给前端.简而言之,前端发出对数据库访问的请求,后端需响应结果. 项目结构 后端项目结构 实现步骤 导入相关依赖包 <parent><grou…

web开发中前端页面是如何跟后端服务器数据交互的

后端服务器一般是指servlet容器&#xff0c;用于执行java源程序 常见的网页有html&#xff0c;htm,shtml&#xff0c;asp&#xff0c;aspx&#xff0c;php&#xff0c;jsp等格式 前两个常用于静态网页&#xff0c;后面几个常用于动态网页。 这里前端网页以比较常见的 xx.html…

前端与后端接口的交互案例

一、案例描述 1&#xff0c;前端页面提供用户名&#xff0c;密码输入框。 2&#xff0c;通过Ajax发送请求到后端Serlvet。 3&#xff0c;后端Serlvet处理请求&#xff0c;根据输入的用户名和密码返回给前端不同信息 前端访问后端接口通过后端提供的的URL 二、主要代码 1、前…

前端和后端 数据交互的基本知识

一、首先了解前端、后端、数据三者的关系 1) 前端通常是html&#xff0c;css&#xff0c;js三者构成的页面的总称。运行在客户端。以浏览器为例。 2) 后端是指后端程序。比如java&#xff0c;php等编写的一些服务。用来操作服务器。 3) 数据&#xff0c;数据都存放在服务器上…

前端和后端交互的方式

1.前端开发与后台交互的方式 &#xff08;1&#xff09;form提交 同步请求 &#xff08;2&#xff09;Ajax提交 异步请求 发送json对象 一 、Ajax&#xff1a;异步的javascript和XML 主要优点&#xff1a; 1.异步请求&#xff0c;不妨碍用户浏览页面或者其他操作。 2.局部刷…

树与树的存储结构+二叉树的遍历

树的存储结构&#xff1a; 三序说的是根节点的访问顺序 深度优先遍历(先序、 中序和后序) 沿着上图路径行走: 第一次来到某个结点时访问&#xff0c;所得序列为先序遍历序列; 第二次来到某个结点时访问&#xff0c;所得序列为中序遍历序列; 第三次来到某个结点时访问&#xff0…

2023年最新前端面试题

HTML 一、HTML5标记 <header></header> 头标记<nav></nav> 导航标记&#xff0c;表示页面中导航链接部分<!--main标记在一个网页中只能有一个&#xff0c;主要内容区域要区别--> <main></main> 主要内容标记<secti…

每日一题之二叉树

描述 输入一个整数数组&#xff0c;判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回 true ,否则返回 false 。假设输入的数组的任意两个数字都互不相同。 数据范围&#xff1a; 节点数量 0 \le n \le 10000≤n≤1000 &#xff0c;节点上的值满足 1 \le val \le 1…