spring cloud学习笔记

早在16年,部门都尝试过使用Spring boot来搭建项目,实现一些小功能和业务,对于spring cloud也只是表面上的了解,没深入去学习过,这几个月还算比较系统学习,不过迁移成本实在太高,只能放弃,如果说后台团队在8-10人,我想迁移还是值得的,至少能让同事们学习到更多先进的东西,理解它的思路,包括如何使用docker去构建环境,去部署项目。

spring cloud并不是新东西,只是把很多需要的三方框架优化并整合到一起,核心基础是spring-boot,micro service之间是消息通信,如何高效通信,然后就有了注册-发现机制,所有的provider都注册到service discovery component上,这类支持有eureka,consul,zookeeper等,主要功能就是服务注册表,服务注册与发现,服务检查。consumer要调用provider就通过eureka等这类组件。服务要集群部署则可以通过ribbon在consumer实现负载均衡,通过一定规则或者自定义规则调用指定服务名的provider,如果service要提供rest api给consumer,通过feign即可。

不能让用户或者客户端去零散的调用微服务,使用统一网关是必要的,如zuul,不仅能统一服务,还能直接使用过滤器来筛选,提高效率。

如果上大型集群,使用config来统一管理微服务配置,直接配置git连接,总之就是方便。

要监控服务和容错处理则使用hystrix即可,内置rabbitmq兼容,还带有dashboard,实时监控,还有sleuth+zipkin,这种就高级了,实现分布式跟踪。

还有更高级的特性暂时也没细研究,利用spring boot + consul/eureka + ribbon + zuul + hystrix + config 已经可以实现足够强大的微服务后台,而且很简单,复杂的已经被实现,对于我们只需要在于业务方面,如何设计,如何拆分细粒度,松耦合等。不过对于人员的基础要求还是相对高点,现在云南这边大部分培训出来的就整点spring mvc完事,boot都未必接触,分给每个人一个服务,实际上是一个独立的模块,很难控制他的代码质量,增加代码审核成本,像我们现有项目,实际上拆成了4,5个,后台有独立common,service,controller,web,mq等,对于初级点的程序员,我只给controller项目即可,照着设计好的接口文档调用service返回json,供app,node层使用。如果说上cloud,至少来说一个微服务得两人来做,或者一个人一个微服务,然后两三个微服务一个负责人。

我看node也有实现的eureka-js,就是说也可以用node写微服务,供客户端调用,使用sidecar整合。

下个项目想整下这套解决方案,培养一堆相对比较厉害的程序员出来。

另外就是看了两本书,聊聊架构,进化,前者真的是太差了,通篇废话,做架构整成了哲学,什么是架构,什么是产品,我也实在无语,还挺贵一本。另外就是技术相关书籍国内作者和国外差的不知道哪去了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注