最近因为项目,开始研究了一下SpringCloud , 因为用过多年的dubbo ,所以 时不时会 拿两者比较。现记录一下心得体会
优点:
1,利用Http Rest 协议进行 微服务的参数传递,这样开发和测试 都可以分段进行,对于敏捷开发,调试,支持非常友好。
2,绑定了SpringBoot,充分利用了Spring Boot 的红利,开发门槛足够低,估计招人很好招。
缺点:
1,参数传递,微服务之间的 参数传递,对于复杂对象支持不好,RequestBody 只能支持一个复杂对象,但对于服务与服务之间如果有多个领域对象(一般都是复杂对象)需要传输,那么需要转换成DTO。。。。。。这个缺陷让我相当沮丧,感觉微服务的改造成本还是很高的,这应该算是对象与http协议阻抗吧。
2,没有跨服务的Request 生命周期的对象(也可能是本人目前研究不深),这样在一个请求中,如果有一些辅助数据需要传递,那么比较困难,虽然可以借助redis 解决,但总感觉不爽。
3,性能可能不好,这个没有实际生产数据支持,只是从原理上来分析:基于http 的数据传输,有了异构系统的兼容性(异构在笔者看来一直是伪需求),但也牺牲了性能。而且基于上面的两点,逻辑代码中一定有这样装包和拆包的逻辑,白白浪费CPU。
4,注册中心 服务失效bug,笔者遇到一个问题,当某一个服务没有启动时,服务的消费者 此时调用了该服务,会报失败,以上都没有问题,但当我再把这个服务启动后,消费者在相当一定的时间内,还是依然报错,应该是触发了熔断吧,这个也挺让我无语的。
网友评论