技术选型从来不是选"最强的方案",而是选"最匹配当前问题的方案"。
很多团队过早引入 Dubbo、Nacos、Service Mesh,不是因为业务需要,而是因为"大家都在用"。
本文试图建立一套从产品和业务视角出发的架构决策框架,帮你避免过度设计,也避免设计不足。
一、先承认一个现实:80%的 Java 项目,用不上完整的微服务体系
打开技术社区,到处都是"Spring Cloud Alibaba 全家桶整合"、"Dubbo 3 性能优化实战"、"K8s + Istio 全链路治理"。
技术选型从来不是选"最强的方案",而是选"最匹配当前问题的方案"。
很多团队过早引入 Dubbo、Nacos、Service Mesh,不是因为业务需要,而是因为"大家都在用"。
本文试图建立一套从产品和业务视角出发的架构决策框架,帮你避免过度设计,也避免设计不足。
打开技术社区,到处都是"Spring Cloud Alibaba 全家桶整合"、"Dubbo 3 性能优化实战"、"K8s + Istio 全链路治理"。
Spring是Java生态中最流行的企业级框架,它为企业应用提供了全面的解决方案。
本文介绍了Spring框架的核心特性和使用方式,帮助你快速上手企业级开发。
没有网关时:
客户端 ──→ 用户服务 (8081)
客户端 ──→ 订单服务 (8082)
客户端 ──→ 商品服务 (8083)
问题:
- 客户端需要知道所有服务的地址
- 认证逻辑在每个服务中重复
- 跨域配置需要在每个服务中设置
- 限流、日志等横切关注点散落各处
- 前端调用多个不同域名/端口很麻烦
有了网关后:
客户端 ──→ 网关 (8080) ──→ 用户服务
│ ──→ 订单服务
│ ──→ 商品服务
Spring是Java生态中最流行的企业级框架,它为企业应用提供了全面的解决方案。
本文介绍了Spring框架的核心特性和使用方式,帮助你快速上手企业级开发。
当我们使用springcloud+nacos架构时,由于使用nacos进行负载的原因,组内小伙伴经常调用到其他人的电脑。
针对此问题我们可以采用的方案:
Spring是Java生态中最流行的企业级框架,它为企业应用提供了全面的解决方案。
本文介绍了Spring框架的核心特性和使用方式,帮助你快速上手企业级开发。
Spring提供了对@ControllerAdvice注解的配置,我们可以通过配置@ControllerAdvice对指定的Exception拦截。
// 第一种
@RestControllerAdvice
public class GlobalExceptionHandler
{}
// 第二种
// basePackages 指定一个或多个包,这些包及其子包下的所有 Controller 都被该 @ControllerAdvice 管理。其中上面两种等价于 basePackages。
// basePackages
// @ControllerAdvice("cn.demo.controller")
// @ControllerAdvice(value = "cn.demo.controller")
@ControllerAdvice(basePackages = {"cn.demo.controller"})
public class GlobalExceptionHandler
{}
// 第三种
// basePackageClasses 指定一个或多个 Controller 类,这些类所属的包及其子包下的所有 Controller 都被该 @ControllerAdvice 管理。
@ControllerAdvice(basePackageClasses = {MyController.class})
public class GlobalExceptionHandler {}
// 第四种
// assignableTypes:指定一个或多个 Controller 类,这些类被该 @ControllerAdvice 管理。
@ControllerAdvice(assignableTypes = {MyController.class})
public class GlobalExceptionHandler {}
// 第五种
// annotations:指定一个或多个注解,被这些注解所标记的 Controller 会被该 @ControllerAdvice 管理。
@ControllerAdvice(annotations = {RestController.class})
public class GlobalExceptionHandler {}
Spring是Java生态中最流行的企业级框架,它为企业应用提供了全面的解决方案。
本文介绍了Spring框架的核心特性和使用方式,帮助你快速上手企业级开发。
Hystrix修改默认配置有两种方式,注解参数注入,和application.yml配置文件配置。
@RequestMapping(value = "/helloHystrixA/{string}", method = RequestMethod.GET)
@HystrixCommand(fallbackMethod = "testFallback", // 请求失败降级回调方法,值为方法名,不需要括号
commandProperties = {// 针对单个方法的配置
@HystrixProperty(name = "circuitBreaker.enabled", value = "true"), // 开启熔断器,可不加默认为true
@HystrixProperty(name = "circuitBreaker.errorThresholdPercentage", value = "50"), // 请求错误超过50%,开启熔断器
@HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "10"), // 一个周期(十秒)内超过10个请求才进行进行容错率判断
@HystrixProperty(name = "circuitBreaker.sleepWindowInMilliseconds", value = "10000"),// 开启熔断器后过10秒再尝试访问
})
public String helloHystirxA(@PathVariable String string) {
return "Nacos服务发现:远端调用成功! result="
+ restTemplate.getForObject("http://nacos.provider.demo/hello/" + string, String.class);
Spring是Java生态中最流行的企业级框架,它为企业应用提供了全面的解决方案。
本文介绍了Spring框架的核心特性和使用方式,帮助你快速上手企业级开发。

Ribbon负载均衡策略为轮询,如果要修改默认策略 ,有两种方法,分别是创建配置类,和配置application.yml。
Spring是Java生态中最流行的企业级框架,它为企业应用提供了全面的解决方案。
本文介绍了Spring框架的核心特性和使用方式,帮助你快速上手企业级开发。
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-alibaba-nacos-config -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
Spring是Java生态中最流行的企业级框架,它为企业应用提供了全面的解决方案。
本文介绍了Spring框架的核心特性和使用方式,帮助你快速上手企业级开发。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
Spring是Java生态中最流行的企业级框架,它为企业应用提供了全面的解决方案。
本文介绍了Spring框架的核心特性和使用方式,帮助你快速上手企业级开发。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
Spring是Java生态中最流行的企业级框架,它为企业应用提供了全面的解决方案。
本文介绍了Spring框架的核心特性和使用方式,帮助你快速上手企业级开发。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>