记一次 SpringBoot 中文乱码问题调查

现象

  • 现象是请求中的中文保存到数据库后会乱码。
  • 乱码的字符并不是什么特殊字符。
  • 删除了乱码字符前面的字符后,乱码的地方会向后偏移。

调查过程

第一反应是数据库字段的字符集设置导致的,但修改成 utf8mb4 字符集后问题依旧。

通过本地调试发现,直接请求接口的字符串并没有乱码。

通过测试环境日志发现,Controller 接收到的参数中字符串已经乱码了。

Spring Cloud 微服务平滑更新问题

之前使用 Eureka 作为微服务注册中心的时候,就试图解决在服务关闭时出现的短暂服务中断问题。总体思路是有的,但是由于发布那边主要是运维在处理, Kubernetes 的相关功能自己不了解,后来也就放弃了。最近负责使用阿里云容器服务发布了一个项目时,尝试解决了下这个问题。

微服务之间的调用或者网关转发请求到服务,是通过向服务注册中心请求来获取可用的服务列表。为了提高性能,每个微服务都会缓存一份获取到的服务列表。这样就导致在一个微服务容器关闭时,即使微服务注册中心及时的注销了这个服务节点,但是还是会有一部分请求被分发到这个已关闭的节点。

Spring Cloud 简介









































Spring Cloud 学习

特征

Spring Cloud 专注于为经典用例和扩展机制提供良好的开箱即用

  • 分布式/版本配置
  • 服务注册与发现
  • 路由选择
  • 服务调用
  • 负载均衡
  • 熔断机制
  • 全局锁
  • 领导人选举和集群状态
  • 分布式消息

示例

官方 Quick Start 中的依赖总是执行不起来,不知道是哪边的原因。

.NET Core & Spring Cloud 互相调用微服务

Spring Cloud 学习 中实现了 Java 版的微服务。在此基础上调查了如何在 .NET Core 上注册和发现服务。

.NET Core 端使用 Pivotal.Discovery.Client 包来注册及发现 Spring Cloud 服务。
在网上找到了好多教程文章,但最新最全的还是官方网站 steeltoe.io 上的。上面有最新的文档 Steeltoe Introduction 和完整的示例代码 Steeltoe Sample Applications