小网站架构优化-提升抗并发能力:子应用程序分离方案

简介:
前言:
标题为啥要加个“小”,只因为上一篇文章“ 小网站架构优化:从100并发抗到4000并发”,带了个“小”字,所以这篇也顺流加个“小”了。

大意“小”是特指秋色园(流量小,服务器配置低)的意思,毕竟文章都是从实战后才写出来的。

关于现实网站的抗并发实情:

由于每个网站的性能点,最后都离不开抗并发这一话题。


也许,网站本身并没有那么多并发访问,但为何还要抗并发?

因为现实不是每个人都是善良的,商业竞争也很激烈,竞争对手间时不时的互相攻击网站也很普遍。

昨天才一网友向我说起,他朋友的网站,逢周一就会被竞争对手攻击,导致业务无法开展,换服务器也无济于事。

所以,提升网站的抗并发能力,除了抵抗用户的高峰期访问,也是是自我网站保护的一种手段。

什么样的站点能抗的起高并发?

若除却外部带宽等因素造成的外部影响,则内部答案只有一个:静态网站。


静态网站何以能抗高并发?

因为静态页面据说在操作系统内核级就能缓存数据并做出响应,所以抗并发能力理论上是最强的。


所以,你看看电商网站,除却技术背后的实现,你能看到的页面,多数是静态页面。


所以技术的背后是Java还是.net还是php,看似就不是那么的特别了。


当然了,也不是所有站点都适合静态化,所以技术架构优化显的特别的重要。

根据某网友提供的数据,仅供参考:

CSDN首页的文章:2000并发以下挂了,这块是java提供服务。

而CSDN的博客:能顶好万级的并发,这块是ASP.NET提供服务。


而CSDN的论坛:能顶好几十级以上的并发,这就是静态化的结果。


所以那篇很火的“去.NET化的文章”,可能是作者个人意淫, 当然了,这些数据可能也是意淫的结果,不一定所属事实。

所以,要提高抗并发数,高配的服务器不是全部,还需要合理的代码架构优化:


本次实践分离方案的背景:
在秋色园系统的优化文章中,都似多似少的提到了搜索这块引发的CPU命案。

某天,我想起了“ IIs 网站应用程序与虚拟目录的区别及高级应用说明”这篇文章的内容。


有了想把搜索独立出去的想法,这样即使搜索挂了,也不影响网站访问,更不用担心搜索引发的CPU命案。

构思中:

于是三七二十七,就开始想了:

目前秋色园的URL搜索这一块为:www.cyqdata.com/search/类型/搜索内容。


而文章的关键字(一般博客为设置为tag,引到文章,而我是引到搜索区)。

想了两种方案


A:是弄个二级域名,建个网站来运行,这个需要动点代码:
这种方案,要修改URL变为so.cyqdata.com/类型/搜索内容,看似改动不少,需要调整URL机制和301处理,预计整体在30-60分钟内应该可以解决完。

这种方案的好处是,后续扩展可以部署到其它服务器。

B:直接使用子应用程序,可以不改动代码,直接把搜索这块分离独立子应用程序运行:

这种方案,代码不用改,因为根据search建立子应用程序即可。

这种方案,一般就局域服务器只能在局域网内了。

方案选择:

综合秋色园目前的情况,也就一台VPS。

两个方案的区别就在于动代码和不动代码了。
后来我选择了不动代码,因为实际的效果几乎是一样的,所以就不动代码了。

方案二实施过程:


1:在IIS 6 里新建一虚拟目录search,创建右键属性,应用程序名那里对应的按钮点击“创建应用程序”然后虚拟目录就转化为应用程序了。

2:项目路径还是原来的项目路径,然后设置新的应用程序池,最终如下图:

总结:

一般一个项目大了后,或者逻辑变的复杂后,往往的解决方案就是分解成子项目。

而分解的方案:一般是根据域名,或首页节点目录。


后来思绪了一下,比如目前博客的URL是:xxx.com/cyq1162/admin/...
如果一开始考虑把它设计成:xxx.com/admin/cyq1162/...
这样是不是也就可以轻松的把博客的前后台分离开来。


当然了,分成多个进程,是需要思考,是否有涉及直接的通讯。

文本就介绍到这里了,仅提供一种参考方案。




     本文转自cyq1162 51CTO博客,原文链接:http://blog.51cto.com/cyq1162/1211354,如需转载请自行联系原作者




