springboot和springcloud
springboot核心功能(简化了开发、配置、部署)
1、独立运行(内嵌服务器) java -jar XXX.jar 无需web容器(Tomcat、jetty)
2、简化配置 配置starter-web无需配置一堆
3、准生产的应用监控
springboot是java开发微服务的润滑剂。
springcloud与微服务(简化java的分布式系统)
侧重功能,侧重开发,但是并没有提供资源的管理、自动化部署(需要服务编排框架)
1、统一的配置管理
2、服务的注册、服务发现、服务之间的调用、负载均衡、断路器。。。
3、全局锁
SpringCloud核心组件
1、Netflix Eureka 服务发现组件 (客户端发现)
2、Netflix Ribbon 客户端负载均衡组件
edge service:整合多个后端的数据
-----》负载均衡策略
3、Netflix Hystrix 断路器
1、当发现服务不可用时,不再去访问服务层
2、或者更好的用户体验,从缓存中取
正常状态是closed,服务器忽然不可用就处于open状态,
过段时间会再次请求,好了就处于半开状态,
然后有更多请求进来,再不能用了就open,没有问题就closed。
4、Netflix Zuul 服务网关
充当apiGateway。除了对外提供restAPI 还提供路由服务(核心) 负载均衡 全员控制
客户端通过ELB(弹性负载均衡)来访问微服务
-->Zuul 对外提供了统一的接口
-->对内将请求转发到不同的service,中间有一层edge service
edge service对外提供是rest api,zuul将api进行整合。。。。
5、SpringCloud Config 分布式配置
不一样的环境解决方式。
平常:
1、手动修改不好,易错。
2、排除文件,修改脚本。
3、zookeeper配置修改
4、maven的profile直接指定-p制定一个环境变量
SpringCloud:
两个模块
1、SpringCloudConfigServer:会开启一个http服务,获取配置信息来源 svn、git、本地文件。
这是静态配置还需要重启服务,动态配置还可以用zookeeper支持监听。
SpringCloudConfig也可以动态的。
2、SpringCloudConfigClient:通过server的http配置获取接口
springcloud VS springboot
SpringBoot意在简化,是一种开发、配置风格。
SpringCloud是分布式系统的一站式解决方案。意在简化分布式,是功能的集合,风格的统一。