SpringCloud开篇
Contents
优势讲解blog
http://www.cnblogs.com/ityouknow/p/7508306.html
另外一个源码很详细的blog
https://www.kancloud.cn/fymod/springcloud/536930
特点描述
Spring Cloud的核心功能:
- 分布式/版本化配置
- 服务注册和发现
- 路由
- 服务和服务之间的调用
- 负载均衡
- 断路器
- 分布式消息传递
SpringCloud各组件配置使用运行流程:
- 请求统一通过API网关(Zuul)来访问内部服务.
- 网关接收到请求后,从注册中心(Eureka)获取可用服务
- 由Ribbon进行均衡负载后,分发到后端具体实例
- 微服务之间通过Feign进行通信处理业务
- Hystrix负责处理服务超时熔断
- Turbine监控服务间的调用和熔断相关指标
- Spring Cloud Config 提供了统一的配置中心服务
- 当配置文件发生变化的时候,Spring Cloud Bus 负责通知各服务去获取最新的配置信息
- 最后我们使用Sleuth+Zipkin将所有的请求数据记录下来,方便我们进行后续分析
微服务vs传统开发
分工不同,以前我们可能是一个一个模块,现在可能是一人一个系统。
架构不同,服务的拆分是一个技术含量很高的问题,拆分是否合理对以后发展影响巨大。
部署方式不同,如果还像以前一样部署估计累死了,自动化运维不可不上。
容灾不同,好的微服务可以隔离故障避免服务整体down掉,坏的微服务设计仍然可以因为一个子服务出现问题导致连锁反应。
SpringCloud 和Dubbo的区别
- Dubbo的优点
Dubbo专注于服务治理;Spring Cloud关注于微服务架构生态
Dubbo 支持更多的协议,如:rmi、hessian、http、webservice、thrift、memcached、redis 等。
Dubbo 使用 RPC 协议效率更高,在极端压力测试下,Dubbo 的效率会高于 Spring Cloud 效率一倍多。
Dubbo 有更强大的后台管理,Dubbo 提供的后台管理 Dubbo Admin 功能强大,提供了路由规则、动态配置、访问控制、权重调节、均衡负载等诸多强大的功能。
白名单功能:可以限制某个 IP 流量的访问权限,设置不同服务器分发不同的流量权重,并且支持多种算法,利用这些功能我们可以在线上做灰度发布、故障转移等,Spring Cloud 到现在还不支持灰度发布、流量权重等功
- SpringCloud优点
- 少配置,引入jar包和极少的配置实现远程调用
- 用java的eureka替代zookeeper实现注册发现
- 引入多个provider的话(需要spring.application.name参数一样),默认轮询做负载均衡