enginx:基于openresty,一个前后端统一,生态共享的webstack实现

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 本文关键字:openresty,enginx

本文关键字:openresty,enginx

webstack的前世今生就是一个重复造轮的过程,它的目标是将本地程序栈弄成分布式b/s web,其实这在语言端可以做(比如语言模块的http unit,然后是一层层我们从桌面时代开发最基本的socketapp开始,http封装之后也许是一个aysn网络io库,最终到达语言库级的webframework直到专门的独立程序支持,也许这个时候人们发现那个网络io库可以独立出来作为一个server,再比如第三方容器在这种需求下很容易出现,流控安全等需要也会泛滥),于是终于发展到用独立的服务器OS组件来实现这些强化,形成专门的产品来做,体现在开发上首先是webserver+CGI处理。web作为b/s在架构上假设有服务端程序存在,而cgi就是开发web程序的语言同webserver交互的扩展,动态语言将运行结果转成web page app的手段。像mod_swgi,mod_php就直接将phpcgi做到了语言。如webstack.语言则屈居之下。—— 这完全是语言,独立件,一方做大了包裹另一方的关系但二者始终是一体的。

以前webstack都是语言加各个产品小件的堆叠,像wamp,lemp,wapp,lnmp,mean…等,除去语言和OS服务这些大件,显然存在前后端,首先是page server,然后是存储后端。mysql,rawfilesystem,document stor(文档xml强调的是文档语义,能存文件和文档是其第二层含义)等。还有各种为了其它功能新加进来的增强件比如种新的本地/分布数据库memcached,本地件imagicx。。

PS:其实这些都是模拟桌面时代的appstack,人类其实在各层次复用同样的方法,解决方案和产品,形成各种类似appstack,webstack的其中明显二大件之前端部分模拟的是desktop app时代的page,后端模拟的是filesystem等等,毕竟是分布式中已经定义好b/s规范,连协议http都规范好了,有这二个产品,就足于构成一个webapp stack必须的界面和存储了,只要有app domain logic,就可以产生一个app了 —— 同道理的是mobile app那些,这里省略一W字……
以上备注栏里你看到了应用程序形成和选型历史的大架构,好了打住,继续:

存在几种流行的webserver(有的有容器比如tomcat支持,有的对语言支持好比如apache rewriter强大,etc..,有的功能单一,比如nginx静态页面友好在流量控制方面功能强大),人们有时还混合使用它们,这使得webstack前后端分区呈现更复杂的前前后,前中后,前中后后等结构。

这里要来说的是大头的nginx+apache

我们不需要apache

其实作为一个webserver,它的本质是流量引擎+webserver,当它与前端语言cgi沟通时,它就是webserver,当它负责与后端+前端一起上时,它就是流控引擎。很显然地,nginx最初的意义是分布式流量的“enginx”,在这种意义下,nginx能管好流控这是它最大的责任和优势,而apache显然做得有点过了:

apache并不仅是webserve其实它还提负容器的责任,这种在用户态重造一遍的事应该由语言层(比如msyscuione中的包管理或engitor as paas中的语言层来完成)。它跟nginx一样存在流控与各种语言对接的后端,然而它走的路子是,由语言来完成对数据库后端的对接,apache负责与语言沟通,这其实是webstack通用的设计和应用路径,只是这种情形下,webstack变得有点碎片。各种语言和存储组合起来就是一个webstack,,这样看似自由,实际只能二块二块地用,十分固定,于是你看到的不是wamp就是lemp,而meam这样的东西是不好用的。

总结:,我们没有一个一体的webstack生态圈产品,各个产品都是语言绑定的。具体前后端紧联系的。甚至系统绑定的。原因是,webstack中webserver的功能定义不清。

nginx=engin x: 强大,专一的流控单一,也是前后端开弓的中间单元

而对nginx的合理应用可以完成做到用nginx+其它产品打造一个干净的前后端:

nginx它没有容器不像apache,因为这是语言层要干的事。

在这点上,apache于webstack必须有的地方没有,nginx却全有。我们也不需要nginx+apache的架构。我们完成可以去掉apache,语言直接作为容器,nginx直接作为语言容器的前端,以direct servering langsys的路子进行。

而且nginx的流控实在是太强大了。它可以做到一体化流控(负载,访问点控制,QOS,反代)与安全服务器。

而且,lamp,wamp一条龙的webstack设计者们肯定没想到,nginx它不但可以server前端,它实际上也可以server后端,比如nginx直接与mysql构成不需要通过php的phpmyadmin版本。

这有什么意义呢?

