项目刚开始是单体应用,之后改造成微服务。但对于微服务来说我们又需要有这样的需求:
1.服务注册发现需要支持跨语言。因为我们实际过程中,除了java,可能还会应用到其他语言做事情,比如python做算法。而且,我们还可能需要java业务代码中调用python去做某些事情。所以,对于整体的服务注册发现,我们希望是跨语言的。 2.故障快速恢复,实际过程中,我们有可能遇到这种情况,某个服务挂了。这种情况需要他自己恢复。所以我们希望这个是能够快速恢复的。 3.跨环境用不同的服务注册发现的方式。由于我们在开发环境下,往往集成k8s的注册发现不是很方便,因为需要启动一套集群,不是很现实。所以,我们需要在开发环境下使用其他的注册发现,方便调试。
后边我们调研了几个容器技术栈,发现k8s正好实现以上的需求1、2的。istio还可以实现熔断、链路追踪、监控、流量控制等一系列功能。spring-cloud-alibaba的nacos满足了我们开发环境下服务注册的需求,以及多环境配置更新的需求。所以,我们计划采用这三个技术栈共同实现微服务改造。