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

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

相关文章

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术

Ollama整合open-webui的步骤及访问

《Ollama整合open-webui的步骤及访问》:本文主要介绍如何通过源码方式安装OpenWebUI,并详细说明了安装步骤、环境要求以及第一次使用时的账号注册和模型选择过程,需要的朋友可以参考... 目录安装环境要求步骤访问选择PjrIUE模型开始对话总结 安装官方安装地址:https://docs.

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

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

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构

解读静态资源访问static-locations和static-path-pattern

《解读静态资源访问static-locations和static-path-pattern》本文主要介绍了SpringBoot中静态资源的配置和访问方式,包括静态资源的默认前缀、默认地址、目录结构、访... 目录静态资源访问static-locations和static-path-pattern静态资源配置

Java访问修饰符public、private、protected及默认访问权限详解

《Java访问修饰符public、private、protected及默认访问权限详解》:本文主要介绍Java访问修饰符public、private、protected及默认访问权限的相关资料,每... 目录前言1. public 访问修饰符特点:示例:适用场景:2. private 访问修饰符特点:示例:

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

Python 标准库time时间的访问和转换问题小结

《Python标准库time时间的访问和转换问题小结》time模块为Python提供了处理时间和日期的多种功能,适用于多种与时间相关的场景,包括获取当前时间、格式化时间、暂停程序执行、计算程序运行时... 目录模块介绍使用场景主要类主要函数 - time()- sleep()- localtime()- g

使用Python实现批量访问URL并解析XML响应功能

《使用Python实现批量访问URL并解析XML响应功能》在现代Web开发和数据抓取中,批量访问URL并解析响应内容是一个常见的需求,本文将详细介绍如何使用Python实现批量访问URL并解析XML响... 目录引言1. 背景与需求2. 工具方法实现2.1 单URL访问与解析代码实现代码说明2.2 示例调用

关于Java内存访问重排序的研究

《关于Java内存访问重排序的研究》文章主要介绍了重排序现象及其在多线程编程中的影响,包括内存可见性问题和Java内存模型中对重排序的规则... 目录什么是重排序重排序图解重排序实验as-if-serial语义内存访问重排序与内存可见性内存访问重排序与Java内存模型重排序示意表内存屏障内存屏障示意表Int