中小企业阿里云服务架构漫谈(三)-发展期

2024-04-17 23:08

本文主要是介绍中小企业阿里云服务架构漫谈(三)-发展期,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

项目发展期(100<并发<1000)

前文链接:

中小企业阿里云服务架构漫谈(一)

中小企业阿里云服务架构漫谈(二)

 

当业务正常上线后,随着线上业务的成长,初期的架构到达一定的瓶颈,应用产生越来越多的访问量、并发慢慢增加,服务器的CPU、磁盘存储空间压力都会随之增加,这个时候我们就会考虑做一些服务器扩容的工作。

对于网站的入口压力最大的问题就是并发量的负载均衡,通常的QPS的计算方式为二八定律,这个定律适用于一般的所有的业务场景,但实际业务中会有一定出入。例如在股票行业中,每天9.30左右前后15分钟是访问最高点,电商类行业在爆品活动抢购,或者广告高投入时为最高点,而12306在春运时放票特定时间时也是最高点。

当然,如果在业务能力达到春运火车票的体量时,本文也就不再适用了。

先上系统结构图,再进行说明吧!如下图所示:

 

架构图
标题

在负载部分,前文简单提到过ssl证书绑定阿里云SLB服务时会产生访问低效问题,本文建议使用Nginx进行负载和反向代理的处理,对于负载服务器的要求是满足并发要求,CPU和内存较为重要。初期可以将负载均衡部署在主应用服务器,减少服务器成本。https是现有网站的标准配置,在前期可以使用阿里云的免费证书,无费用增加项,如何配置证书现在网上资料较多,本文中不再叙述。

结构图中涉及到的一些组件我将一一进行说明:

日志服务,阿里云的日志服务是相当强大的,同步的方式也有很多,一般的日志存放会习惯性放于日志文件或者缓存当中。曾经在12年时做过一个项目,当初为了做一个广告数据分析系统,采用lua进行日志收集,并存放到redis当中,再按分钟级进行数据读取写入到db中,这样对硬件资源配置非常之高,而且效率其实并不高。在Elasticsearch应用更广之后,大家开始习惯将日志推送到其中,一是便于保存,二是便于查询。并可以搭配Kibana进行日志的查询搜索和二次分析,有兴趣的可进行研究一下。但是在云服务中更推荐使用阿里云的日志服务,成熟的控件,强大的分析机制,数据保存机制,其实都会比elk更加强大和稳定。并且在大数据分析上,日志存放到OSS中后,更是可以接入MaxComputer进行二次分析。

OSS作为日志存放,比传统的云磁盘储存在费用和访问速度上更快,相比于一般的图片服务器,我较为推荐。在后期配合CDN加速上也是神器之一。

MaxCompute是一项大数据计算服务,它能提供快速、完全托管的PB级数据仓库解决方案,使您可以经济并高效的分析处理海量数据。这块内容相当多,如果有兴趣可以去阿里云产品官网查询,后面如果有时间我可以考虑出一套此类的学习教程。

在业务应用最大的压力来源于数据库的读取,这也是服务压力的主因之一,拿PHP开发语言来说,查询mysql的瓶颈尤为严重,并发数一旦过高数据量过大时,查询效率就不能再得到保证。按二八原则,80%应用的业务的访问集中在20%的数据上。比如淘宝买家浏览的商品集中在少部分成交多、评价良好的商品上;百度搜索关键词集中在少部分热门词汇上。既然大部分的业务访问集中在一小部分的数据上,那么如果把这小部分数据缓存在内存中,是不是就可以减少数据库的访问压力了,提升整个网站的数据访问速度,改善数据库的读写性能了呢?答案肯定是的!

网站使用缓存可以分为两种:缓存在应用服务器上的本地缓存和缓存在分布式缓存服务器上的远程缓存。本地缓存的访问速度更快一些但是受应用服务器的内存限制,其缓存的数据量有限,而且会出现和应用程序挣用内存的现象,影响应用程序运行速度,甚至造成服务器死机。远程分布式缓存可以使用集群的方式,

阿里云Redis中其实已经包含了各种节点,主从集群等等。这一步的升级只用将原来云服务器中的redis进行迁移切换到阿里云Redis中,再根据实际储存大小进行选取配置就可以了,所以阿里云Redis适用于远程集群缓存。

如果涉及本地化数据缓存其实也可以在应用服务器搭建应用服务器中搭建本地化缓存,加快缓存读取速度,减小集群缓存压力。

Ps:阿里云多节点会在使用PHP-laravel-Queue中出现问题,请注意避免,原因应该是数据同步的问题。

常见的NoSql缓存有memcache,redis等。PHP的缓存也有Cpcode等等。其它缓存可以根据实际需求开启。

数据库这一部分只用根据应用场景升级配置就行了,可选多节点、集群、储存服务器CPU和硬件,这里就不再啰嗦。

也许有些人会问,为什么在初发展阶段将业务结构设计得如此复杂?

项目在初始阶段是最干净的阶段,很多公司在业务后期进行架构规划,包含数据维护,数据迁移,服务运维,后期如果进行大调整的话所要付出的代价将会非常之大。图中所演示的内容是只提供了一个思路,在实际应用中,只用做到应用与业务分离,组件与组件分离,功能上解耦就能大大降低后期重构或者扩展的成本。

这篇关于中小企业阿里云服务架构漫谈(三)-发展期的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/913113

相关文章

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

Spring LDAP目录服务的使用示例

《SpringLDAP目录服务的使用示例》本文主要介绍了SpringLDAP目录服务的使用示例... 目录引言一、Spring LDAP基础二、LdapTemplate详解三、LDAP对象映射四、基本LDAP操作4.1 查询操作4.2 添加操作4.3 修改操作4.4 删除操作五、认证与授权六、高级特性与最佳

Java异常架构Exception(异常)详解

《Java异常架构Exception(异常)详解》:本文主要介绍Java异常架构Exception(异常),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. Exception 类的概述Exception的分类2. 受检异常(Checked Exception)

Linux上设置Ollama服务配置(常用环境变量)

《Linux上设置Ollama服务配置(常用环境变量)》本文主要介绍了Linux上设置Ollama服务配置(常用环境变量),Ollama提供了多种环境变量供配置,如调试模式、模型目录等,下面就来介绍一... 目录在 linux 上设置环境变量配置 OllamPOgxSRJfa手动安装安装特定版本查看日志在

SpringCloud之LoadBalancer负载均衡服务调用过程

《SpringCloud之LoadBalancer负载均衡服务调用过程》:本文主要介绍SpringCloud之LoadBalancer负载均衡服务调用过程,具有很好的参考价值,希望对大家有所帮助,... 目录前言一、LoadBalancer是什么?二、使用步骤1、启动consul2、客户端加入依赖3、以服务

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题

springboot的调度服务与异步服务使用详解

《springboot的调度服务与异步服务使用详解》本文主要介绍了Java的ScheduledExecutorService接口和SpringBoot中如何使用调度线程池,包括核心参数、创建方式、自定... 目录1.调度服务1.1.JDK之ScheduledExecutorService1.2.spring

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

TP-Link PDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务

《TP-LinkPDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务》近期,路由器制造巨头普联(TP-Link)在用户群体中引发了一系列重要变动,上个月,公司发出了一则通知,明确要求所... 路由器厂商普联(TP-Link)上个月发布公告要求所有用户必须完成实名认证后才能继续使用普联提供的 D

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查