渗透测试、漏洞挖掘、APT攻击与检测、JAVA/PHP代码审计、二进制安全、逆向分析、Kubernetes安全、等级保护、应急响应

Java业务架构实战

各种资源百宝箱 2023-11-10 浏览(687) 评论(0)
- N +

文章目录[+]


模拟一个系统从架构设计到代码落地的过程,通过架构战略设计与战术设计相结合,从分析业务需求到代码分层设计到架构方案技术选型到最终的代码落地与测试。在分析与落地的过程中,分析到具体的功能点,会针对这个功能进行细微讲解,而且通过分析业务痛点推导出对应的架构设计方案。同样,在落地编码的过程中会使用对应的技术栈,在使用的时候会着重分析该技术栈为什么这样处理以及处理考虑点。总之,就是充分模拟一个架构师在日常工作中的职责,深入理解业务需求,从技术角度评估项目的可行性以及攻克技术难点,掌握高并发、高可用、强一致性、大数据量等常见业务场景下的解决方案设计,最终具备有成为初级架构师的能力。


阶段一 亿级商旅平台战略设计

架构工作中的痛点:

不知道如何从开发角色切换到架构师角色,不会做架构设计,陷入细节无法自拔

搞不懂业务需求分析思路,遇到业务问题无从下手

不会划分子域,无法确定各子域职能边界

无法区分架构中的战略设计与战术设计


第一周 需求框架分析


目标:

明确亿级商旅平台需求,从需求理解到功能点梳理。

掌握大厂常用的需求分析思路。

理解如何划分模块划分子域进行业务支撑。

理解亿级商旅平台战略设计要点,总结战略设计产物。

 

详细内容:

介绍软件系统的本质

亿级商旅平台的主需求分析

整理功能点模块,划分模块、划分子域

如何运用子域进行战略设计

绘制亿级商旅平台业务架构图、微服务架构图、数据流规划图

建设架构师的思维模型



阶段二 亿级商旅平台战术设计:百万并发认证


架构工作中的痛点:

架构设计之初不会基于业务进行流程梳理,导致业务返工甚至停滞。

设计缓存架构过程中不会进行合理的技术选型,制定不出对应的技术方案。

没有结构化思维,编写的代码无法复用。

没有系统掌握测试方法论模型,无法做到业务闭环。

 

第二周 亿级在线百万并发认证业务分析


目标:

了解亿级商旅平台战术设计之百万并发认证业务背景。

掌握认证业务中常见的流程梳理方法。

掌握百万并发认证业务中的数据库处理方式。

了解日常开发框架的并发上限,找到破解高流量的密码。

掌握资源估算方式,了解认证架构估算模型。

掌握百万高并发认证场景下的解决方案。

 

详细内容:

认证功能业务分析、流程梳理

百万并发认证功能中的数据处理方式

二叉树、多叉树存储方式

了解各种存储媒介量化延时

推测数据库 I/O 瓶颈

开发框架的并发上限分析

百万高并发认证的关键技术选型

内存、进程、网络、磁盘等硬件处理方式

F5、DNS、LVS、Nginx、Tomcat 流量分发处理

MySQL、Redis、Ehcache 缓存设计

ActiveMQ、RocketMQ、Kafka 消息队列设计

估算认证功能的资源消耗

流量再度激增的应对解决方案

 

第三周 认证业务架构方案设计


目标:

掌握分布式缓存方案与技术选型。

掌握 Redis 在百万并发认证业务中的方案设计和落地实战。

本地缓存 Ehcache 在百万并发认证业务中的方案设计和落地实践。

了解本地缓存 Ehcache 与 Redis 的区别。

掌握认证模块功能设计、认证模块接口设计。

 

详细内容:

Redis 缓存认证信息解决方案设计

数据变更频率、读多写少

缓存定长加变长、更新机制

Redis 单点故障、集群、持久化机制

缓存雪崩、穿透、击穿问题解析

Redis + Ehcache 缓存设计方案设计

估算 Redis 实例数量,计算性价比

剖析 Web 容器业务特性