相关文章
|
23天前
|
消息中间件 存储 缓存
十万订单每秒热点数据架构优化实践深度解析
【11月更文挑战第20天】随着互联网技术的飞速发展,电子商务平台在高峰时段需要处理海量订单,这对系统的性能、稳定性和扩展性提出了极高的要求。尤其是在“双十一”、“618”等大型促销活动中,每秒需要处理数万甚至数十万笔订单,这对系统的热点数据处理能力构成了严峻挑战。本文将深入探讨如何优化架构以应对每秒十万订单级别的热点数据处理,从历史背景、功能点、业务场景、底层原理以及使用Java模拟示例等多个维度进行剖析。
49 8
|
4天前
|
存储 机器学习/深度学习 人工智能
【AI系统】计算图优化架构
本文介绍了推理引擎转换中的图优化模块,涵盖算子融合、布局转换、算子替换及内存优化等技术,旨在提升模型推理效率。计算图优化技术通过减少计算冗余、提高计算效率和减少内存占用,显著改善模型在资源受限设备上的运行表现。文中详细探讨了离线优化模块面临的挑战及解决方案,包括结构冗余、精度冗余、算法冗余和读写冗余的处理方法。此外,文章还介绍了ONNX Runtime的图优化机制及其在实际应用中的实现,展示了如何通过图优化提高模型推理性能的具体示例。
26 4
【AI系统】计算图优化架构
|
29天前
|
监控
SMoA: 基于稀疏混合架构的大语言模型协同优化框架
通过引入稀疏化和角色多样性,SMoA为大语言模型多代理系统的发展开辟了新的方向。
36 6
SMoA: 基于稀疏混合架构的大语言模型协同优化框架
|
12天前
|
监控 Serverless 云计算
探索Serverless架构:开发实践与优化策略
本文深入探讨了Serverless架构的核心概念、开发实践及优化策略。Serverless让开发者无需管理服务器即可运行代码,具有成本效益、高可扩展性和提升开发效率等优势。文章还详细介绍了函数设计、安全性、监控及性能和成本优化的最佳实践。
|
8天前
|
消息中间件 架构师 数据库
本地消息表事务:10Wqps 高并发分布式事务的 终极方案,大厂架构师的 必备方案
45岁资深架构师尼恩分享了一篇关于分布式事务的文章,详细解析了如何在10Wqps高并发场景下实现分布式事务。文章从传统单体架构到微服务架构下分布式事务的需求背景出发,介绍了Seata这一开源分布式事务解决方案及其AT和TCC两种模式。随后,文章深入探讨了经典ebay本地消息表方案,以及如何使用RocketMQ消息队列替代数据库表来提高性能和可靠性。尼恩还分享了如何结合延迟消息进行事务数据的定时对账,确保最终一致性。最后,尼恩强调了高端面试中需要准备“高大上”的答案,并提供了多个技术领域的深度学习资料,帮助读者提升技术水平,顺利通过面试。
本地消息表事务:10Wqps 高并发分布式事务的 终极方案,大厂架构师的 必备方案
|
15天前
|
弹性计算 运维 开发者
后端架构优化:微服务与容器化的协同进化
在现代软件开发中,后端架构的优化是提高系统性能和可维护性的关键。本文探讨了微服务架构与容器化技术如何相辅相成,共同推动后端系统的高效运行。通过分析两者的优势和挑战,我们提出了一系列最佳实践策略,旨在帮助开发者构建更加灵活、可扩展的后端服务。
|
15天前
|
消息中间件 运维 Cloud Native
云原生架构下的微服务优化策略####
本文深入探讨了云原生环境下微服务架构的优化路径,针对服务拆分、通信效率、资源管理及自动化运维等核心环节提出了具体的优化策略。通过案例分析与最佳实践分享,旨在为开发者提供一套系统性的解决方案,以应对日益复杂的业务需求和快速变化的技术挑战,助力企业在云端实现更高效、更稳定的服务部署与运营。 ####
|
20天前
|
存储 负载均衡 监控
如何利用Go语言的高效性、并发支持、简洁性和跨平台性等优势,通过合理设计架构、实现负载均衡、构建容错机制、建立监控体系、优化数据存储及实施服务治理等步骤,打造稳定可靠的服务架构。
在数字化时代,构建高可靠性服务架构至关重要。本文探讨了如何利用Go语言的高效性、并发支持、简洁性和跨平台性等优势,通过合理设计架构、实现负载均衡、构建容错机制、建立监控体系、优化数据存储及实施服务治理等步骤,打造稳定可靠的服务架构。
29 1
|
27天前
|
存储 NoSQL 分布式数据库
微服务架构下的数据库设计与优化策略####
本文深入探讨了在微服务架构下,如何进行高效的数据库设计与优化,以确保系统的可扩展性、低延迟与高并发处理能力。不同于传统单一数据库模式,微服务架构要求更细粒度的服务划分,这对数据库设计提出了新的挑战。本文将从数据库分片、复制、事务管理及性能调优等方面阐述最佳实践,旨在为开发者提供一套系统性的解决方案框架。 ####
|
22天前
|
Kubernetes API Docker
构建高效后端服务:微服务架构的深度实践与优化####
本文深入探讨了微服务架构在现代后端开发中的应用,通过剖析其核心概念、设计原则及实施策略,结合具体案例分析,展示了如何有效提升系统的可扩展性、可靠性和维护性。文章还详细阐述了微服务拆分的方法论、服务间通信的最佳实践、以及容器化与编排工具(如Docker和Kubernetes)的应用技巧,为读者提供了一份全面的微服务架构落地指南。 ####