Spring Cloud Alibaba(五):Nacos版本升级增加98848、98848两个端口

问题:注册中心Nacos服务升级版本,从 1.x 升级到 2.0,网络比较特殊,跨两个网络,中间有防火墙。

开通默认的 8848 端口后,确定端口是通的,但还是注册不上,报:Client not connected, current status:STARTING

原因是2.0版本增加了两个端口,需要在防火墙开通。

官方文档:https://nacos.io/zh-cn/docs/v2/upgrading/2.0.0-compatibility.html

阅读更多

Spring Boot 2系列(六十三):动态刷新环境配置和Bean属性值

Spring Boot 应用,修改了配置文件中的参数,不重启应用使修改生效,使注入配置参数的 Bean 更新生效。

要满足配置文件修改,就需要将Spring Boot的配置文件外部化,而不是在 Spring Boot Jar 包类路径下的文件。

Spring Boot的配置文件外部化支持两个路径:file:./file:./config/,即与 Jar 同级目录中的配置文件,和 Jar 所在目录的 config 子目录中的配置文件。

本文主要参考了 spring-cloud-context 的 refresh 接口的实现。

阅读更多

Spring Boot 2.3 版本发布说明

公司的 Spring Boot 还是 2.2.6 版本,计划升级到 2.6.x 版本,采用逐级升级测试影响范围,而不是跨版本升级。所以需要了解各个 次版本 的更新。此篇记录 Spring Boot 2.3 版本发布说明。

关注的几个更新。

  1. Web Starters不再包含Validation Starter,升级后需要单独引入。
  2. 升级了Jackson 版本,修改了 java.util.Date 和 java.util.Calendar 默认格式。
  3. 嵌入Servlet Web服务线程配置属性名更新。
  4. 增加对 Java 14 的支持,同样支持 Java 8 和 Java 11。
  5. 加载配置文件,增加支持位置通配符。
阅读更多

Spring Boot 2.7 版本发布说明

Spring Boot 2.7 Release Notes(版本发布说明),关注的几个更新。

  1. 自动配置注册的加载从 spring.factories 迁移到 AutoConfiguration下的imports
  2. Spring MVC 的 requestMappingHandlerMapping Bean 不再默认为主,存在多个时注入,需要指定或注入集合。
  3. 引入了新的 @AutoConfiguration 注解,作用在 AutoConfiguration.imports文件中列出的自动配置类。
  4. 增加了一些测试相关的注解、注解属性、注解属性源。如,@SpringBootTest,@DataCouchbaseTest,@DataElasticsearchTest。
  5. 增加支持 Redis Sentinel 进行身份验证的用户名,spring.redis.sentinel.username
阅读更多

Spring MVC 集成Servlet3.0 AsyncContext异步请求实现

Servlet 和基于 Servlet 的容器(例如Tomcat)默认处理请求和处理业务是同一条线程,即有请求进来后,分配一条线程接收并处理请求,并继续执行业务处理,直到所有处理结束才完成响应,线程才会释放。这使得 Servlet 对业务方法的调用变成一种阻塞调用,效率较低。

Servlet3.0 提供了AsyncContex 来异步处理请求,将请求线程与业务处理线程分离。

阅读更多

Spring Boot 2系列(六十二):集成 WebFux 实现响应式Web

Spring Framework 5.0 版本增加了响应式 Web 框架 Spring WebFlux 。 它是完全无阻塞的,支持 Reactive Streams 反背压,并且可以在 Netty、Undertow 和 Servlet 3.1+ 容器等服务器上运行。

Spring Boot 通过为 Spring Webflux 提供自动配置来简化响应式 Web 应用程序的开发。

阅读更多

Spring Boot 2系列(六十一):作为Linux服务运行Java程序

除了使用 java -jar 运行 Spring Boot 应用程序之外,还可以为 Unix 系统制作完全可执行的应用程序。

完全可执行的 jar 可以像任何其他可执行二进制文件一样执行,也可以使用 init.dsystemd 注册。

这有助于在常见的生产环境中安装和管理 Spring Boot 应用程序。

阅读更多

Spring Cloud(二十二):服务容错 Hystrix 框架核心原理

Netflix Github 官方文档:https://github.com/Netflix/Hystrix/wiki

在分布式环境中,系统所依赖的服务的稳定性存在不可控因素,不可避免地会存在失败。

Hystrix 通过隔离服务之间的访问点、阻止它们之间的级联故障并提供回退选项来做到这一点,所有这些都可以提高系统的整体弹性。

阅读更多

Spring Boot 2系列(六十):Tomcat 中 NIO 模型与启动流程

以 Spring Boot 2.6.3 版本,spring-boot-starter-web 嵌入的 9.0.56 版本 tomcat-embed-core 为例,分析 Tomcat 中的 NIO 的配置与优化。

注意:Tomcat 8.5 移除了 BIO,默认启用 NIO,Tomcat 的架构和核心组件已与 Tomcat 7.x 版本已略有不同,与网上很多基于 Tomcat 7.x 版本分析的文章是不符的,需要自己走读源码。

阅读更多