SpringCloud 入门系列【1】初识SpringCloud
最近看到微服务很火,也是未来的趋势,
所以就去学习下,在dubbo和spring cloud之间我选择了从spring cloud,主要有如下几种原因:
- dubbo主要专注于微服务中的一个环节--服务治理,像服务注册和发现这种还需要zookeeper第三方的中间;但是spring cloud提供了微服务的一站式解决方案,该有的功能都有了。
- spring cloud 社区似乎更加活跃,未来可能成为这个行业的标准。
- 自己所在公司的云部门就是用的spring boot/cloud,有先入为主的赶脚吧。
好,接下来我们来认识下spring cloud.
一、什么是spring cloud?
它的中文官网这样说:
微服务架构集大成者,云计算最佳业务实践。
百度百科这样说的:
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发, 如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。 Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来, 通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
二、常用组件
Spring Cloud主要包含以下常用组件:
2.1 Eureka
分成两类,一是注册中心及EurekaServer,用于提供服务注册/服务申请等功能;
一是被注册者及服务提供者EurekaClient,用于向EurekaServer注册服务并可从EurekaServer获取需要调用的服务地址信息;
需要向外提供服务的应用,需要使用EurekaClient来向Server注册服务。
2.2 Ribbon
负责进行客户端负载均衡的组件;一般与RestTemplate结合,在访问EurekaClient提供的服务时进行负载均衡处理。
也就是说,Ribbon用于服务调用者向被调用者进行服务调用,并且如果服务者有多个节点时,会进行客户端的负载均衡处理;
2.3 Feign
与Ribbon功能类型,用于调用方与被调用方的服务调用,同时进行客户端负载均衡的处理;不过它能提供类似本地调用的方式调用远程的EurekaClient提供的服务;它实际上是在Ribbon基础上进行了进一步的封装来提高调用服务的简便性。
三、优点
分解了单体应用提供多个服务的复杂性问题,拆分之后每个服务都有一个用RPC或是MQ或是API定义的边界。由于传统单体应用没有清晰的边界,存在开发,理解,维护,部署的复杂问题;
每个服务都可以有单独的团队维护开发,开发者客户选择自己擅长和合适的技术;
每个服务都可以独立部署,开发者不需要协调因其他服务调用,部署对本服务的影响。加快部署速度,更好的执行AB测试。持续部署变为可能。
每个服务都可以独立扩展。