它使WEB件,从语言件彻底分开,实现了诸如,提倡nginx前端直接与后端mysql等通讯,仅要求语言提供php-cgi之类的东西而不要求它们提供php-mysqli之类的东西,构架上清希化出了一个“整合的独立的,webstack”,而不再是分散的wamp,wemp,mean等等。从此不同的语言导致的开发,发布的,架构上的区别都不存在。都是一样的从nginx为入口的体系,它掩盖后端那些子件的复杂性和开发维护必要。更重要的意义:打造了一个干净的多语言webstack

大一统的webstack

openresty的架构有趣就在于此,它是个足够创意新奇,大一统的产品,它对前后端都进行绑定。

nginx之于db,storbackend(openresty一志整合),就像jupyter整合语言件backends。我们从此仅需要一套 “xny” webstack — x平台的y语言,及中间的nginx,就可以做到统一开发和发布,最最深远的意义还在于:有望借助enginx,所有web程序共享同样的产品生态,统一发布,无沟运维。

下载(本地下载):

以下提供下载的enginx,在openresty基础上做了适应msyscuione->各个langsys的适应。与engitor(paas)天然互补结合:一个提供语言与容器,一个提供安全和最终的paas服务。。


(此处不设回复,扫码到微信参与留言,或直接点击到原文)

qrcode.png

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
26天前
|
监控 持续交付 数据库
构建高效的后端服务:微服务架构的深度解析
在现代软件开发中,微服务架构已成为提升系统可扩展性、灵活性和维护性的关键。本文深入探讨了微服务架构的核心概念、设计原则和最佳实践,通过案例分析展示了如何在实际项目中有效地实施微服务策略,以及面临的挑战和解决方案。文章旨在为开发者提供一套完整的指导框架,帮助他们构建出更加高效、稳定的后端服务。
|
2月前
|
安全 Java 关系型数据库
探索后端技术:构建高效、安全的应用服务
在当今数字化浪潮中,后端技术作为软件架构的核心支柱,承载着处理数据逻辑、保障应用性能与安全等关键任务。本文旨在深入浅出地探讨后端开发的重要概念、主流技术栈以及未来发展趋势,为开发者提供一份指南,以助力构建既高效又安全的应用程序。
|
5月前
|
缓存 监控 中间件
中间件配置和管理问题
【7月更文挑战第14天】
78 1
|
7月前
|
缓存 负载均衡 监控
构建高性能的后端服务架构
在当今快速发展的技术环境下,构建高性能的后端服务架构变得至关重要。本文将探讨如何通过优化数据库设计、采用合适的缓存策略、以及合理使用负载均衡等方法来构建高性能的后端服务架构,以满足用户对于性能和稳定性的需求。
58 0
|
弹性计算 专有云 应用服务中间件
nginx在云平台服务几个典型代理场景中的应用案例
在云平台服务中有多种场景需要使用到反向代理,常见的应用场景包括:内网专有云平台访问公网资源、公有云平台访问客户内网IDC机房资源、云产品通过代理访问多个不同的资源等等。笔者总结几种场景配置nginx的7层反向代理、4层反向代理,巧妙实现应用需求。
nginx在云平台服务几个典型代理场景中的应用案例
|
小程序 前端开发 Java
【平台开发】技术整合思考(四)前后端不分离
【平台开发】技术整合思考(四)前后端不分离
239 0
|
前端开发 JavaScript Ubuntu
「技术架构」5分钟把前端应用程序部署到NGINX
「技术架构」5分钟把前端应用程序部署到NGINX
|
网络协议 安全 应用服务中间件
高性能网关基石——OpenResty
OpenResty 一个基于 Nginx 的高性能 Web 平台,能够方便地搭建处理超高并发的动态 Web 应用、 Web 服务和动态网关。例如有名的 Kong 网关和国产新秀 ApiSIX 网关都是基于 OpenResty 来进行打造的。 OpenResty 通过实现 ngx_lua 和 stream_lua 等 Nginx 模块,把 Lua/LuaJIT 完美地整合进了 Nginx,从而让我们能够在 Nginx 内部里嵌入 Lua 脚本,用 Lua 语言来实现复杂的 HTTP/TCP/UDP 业务逻辑,同时依然保持着高度的并发服务能力。
569 0
|
前端开发 数据库 数据安全/隐私保护
【平台开发】— 5.后端:代码分层
【平台开发】— 5.后端:代码分层
【平台开发】— 5.后端:代码分层
|
Java 微服务 Spring
微服务项目:尚融宝(11)(后端接口:统一日志处理)
默认情况下,spring boot从控制台打印出来的日志级别只有INFO及以上级别,可以配置日志级别
微服务项目:尚融宝(11)(后端接口:统一日志处理)
下一篇
DataWorks