SpringCloud专题
单体应用:虽然按照 模块化的设计,但最终打包到一个war,ear。 , 部署和监控都很方便。但是:
- 代码多,混在一起,越来越大
- 多个team 弄同一个 代码,麻烦多多
- 扩展应用中的某个部分,不太可能。
- 从长期运维的角度, 技术变化,和功能变化需要更新代码,酸爽。
微服务
- 开始切分子业务领域困难
- 需要处理分布式应用的复杂
- 没有恰当的devops 管理分布应用是困难的。
- 本地的开发环境的设置,比较困难。
SpringCloud
springboot:越来越多的企业不会建立数据中心来跑各种应用,而是开发出来部署到云端。
Springcloud是建立 云 服务的一些基本的实现。可以只关注业务逻辑,剩下的内容有springcloud中的modules来实现
配置管理 congfigServer
spring cloud config 解决了将配置脱离应用,放到分布式环境中的问题,通过更改配置并不需要重新启动应用,而就将 整个的配置更新到分布式环境中。
服务发现
服务需要 scale up/down , 不能依赖手动的hostname等, 因此需要 服务的发现和注册组件。 Eureka,Consul,Zookeeper
熔断机制
服务依赖,如果一个服务的不可用会影响到其他的服务。采用 Hystrix
处理大量数据
需要处理大量的数据流的时候,采用 DAtaStreams, 处理kafka,spark的数据
安全机制
某些服务的调用需要认证与授权的时候,并希望sso,可以使用Oauth2
分布式跟踪
调用不同的组件,需要 Sleuth with Zipkin 进行跨服务的跟踪
契约
在多个team进行api开发的时候,形成约束机制。 Spring cloud contract .