Spring Cloud中国社区博客

微服务实施Spring Cloud中踩过的坑

1.注册IP问题

早期的Spring Cloud Eureka在注册获取网卡IP时,不能区分外网网卡和内网网卡,如果安装了虚拟机和docker也不能区分虚拟网卡,每次启动注册的IP都有可能不一样,如果要注册为外网网卡IP,那运行带宽就不够,这个bug应该说是比较严重的问题,因此重写了网卡IP获取的逻辑来解决,同时也反馈给了spring cloud团队,再后期的版本中添加了网卡接口排序和通过名称过滤的功能来得到解决。

2.HealthCheck的问题

在一些极小概率的情况下,会导致Eureka Server 下线微服务实例,出现“Remote status from Eureka server is down”的问题,即便是重启微服务也无济于事,不过已经有码友在spring cloud 官方github贴出了解决方法的issue。

3.Zookeeper版本带来的性能问题

现象是一个团队在实施微服务时,发现部署到服务器上的微服务,在没有任何请求时,仍然CPU占用20~30%;匪夷所思的是,同样的微服务包在本地开发机器、本地物理机、本地虚拟机运行并未出现。通过jvisualvm观察,如下图:

img

可以看到和Zookeeper有关,同时我的另一个Demo微服务在任何环境下却未出现该问题。比较jar中依赖包之后发现,2个包中唯一不一样的是Apache Curator版本,一个是2.8.0, spring cloud默认依赖的版本;没问题的是Apache Curator 2.9.1。Apache Curator 2.8.0 BUG!!!Apache Curator 2.9.1 Release Notes 12332392>也发现了对此bug的描述。升级到2.9.1问题解决,皆大欢喜。同时上报此bug给Spring Cloud团队,升级Apache Curator版本。

4.Feign使用不当带来的性能问题

Feign在Spring容器中使用了独立应用上下文,要注意命名空间上隔离,详情参考:Feign正确的使用方法和性能优化注意事项 |http://www.jianshu.com/p/191d45210d16来绕过坑。

这几个坑是不能容忍的,踩过其他小坑就不计其数了,但都不伤大雅,可以替代。

转载请标明出处:
版权归铁汤作者
本文出自Spring Cloud中国社区会员-铁汤博客