公司最近的技术架构组说要使用springCloud搭建分布式应用架构。我就在想传统的IT架构存在什么问题,哪些场景一定要使用springCloud呢?正是基于此,决定写下本文,以备后查。
一、springCloud解决了什么问题?
springcloud是spring生态下的产物,其官网提供了很多的组件,整个生态圈非常庞大,很多可拿来即用的组件。它解决了几个核心问题:
1)系统间服务调用的标准化、轻量化解决方案。
传统IT架构下,各业务系统间调用采用restful接口、webservice接口,进行异步服务的调用,适用了不同业务系统间系统的数据交互场景。
但是,如果所有的系统都是自家开发的,还用这种方式去交互调用显得很重,springcloud的eureka组件提供服务注册与发现能力,openFeign组件提供服务调用能力,ribbon组件提供客户端负载调用能力。国内用dubbo微服务化的比较多,类似,springcloud的相关组件为系统间服务标准化调用提供了完整的、轻量化的解决方案。
2)生态圈强大,提供开箱即用的服务能力
3)微服务化
4)可利用相关组件实现各种服务的隔离、熔断、降级、监控等
二、springCloud适合什么场景?
大体上了解了一个工具的能力,那么它在什么场景下适用呢,核心是微服务及其周边的生态,而微服务带来的是开发模式的改变,一个传统框架到微服务架构的转型,那么就涉及到系统服务的拆分问题,服务拆分完成后,就可以有更多的人或团队独立负责某一个系统服务的开发。
每个组件、系统服务背后的团队支撑了一个服务的正常与发展。
所以,看起来,首先这个工具是比较适合人多的场景啊~
那是不是绝对的呢?几个人的团队是不是有必要搞呢?也有必要,因为微服务解决了另外一个核心问题就是服务动态扩展的能力。
当传统单体架构服务承压时,采用多实例集群去解决,而微服务天然就具备服务动态扩展能力。
文章中提及的相关组件:
eureka:注册中心
openfeign:服务调用
ribbon:服务调用时,客户端负载均衡策略