现象
- 现象是请求中的中文保存到数据库后会乱码。
- 乱码的字符并不是什么特殊字符。
- 删除了乱码字符前面的字符后,乱码的地方会向后偏移。
调查过程
第一反应是数据库字段的字符集设置导致的,但修改成 utf8mb4 字符集后问题依旧。
通过本地调试发现,直接请求接口的字符串并没有乱码。
通过测试环境日志发现,Controller 接收到的参数中字符串已经乱码了。
第一反应是数据库字段的字符集设置导致的,但修改成 utf8mb4 字符集后问题依旧。
通过本地调试发现,直接请求接口的字符串并没有乱码。
通过测试环境日志发现,Controller 接收到的参数中字符串已经乱码了。
之前使用 Eureka 作为微服务注册中心的时候,就试图解决在服务关闭时出现的短暂服务中断问题。总体思路是有的,但是由于发布那边主要是运维在处理, Kubernetes 的相关功能自己不了解,后来也就放弃了。最近负责使用阿里云容器服务发布了一个项目时,尝试解决了下这个问题。
微服务之间的调用或者网关转发请求到服务,是通过向服务注册中心请求来获取可用的服务列表。为了提高性能,每个微服务都会缓存一份获取到的服务列表。这样就导致在一个微服务容器关闭时,即使微服务注册中心及时的注销了这个服务节点,但是还是会有一部分请求被分发到这个已关闭的节点。
Spring Cloud
专注于为经典用例和扩展机制提供良好的开箱即用
官方 Quick Start 中的依赖总是执行不起来,不知道是哪边的原因。
在 Spring Cloud 学习 中实现了 Java 版的微服务。在此基础上调查了如何在 .NET Core 上注册和发现服务。
.NET Core 端使用 Pivotal.Discovery.Client
包来注册及发现 Spring Cloud 服务。
在网上找到了好多教程文章,但最新最全的还是官方网站 steeltoe.io 上的。上面有最新的文档 Steeltoe Introduction 和完整的示例代码 Steeltoe Sample Applications。