第九周总结
Java 学习第九周总结
一、学习概述
本周学习内容涵盖性能调优、前沿技术探索、实战项目架构设计、持续交付流水线、基础设施即代码以及 Web 开发基础。在性能调优方面,深入学习了 JVM 和数据库的优化策略;前沿技术部分探索了 Serverless 架构和 AI 集成;实战项目聚焦电商平台架构设计与压测策略;持续交付部分学习了 Jenkins 流水线和 GitOps 实践;基础设施即代码部分掌握了 Terraform 和 Crossplane 的使用;Web 开发基础学习了 HTML 的核心标签与进阶应用。
二、性能调优黄金法则
- JVM 层优化
GC 策略选择 - G1 收集器:适用于大部分场景,可通过以下参数启用:
-XX:+UseG1GC -Xmx8g -Xms8g -XX:MaxGCPauseMillis=200
2. ZGC 收集器:适用于超大堆内存(如 16GB 以上),参数配置:
-XX:+UseZGC -Xmx16g -Xlog:gc*=info
3. JIT 分析:通过以下参数打印编译信息,优化热点代码:
-XX:+PrintCompilation -XX:+UnlockDiagnosticVMOptions
内存布局优化
4. 对象预分配:通过-XX:PretenureSizeThreshold设置大对象直接进入老年代
5. TLAB(Thread Local Allocation Buffer):启用参数-XX:+UseTLAB提升对象分配效率
2. 数据库优化
索引策略
6. 覆盖索引:设计查询时让索引包含所有需要的字段,避免回表查询
7. 避免隐式转换:确保查询条件字段与索引类型一致,例如:
-- 反例:字段为varchar,查询时未加引号
SELECT * FROM users WHERE phone = 13800138000
-- 正例:
SELECT * FROM users WHERE phone = '13800138000'
连接池监控
8. HikariCP 监控参数:
spring.datasource.hikari.metrics-track-metrics: true
spring.datasource.hikari.metrics-extension: prometheus
9. 检测泄漏:通过spring.datasource.hikari.leak-detection-threshold设置泄漏检测阈值
三、前沿技术探索
- Serverless 架构
应用场景 - 突发流量处理:如电商大促期间的图片生成、订单快照处理
- 定时任务:周期性数据统计、报表生成
- 事件驱动:文件上传触发的处理流程
实现方案 - AWS Lambda + Spring Cloud Function:
@SpringBootApplication
public class ImageProcessingFunction {
@Bean
public Function<File, String> imageResizer() {
return file -> {
// 图片处理逻辑
return "processed:" + file.getName();
};
}
}
2. AI 集成(DeepJavaLibrary, DJL)
图像分类示例
// 配置模型加载条件
Criteria<Image, Classifications> criteria = Criteria.builder()
.optApplication(Application.CV.IMAGE_CLASSIFICATION)
.setTypes(Image.class, Classifications.class)
.optFilter("resnet", "18") // 指定ResNet-18模型
.build();
try (ZooModel<Image, Classifications> model = ModelZoo.loadModel(criteria);
Predictor<Image, Classifications> predictor = model.newPredictor()) {
// 加载图像
Image img = ImageFactory.getInstance().fromUrl("https://example.com/cat.jpg");
// 执行预测
Classifications result = predictor.predict(img);
// 输出结果
result.getClasses().forEach((label, prob) ->
System.out.printf("Label: %s, Probability: %.2f%n", label, prob));
}
四、实战项目:电商平台架构设计
- 架构蓝图
分层设计 - 前端层:Vue 3 + Nginx(SSR 服务端渲染)
- 网关层:Spring Cloud Gateway + OAuth2 JWT 认证
- 业务层:
- 用户服务:基于 DDD 聚合根设计
- 商品服务:CQRS 架构 + Elasticsearch 搜索
- 订单服务:Saga 模式 + RocketMQ 事务消息
- 支付服务:状态机设计 + 幂等令牌机制
- 数据层:
- MySQL 分库分表:ShardingSphere 实现
- Redis 集群:Codis 管理
- OLAP 分析:ClickHouse 处理海量订单统计
- 压测策略
工具与指标 - 压测工具:JMeter + Gatling
- 核心指标:
- 99% 响应时间 < 200ms
- 系统吞吐量 > 5000 TPS
- 错误率 < 0.1%
- 数据库连接池活跃数 < 80% 最大连接数
压测场景 - 峰值场景:模拟双十一期间每秒 5000 订单创建
- 故障场景:模拟库存服务 50% 故障率的降级表现
- 容量场景:逐步加压至系统极限,确定最大承载能力
五、持续交付流水线设计 - Jenkins 多阶段流水线
declarative pipeline 示例
pipeline {
agent any
environment {
IMAGE_NAME = "ecommerce/order-service"
GIT_COMMIT = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()
}
stages {
stage('代码检查') {
steps {
sh 'mvn checkstyle:check pmd:pmd'
sh 'mvn spotbugs:check'
}
}
stage('单元测试') {
steps {
sh 'mvn test -DskipTests=false'
junit 'target/surefire-reports/*.xml'
archiveArtifacts artifacts: 'target/surefire-reports/**', fingerprint: true
}
}
stage('构建镜像') {
steps {
script {
docker.build("${IMAGE_NAME}😒{GIT_COMMIT}", "--file Dockerfile .")
}
}
}
stage('安全扫描') {
steps {
sh "trivy image --severity HIGH,CRITICAL ${IMAGE_NAME}😒{GIT_COMMIT}"
}
}
stage('部署到Staging') {
when { branch 'main' }
steps {
sh "kubectl apply -f k8s/staging --record"
sh "kubectl rollout status deployment/order-service -n staging"
}
}
}
post {
success {
slackSend channel: '#deployments', message: "部署成功: ${BUILD_URL}"
}
failure {
slackSend channel: '#ci-alerts', message: "构建失败: ${BUILD_URL}"
}
}
}
2. GitOps 实践(Argo CD)
应用配置示例
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: order-service
namespace: argocd
spec:
destination:
server: "https://kubernetes.default.svc"
namespace: production
source:
repoURL: "git@github.com:myorg/ecommerce-infra.git"
path: apps/order-service
targetRevision: HEAD
syncPolicy:
automated:
prune: true # 自动清理不再声明的资源
selfHeal: true # 自动修复漂移
syncOptions:
- CreateNamespace=true
六、基础设施即代码(IaC)
- Terraform 管理 AWS 资源
创建 RDS 实例
定义RDS实例
resource "aws_db_instance" "order_db" {
identifier = "order-db-prod"
engine = "mysql"
engine_version = "8.0.28"
instance_class = "db.t3.medium"
allocated_storage = 100
storage_encrypted = true
backup_retention_period = 7
publicly_accessible = false
skip_final_snapshot = true
安全组配置
vpc_security_group_ids = [aws_security_group.rds.id]
参数组配置
db_parameter_group_name = aws_db_parameter_group.order.name
凭据
master_username = var.db_username
master_password = var.db_password
标签
tags = {
Environment = "Production"
Service = "Order"
}
}
输出连接信息
output "rds_endpoint" {
value = aws_db_instance.order_db.endpoint
}
2. Crossplane 实现多云编排
跨云数据库资源定义
apiVersion: database.aws.crossplane.io/v1beta1
kind: RDSInstance
metadata:
name: crosscloud-db
namespace: crossplane-system
spec:
forProvider:
region: us-west-2
dbInstanceClass: db.t2.micro
engine: postgres
engineVersion: "13.4"
allocatedStorage: 20
masterUsername: admin
vpcSecurityGroupIds:
- ${SECURITY_GROUP_ID}
publiclyAccessible: false
providerConfigRef:
name: aws-prod
writeConnectionSecretToRef:
name: db-conn-secret
七、Web 开发基础:HTML 核心技术
- HTML 基础结构与标签
基本文档结构
欢迎来到电商平台
<nav>
<ul>
<li><a href="/">首页</a></li>
<li><a href="/products">商品</a></li>
<li><a href="/cart">购物车</a></li>
</ul>
</nav>
<main>
<section>
<h2>热门商品</h2>
<div class="products">
<article>
<img src="product1.jpg" alt="商品图片">
<h3>智能手机</h3>
<p>高性能处理器,长续航电池</p>
<a href="#">查看详情</a>
</article>
<!-- 更多商品... -->
</div>
</section>
</main>
<footer>
<p>© 2023 电商平台 版权所有</p>
</footer>
2. HTML 进阶应用
表单验证与语义化
多媒体标签
八、本周学习总结与反思
1. 学习成果
1. 掌握 JVM GC 调优与数据库索引优化的核心策略,能制定性能优化方案
2. 理解 Serverless 架构与 AI 集成的应用场景,完成基础 Demo 开发
3. 设计电商平台完整架构,明确各层技术选型与压测指标
4. 实现 Jenkins 多阶段流水线与 Argo CD GitOps 配置,掌握持续交付流程
5. 使用 Terraform 与 Crossplane 管理云资源,实现基础设施即代码
6. 掌握 HTML 基础与进阶技术,能构建语义化、可验证的 Web 页面
2. 存在问题
1. JVM 调优缺乏实际大流量场景经验,GC 日志分析能力有待提升
2. Serverless 架构的冷启动优化与成本控制策略理解不足
3. 多云编排中资源同步与冲突解决机制实践较少
4. HTML 表单的自定义验证与用户反馈机制设计不够完善
3. 改进方向
1. 通过 JMeter 压测结合 GC 日志分析,实践 JVM 调优全流程
2. 深入研究 Serverless 框架的冷启动优化方案,对比不同云厂商实现
3. 搭建多云测试环境,实践 Crossplane 的资源同步与冲突解决
4. 学习 JavaScript 表单验证库(如 Vuelidate),提升用户体验
4. 下周计划
1. 学习分布式事务解决方案(Seata),实现电商订单的最终一致性
2. 深入研究微服务监控体系,整合 Prometheus、Grafana 与 Jaeger
3. 实践 Kubernetes 进阶特性(如 StatefulSet、DaemonSet)
4. 学习 CSS 布局与响应式设计,完善 Web 页面样式
5. 阅读《性能之巅:洞悉系统、企业与云计算》相关章节,深化性能优化认知
浙公网安备 33010602011771号