巧用磁盘增加前置缓存

分片提升缓存命中率

Ehcache 单点问题应对措施

CAP 理论介绍

软件架构设计概念 DID 原则

Design 设计 20 倍的容量

Implement 实施 3 倍的容量

Deploy 部署 1.5 倍的容量

认证模块功能设计

Nginx 参数转发

Lua 脚本转发

Redis、Ehcache 数据结构的存储以及序列化

AOP 横切思想的使用

异常、监控、打点

认证模块接口设计实现

 

第四周 认证功能代码结构分层设计


目标:

理解代码分层的概念,学习使用三层架构、DDD 分层等。

掌握网关 API 接口设计原则。

使用 Redis、Ehcache、线程池等完成缓存功能代码设计实现。

 

详细内容:

商旅平台认证业务层次结构分析之单层结构、三层结构以及 N 层结构

DDD 领域模型层设计分析

API 设计原则之 Gateway API 接口设计、Facade API 接口设计

缓存功能代码设计分析

Nginx、Tomcat、Ehcache、Dubbo 线程池参数设置分析

 

第五周 认证功能代码实现


目标:

掌握亿级商旅平台下的认证功能代码编写方式。

使用 HTTP、TCP 实现远程系统调用,搭建系统之间的调用桥梁。

实现亿级商旅平台下的认证功能代码验证。

详细内容:

三种编码方式对比编写认证功能代码

结构化编写认证服务的流程代码,明确主流程

实现百万并发认证缓存功能代码编写

Java动态代理之 CGLIB、JDK 代理使用详解

SpringEL 表达式、OGNL 表达式、Aviator 表达式编写代码

拦截思维,前置、业务、后置、善后、异常

使用 OpenFeign 调用 HTTP 请求,实现远程系统调用

Dubbo 调用 TCP请求与 OpenFeign 调用 HTTP 请求的对比

多种方式验证、检查代码启动成功

 


第六周 认证功能自测验证与架构 CR


目标:

完成认证功能自测验证,掌握测试模型。

了解自动化测试与测试开发的区别。

掌握 Code Review 要点,完成代码结构检查。

 

详细内容:

分层测试模型介绍

测试冰淇淋模型

测试金字塔模型

自动化测试和 TDD 测试驱动开发

认证功能自测验证

测试使用 Redis、Ehcache 实现的缓存功能

测试 HTTP 入口调用、Dubbo 远程调用可行性

测试未知异常以及制造异常

链路压测

百万并发认证业务代码复盘要点分析

完整一致性检查

检查接口性能、线程安全、数据安全

异常处理检查、代码健壮性、可读性检查

代码结构、抽象封装检查



阶段三 亿级商旅平台战术设计:十万并发抢单


架构工作中的痛点:

应对高并发业务时无法找到对应的架构设计和技术选型方案。

不会进行代码分层架构设计。

设计的系统架构无法支撑抢单、秒杀等高并发需求。

流量洪峰下无法应对数据读写问题导致的订单无法查询等业务 bug。

完成代码编写后不会进行代码检测,业务没办法闭环。


第七周 十万并发抢单业务分析


目标:

掌握亿级商旅平台战术设计之十万并发抢单业务下的架构设计。

了解商旅平台中的餐饮下单业务背景与流程。

实现商旅平台抢单业务的数据持久化、一致性方案设计。

掌握抢单、秒杀业务特点。

 

详细内容:

餐饮下单业务背景介绍与流程梳理

用例(Use Case)描述

用例组成元素、用例原则

高并发抢单系统之数据库写的设计方案

表锁、行锁

事务一致性、分阶段提交、最终一致性介绍

扩并发、扩内存队列

锁争抢、自旋等待、队列积压

持久化受损、多台节点查无此单问题

重新计算并构建抢单架构雏形

数据库、容器、网关,并发上限测试

估算资源消耗

应对餐饮间歇性流量洪峰

抢单业务特点

秒杀、抢单,共性与区别

分治思想

 

第八周 抢单业务架构方案设计


目标:

掌握亿级商旅平台抢单业务的多种技术方案落地实现。

