教你设计和重构阿里巴巴日均亿级访问架构(纯硬核)

2023-10-28 22:50

本文主要是介绍教你设计和重构阿里巴巴日均亿级访问架构(纯硬核),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

温馨提示:预估阅读时间:3.1分钟
亲爱的小伙伴:

大家好,我是Gavin(是号主的好朋友),一名在技术领域从业15年的IT老兵,在BAT等一线大厂工作近8年,从CTO到自己创业。

自己带领研发的系统也一样从几千上万的用户量到上亿的大流量平台的爆发式增长,一路走来面对用户量的暴增后系统技术系统的升级和团队开发人员的成长和发展有了越来越多的感悟。

640?wx_fmt=png 回望公司业务刚刚开始起步,刚开始C端系统、管理系统、数据库都放在一台服务器上,没有进行运维监控和版本发布管理,对于系统的稳定和健康运行既无法监控也无法获取系统的负载状况,对于没有什么用户流量来说是不会出现大的问题, 随着用户量增加,后台业务报表复杂度提升,系统就频繁出现502、503的错误。

640?wx_fmt=png
640?wx_fmt=jpeg

刚开始大家都认为系统代码没有问题,但也有用户反馈经常点出502,503错误来,而大家对现状已经麻木了。在这样一个状态下我亲自上阵,深入系统架构,快速分析定位问题,首先发现所有应用都在一个服务器上部署,业务间耦合度非常高,这就是个典型的单一应用,系统非常脆弱,需要尽快解耦并进行服务化改造,我做了以下八项措施:

 

1、将应用服务器和数据库服务分离并单独部署;

2、对数据库进行主从服务设置,将应用进行读写业务分离;

3、将应用服务进行无状态化改造并进行分布式负载均衡,支持柔性扩展;

4、对应用服务进行改造,基础业务下沉,做服务隔离;

5、进行数据缓存架构设计,并将缓存服务化;

6、所用业务以及服务系统进行集群化设置并保证服务一致性;

7、进行关键时刻流量控制、服务降级设计,确保主服务稳定;

8、对各项服务进行线上监控和运行时检测确保服务稳定。

640?wx_fmt=png
我当时梳理的我公司跨境电商系统的应用构架,大家可以参考

我通过上面的优化和改造后服务终于稳定下来并能支撑 单日过亿的用户访问,服务上百个国家(我们目前的这套系统已经服务了来自 全球140多个国家的用户,包含美国、中国、南非、加拿大、印度、菲律宾、墨西哥、澳大利亚、德国、西班牙、英国、秘鲁、以色列、法国、韩国、智利等国家。)

优化完成后,最终结果完全超出预期 !
福利: 下图是我整理的日均亿级项目实施敏捷开发流程规范 (首次分享)
640?wx_fmt=png

随着平台用户量过亿后,项目开发人员也越来越多,各部门之间的业务交叉也变多,都有各自的 代码标准,导致每次团队总结回顾会议进行代码review的时候都在讨论到底要按谁的标准来,都是各执一词没有统一的标准(互相不服,拍桌子),团队之间增加了大量的 沟通成本,导致效率非常低下。

最终我们确定下来按照《阿里巴巴码出高效:Java开发手册》来进行代码规约, 因此很荣幸在2017年跟阿里巴巴码出高效Java开发手册作者孤尽老师认识并结缘至今;

640?wx_fmt=jpeg
今年9月阿里杭州云栖大会《大咖有约》现场
与孤尽老师再次深入交流探讨《软件工程危机与重构之道》
会后又跟孤尽老师也进行了深入的沟通:对于初创企业、中小型企业或者像阿里巴巴这样万亿级以上流量峰值的系统架构设计一定要谋定而后动,既要兼容过去的问题,解决当下的问题,还有适度解决未来的问题,而不是大而全大而广的进行系统架构。对于最新的系统的架构设计和重构方法我们达成高度共识。

640?wx_fmt=jpeg
孤尽老师亲自为我签名
《阿里巴巴码出高效:Java开发手册》20本

所以,此次我准备将我这15年来的一线开发经验、亿级用户平台架构方法、团队项目管理经验包括像阿里巴巴这样大流量平台架构设计用到的技术栈等来打造一个3天强化训练的2019阿里巴巴《日均亿级访问系统架构设计训练营》此课程全程免费

1、参加完3天免费训练营课程;
2、通过阿里巴巴日均亿级访问系统架构测试。

即可免费获得:我和阿里孤尽老师亲自签名的《阿里巴巴码出高效:Java开发手册》 书籍 一本

扫描以下二维码添加助理老师微信即可免费申请
先到先得 
640?wx_fmt=jpeg

640?wx_fmt=jpeg 640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg640?wx_fmt=jpeg

640?wx_fmt=jpeg 640?wx_fmt=jpeg 640?wx_fmt=jpeg
640?wx_fmt=jpeg

这篇关于教你设计和重构阿里巴巴日均亿级访问架构(纯硬核)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Spring Boot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)

《SpringBoot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)》本文将以一个实际案例(用户管理系统)为例,详细解析SpringBoot中Co... 目录引言:为什么学习Spring Boot分层架构?第一部分:Spring Boot的整体架构1.1

JAVA实现亿级千万级数据顺序导出的示例代码

《JAVA实现亿级千万级数据顺序导出的示例代码》本文主要介绍了JAVA实现亿级千万级数据顺序导出的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 前提:主要考虑控制内存占用空间,避免出现同时导出,导致主程序OOM问题。实现思路:A.启用线程池

MySQL按时间维度对亿级数据表进行平滑分表

《MySQL按时间维度对亿级数据表进行平滑分表》本文将以一个真实的4亿数据表分表案例为基础,详细介绍如何在不影响线上业务的情况下,完成按时间维度分表的完整过程,感兴趣的小伙伴可以了解一下... 目录引言一、为什么我们需要分表1.1 单表数据量过大的问题1.2 分表方案选型二、分表前的准备工作2.1 数据评估

通过配置nginx访问服务器静态资源的过程

《通过配置nginx访问服务器静态资源的过程》文章介绍了图片存储路径设置、Nginx服务器配置及通过http://192.168.206.170:8007/a.png访问图片的方法,涵盖图片管理与服务... 目录1.图片存储路径2.nginx配置3.访问图片方式总结1.图片存储路径2.nginx配置

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

WinForm跨线程访问UI及UI卡死的解决方案

《WinForm跨线程访问UI及UI卡死的解决方案》在WinForm开发过程中,跨线程访问UI控件和界面卡死是常见的技术难题,由于Windows窗体应用程序的UI控件默认只能在主线程(UI线程)上操作... 目录前言正文案例1:直接线程操作(无UI访问)案例2:BeginInvoke访问UI(错误用法)案例

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

mysql中的服务器架构详解

《mysql中的服务器架构详解》:本文主要介绍mysql中的服务器架构,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、mysql服务器架构解释3、总结1、背景简单理解一下mysqphpl的服务器架构。2、mysjsql服务器架构解释mysql的架

MySQL中的InnoDB单表访问过程

《MySQL中的InnoDB单表访问过程》:本文主要介绍MySQL中的InnoDB单表访问过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、访问类型【1】const【2】ref【3】ref_or_null【4】range【5】index【6】

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)