微服务架构概述
微服务是一种架构模式,将单一应用程序划分成一组小的服务,服务之间相互协调、相互配合,为用户提供最中价值。
每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相协作(通常是基于HTTP协议的RESTful API)。
每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。
应当尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。
需要有:
服务注册与发现;
服务调用;
服务熔断;
负载均衡;
服务降级;
服务消息队列;
配置中心管理;
服务网管;
服务监控;
全链路追踪;
自动化构建部署;
服务定时任务调度操作
这些构成了微服务架构的体系
Spring Cloud简介
SpringCloud = 分布式微服务架构的一站式解决方案,是多种微服务架构落地技术的集合体,俗称微服务全家桶
Spring Cloud 技术栈
主流常见的技术
服务注册与发现:Eureka
服务负载与调用:Ribbon、Feign
服务熔断降级:Hystrix
服务网关:Zuul
服务分布式配置:Spring Cloud Config
服务开发:Spring Boot
SpringBoot和SpringCloud的关系
Boot关注微观,具体是一个一个的微服务;Could是一整套,关注的是宏观,将Boot组合起来;
Springboot可以单独使用,但SpringCloud依赖于boot。
boot专注于快速方便的开发单个个体微服务;
cloud是关注全局的微服务协调整理治理框架,将boot开发的一个个单体微服务整合并管理起来(为各个微服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等集成服务)
SpringBoot可以离开SpringCloud独立使用开发项目,但是SpringCloud离不开SpringBoot,属于依赖的关系总结:SpringBoot专注于快速、方便的开发单个微服务个体,SpringCloud关注全局的服务治理框架
SpringCloud和Dubbo区别对比
Dubbo是怎么到SpringCloud的?哪些优缺点去技术选型
最大区别:SpringCloud抛弃了Dubbo的RPC通信,采用的是基于HTTP的REST方式。
严格来说,这两种方式各有优劣。虽然从一定程度上来说,SpringCloud牺牲了服务调用的性能,但也避免了上面提到的原生RPC带来的问题。而且REST相比RPC更为灵活,服务提供方和调用放的依赖只依靠契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更加合适
相关文档
Dalston.RELEASE版本中文文档:Spring Cloud Dalston
SpringCloud中国社区:社区
SpringCloud中文网:中文网