掌握亿级商旅平台抢单模块功能设计。

 

详细内容:

抢单系统并发解决方案之 MySQL + Redis 方案

Redis 与 MySQL 读写性能对比

InnoDB引擎 中 Buffer Pool、Change Buffer、双一策略

RDB、appendonly、appendfsync 参数详解、混合策略

JVM 本地防刷、Redis Lua 分布式防刷

抢单系统并发解决方案之 Redis + RocketMQ 方案

数据库压垮、扩容问题

数据可靠存储问题

抢单数据存在的本质问题

突破限流阈值、Redis 阈值设计

RocketMQ 的可靠性保证机制

Kafka 可靠存储措施

Redis、RocketMQ 各自解决的问题

订单库存信息处理

预加载

全量加载

分段锁思想加载

抢单模块功能设计

Tomcat 池满设计

Redis Lua 保护数据库机制、防刷机制

Redis 与 DB 查询共用模型设计

Redis 与 RocketMQ 存储机制

RocketMQ 消费的处理机制

异常补偿机制

 

第九周 抢单功能代码结构分层设计


目标:

掌握抢单功能代码设计实现逻辑

掌握恶意用户抢单设计

掌握优秀的代码编写方式

 

详细内容:

代码结构分层

相似性归类

聚合屏蔽对外

基础框架抽象下层

接口设计与定义

Gateway API 设计

Facade API 设计

RocketMQ API 设计

Redis API 设计

抢单功能代码设计

引入 RocketMQ 设计

Redis 数据结构分析

RocketMQ 收发处理

先发后达,定时延时设计方案

恶意用户抢单设计

Sentinel 限流处理

Redis String、Map、Lua 处理

自底向上编码风格

以工具的思维提供能力

以抽象、封装的原则提供能力

以设计文稿穿针引线

 


第十周 抢单功能代码实现


目标:

实现亿级商旅平台之抢单功能代码编写

引入 RocketMQ 组件进行消费代码编写

掌握抢单功能业务下并发、未知异常处理逻辑

 

详细内容:

抢单服务的流程代码编写

商品信息获取

数据入 RocketMQ 入 Redis 封装处理

先 RocketMQ 后 Redis

Tomcat 池满入 RocketMQ 代码编写

自定义拒绝策略、感知拒绝处理

修改 HttpResponse 响应

RocketMQ 消费代码编写

批量消费处理

扣减 Redis 数据

Dubbo 调用转移订单

RocketMQ、Redis 并发异常处理

RocketMQ、Redis 备份

任一失败不处理

都失败才处理

未知异常处理

异常发生的监控手段

出现异常的补救措施

 


第十一周 抢单功能自测验证与架构 CR


目标:

完成实现抢单功能自测验证

掌握如何制造异常并验证

了解抢单功能代码 Review 要点

 

详细内容:

抢单功能自测验证

Tomcat 池满后发送给 RocketMQ 处理

Redis 保存抢单功能

RocketMQ 收发抢单数据

抢单查询

制造异常验证

RocketMQ、Redis 存储异常

RocketMQ 消费异常

十万并发抢单业务代码复盘要点分析

检查异常处理流程

监控指标处理

代码抽象封装

异常预案的备用措施



阶段四 亿级商旅平台战术设计:十万并发推送


架构工作中的痛点:

没有高并发场景实战经验,面对业务问题不会做架构方案技术选型

无法正确进行资源估算,导致资源浪费

没有做过代码自测,遇到问题无从下手排查问题,找不到问题根源

了解技术栈的使用但是无法与业务相结合实战

 

第十二周 十万并发推送业务分析


目标:

掌握订单推送业务背景与流程

了解十万并发下推送功能架构设计

掌握推送业务中的技术难题,譬如网络异常、JVM 内存设计

 

详细内容:

系统性分析订单推送业务与流程梳理

5W2H 分析法

常规思路之直调数据处理

通过报文直调数据 

预测 I/O 并发瓶颈

使用线程池和队列实现报文推送

数据先发后达问题解决方案

网络异常、线程池异常、补偿机制

