关于Spring-Cloud的一点想法

第一次知道Spring-Cloud是通过同学的介绍,第一次使用是因为想把在公司做的所有项目做一个集合,但是在实际使用过程中发现了一些问题,所以在这里对Spring-Cloud的使用场合以及需要注意的地方,做一个总结。

首先作为Spring-Cloud的核心就是Eureka-Server(服务发现平台),在Spring-Cloud中,几乎你创建的所有服务,都必须通过这个服务发现平台注册,那么安全性应该是首先需要考虑的了,再考虑到分布式,那么这个服务发现平台应该不只是在局域网内使用,因此我觉得应该需要有账户和密码,好在Spring-Security模块帮我解决了这个问题。

其二是网关处理,所有的服务最终的出口是Zuul,Zuul不能当作nginx,他对css/js等前端的处理不做好,因此如果想要使用spring-cloud的同学注意了,这里讲的所有概念都是基于微服务的,是一种需要将前端与服务端分离的架构模式。Zuul也可以代理由其他语言完成的微服务,比如ASP.NET/PHP语言等,但是最友好的应该是Spring-Cloud,这里可以通过设置route配置相关service-name,对于service-name相同的微服务,会自动对其做负载均衡处理。

再然后一个问题就是,每当我有一个新的微服务的时候,那么我就需要重新编译Zuul,再上传,这也太费劲了吧!然后出现了Config+Bus这个组合,结合git的WebHook功能,可以做到网关配置文件的集中管理。

接着说说负载均衡和熔断处理,在Spring-Cloud中主要是有Feign+Hystric来做的,但是似乎和我想的不太一样,首先我需要新建一个项目,把所有的服务聚合起来,然后对每个服务的每个http分别做熔断,这部分代码的编写无非就是接口+熔断,接口部分需要和每个service-id下的所有请求一一对应,但是似乎我没有找到好的解决方案,写这么些几乎重复的东西实在有些不舒服。替代的解决方案是去掉feign层,直接在zuul网关上进行处理,当请求无法到达的时候统一处理熔断。(似乎也不是很好)

最后的部分就是自动化部署了,毕竟每次编译代码+上传代码+上传服务器+重新启动也是个体力活,咱能自动化处理岂不美哉?

Fiveplus wechat
扫一扫上方二维码,关注微信公众号:阿五编程
如果这篇文章对你有所帮助,请点击下方的打赏按钮。