转载 

SpringCloud 启动时间,10个优化案例!

分类:    199人阅读    IT小君  2024-05-29 01:59

大家好,我是磊哥。

2023 年 Java 架构师:视频课程
2023 年 Java 进阶高级:视频课程
买 Flowable 400讲,送Camunda视频实战

Spring Cloud技术栈专家,真实场景下的Spring Cloud启动优化案例。Spring Cloud应用的启动性能优化通常涉及到减少启动时间和提高启动效率。下面是一些常见的优化场景:

1. 懒加载配置

场景:减少非必要服务的初始化时间。

调优:使用Spring Boot的懒加载特性。

示例


@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(MyApplication.class);
        app.setLazyInitialization(true);  // 启用懒加载
        app.run(args);
    }
}

2. 禁用不需要的自动配置

场景:应用中包含了未使用的自动配置。

调优:显式排除不需要的自动配置类。

最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。

示例


@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class MyApplication {
    // 主方法...
}

3. 优化日志加载

场景:日志框架的加载和配置耗时。

调优:精简日志配置,避免复杂的日志处理。

示例:在application.properties中添加:


logging.level.root=warn  # 设置日志级别为WARN减少日志输出

4. 限制组件扫描

场景:组件扫描范围过广。

调优:明确指定组件扫描的包路径。

示例


@SpringBootApplication(scanBasePackages = "com.example.myapp")
public class MyApplication {
    // 主方法...
}

5. 数据源懒加载

场景:数据源初始化耗时。

调优:将数据源设置为懒加载。

示例:在application.properties中添加:

propertiesCopy code
spring.datasource.initialization-mode=lazy  # 设置数据源为懒加载

6. 减少JPA实体扫描

场景:JPA实体数量多,启动扫描耗时。

调优:减少实体扫描范围或延迟实体扫描。

示例

@EntityScan(basePackages = "com.example.myapp.entity")
@SpringBootApplication
public class MyApplication {
    // 主方法...
}

7. 优化Spring Cloud配置中心启动

场景:从配置中心加载配置耗时。

调优:本地缓存配置中心数据。

示例:在bootstrap.properties中添加:


spring.cloud.config.allowOverride=true
spring.cloud.config.overrideNone=true

8. 使用JVM参数优化

场景:JVM启动参数未优化。

调优:使用合适的JVM参数提高启动速度。

示例:在启动命令中添加:

java -Xmx256m -Xms256m -XX:TieredStopAtLevel=1 -jar myapp.jar

9. 优化健康检查机制

场景:健康检查逻辑过于复杂。

调优:简化或异步执行健康检查逻辑。

示例

@Component
public class MyHealthIndicator implements HealthIndicator {
    @Override
    public Health health() {
        // 简化健康检查逻辑
    }
}

10. 减少Spring Cloud Gateway路由

场景:Spring Cloud Gateway路由数量过多。

调优:精简路由配置。

示例:在application.yaml中配置:

spring:
  cloud:
    gateway:
      routes:
        - id: myroute
          uri: lb://myservice
          predicates:
            - Path=/myapi/**

总结

以上是一些常见的Spring Cloud应用启动优化场景。请注意,这些优化措施需要根据实际应用的具体情况来调整。启动优化通常是一个权衡过程,需要在启动速度和应用性能之间找到平衡点。

图片
🔥磊哥私藏精品  热门推荐🔥

磊哥联合公司合伙人,一线大厂在职架构师耗时9个月联合打造2023年Java高级架构师课程》本课程对标外面3万左右的架构培训课程,分10个阶段,目前已经更新了181G视频,已经更新1000+个小时视频,一次购买,持续更新,无需2次付费

第3版:互联网大厂面试题
包括 Java 集合、JVM、多线程、并发编程、设计模式、算法调优、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat、Python、HTML、CSS、Vue、React、JavaScript、Android 大数据、阿里巴巴等大厂面试题等、等技术栈!
阅读原文: 高清 7701页大厂面试题  PDF

转载于:https://mp.weixin.qq.com/s/TDqupYQk1cBfaRbrESdayA

支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者

 工具推荐 更多»