扩展参数改造推送方案

增加 Dubbo 线程数扩大并发能力

自定义线程池释放 Dubbo 线程池、队列数

JVM 内存支撑线程数上限

按照数据库持久化方式估算推送平台架构

线程数计算内存承载、I/O 延时

存储消耗、资源估算消耗

基于并发上限产出推送架构雏形

 

第十三周 推送业务架构方案设计


目标:

掌握推送业务下的架构技术选型方案

分析推送架构下的 3 套方案利弊

完成推送模块功能设计实现

 

详细内容:

MySQL + ElasticJob 方案设计

意外崩溃发生如何解决

数据库可靠性

网络异常、线程池异常的保障机制

引入调度解决了什么问题

调度如何扫描范围数据

数据存储增长过快怎么应对

MySQL + ElasticJob  + Sharding 方案设计

分治思想使用场景

数据库分治表设计,分治表平摊机器、结合调度

决定分片数量的瓶颈点、估算每秒能处理的并发

MySQL + ElasticJob  + Sharding + RocketMQ 方案设计

引入 RocketMQ 解决了什么问题

预估 RocketMQ 队列来计算并发

单笔和批量的差异

批量评估并发数、并发数反推消费

消费 RocketMQ 数据异常、异常入库待推送

异常补偿队列、定制间隔重试

多类型订单隔离

三套方案各自的利弊分析

流量考虑、数据直观统计、处理效率

推送模块功能设计

RocketMQ 数据模型设计、队列数量设计

RocketMQ 批量消费设计

分治表设计、索引设计

调度能力设计

索引范围扫描设计

重试补偿队列设计

 


第十四周 推送功能代码结构分层设计


目标:

实现推送功能代码设计

掌握 RocketMQ 消息处理模型

掌握事件补偿框架设计要点

掌握同比订单下的推送业务设计逻辑

 

详细内容:

代码结构分层

多协议、USB 接口处置

RocketMQ 接收消息设计

消息数据模型

接收消息框架抽象设计

异常入库事件消息设计

自定义线程池设计

调度扫描框架设计

防重并发设计

扫描事件消息表设计

事件补偿框架设计

事件补偿表设计

事件补偿流程设计

事件补偿队列 DelayQueue 设计

单笔订单多状态多记录处理

Redis 防并发处理

同笔订单多条待推送设计

同笔订单推送成功更新设计

动态调整线程池参数

 


第十五周 推送功能代码实现


目标:

实现推送功能代码实现

完成 RocketMQ 发送、接收消息功能编写

完成调度扫描功能、事件补偿功能代码编写

 

详细内容:

发送消息功能编写

RocketMQ Console 发送

模拟发送代码编写

RocketMQ 接收消息代码编写

批量接收消息处理

批量查库处理

批量发送处理

失败、异常,入库事件消息表,并异步执行

修改线程池参数的封装处理

调度扫描功能编写

抽象防重父类编写

范围扫描数据 SQL 语句编写

批量入库事件补偿表

范围更新事件消息表

事件补偿功能编写

事件补偿调度处理

事件补偿逻辑执行处理

事件补偿结果处理

 


第十六周 推送功能自测验证与架构 CR


目标:

完成推送功能自测验证

完成 RocketMQ 发送、接收功能验证

完成调度扫描功能、事件补偿功能验证

 

详细内容:

RocketMQ 发送功能验证

RocketMQ Console

硬编码

RocketMQ 接收功能验证

批量读取异常验证

批量发送异常验证

批量入库事件消息表异常验证

异步线程池拒绝异常验证

动态调整线程池参数验证

调度扫描功能验证

调度重复执行验证

调度处理异常验证

事件补偿功能验证

事件异常验证

事件补偿调度加载验证

事件重试次数、重试至最大次数验证

十万并发推送业务代码复盘要点分析

检查异常处理流程

监控指标处理

代码抽象封装

异常预案的备用措施

架构师的成长规划


大纲中使用到的技术方案汇总

image.png

作者:wwl

网络攻防研究员

评论列表 (0)条评论

发表评论