一、微服务
1.微服务和微服务架构不同
微服务:强调的是服务的大小,关注于某一个点,是具体解决某一个问题或者是提供落地对应服务的 一个服务应用。狭义来讲:微服务是IDEA中的一个微服务工程,或者是一个moudel。
微服务架构:一种架构模式,将应用程序划分为一组小服务,服务之间相互协调、配合。服务之间使用轻量级的通信机制Http相互协作,每个服务围绕着具体的业务进行构建,并且能够被独立部署到生产环境中,另外,应避免统一、集中式服务管理机制,对具体的一个服务而言,应根据上下文,选择合适的语言、工具进行构建。
2.优缺点
优点:单一职责原则;
每个服务足够内聚、足够小,能聚焦于一个指定的业务功能或业务需求;
开发简单;易于第三方集成;易维护
缺点:分布式系统复杂性;
系统部署依赖问题;服务通信成本;
3.微服务技术栈
开发:springboot、springmvc、spring
注册和发现:Eureka、zookeeper
服务调用:rest
熔断:hystrlx
负载均衡:nginx、ribbon
消息队列:kafka、rabbitmq
服务配置中心:springcloudconfig
服务路由:zuul
服务部署:docker
二、spring cloud
1.springcloud
2.springcloud和springboot之间的关系
-
Springboot专注于更方便的开发单个个体微服务
-
Spring Cloud关注全局的微服务协调整理治理框架,它将Springboot开发的一个个单体微服务,整合并管理起来,为各个微服务之间提供:配置管理、服务发现、断路器、路由、代理、事件总栈、全局锁、决策竞选、分布式会话等集成服务
-
SpringCloud依赖于springboot
-
Springboot专注于快速开发单个个体微服务,Springcloud关注全局的服务治理框架
3.Dubbo和Springcloud选型
SpringCloud抛弃了Dubbo的RPC通信,采用的是基于HTTP的REST方式。
各有优劣,springcloud牺牲了服务调用的性能,也避免了原生RPC的问题(难以跨语言、安全性较差),而且REST比RPC灵活,服务提供方和调用方值依靠一纸契约(URL),不存在代码级别的强依赖,这个优点再当下强调快速演化的微服务环境下,更合适。
二者定位不同:Dubbo的定位是一款RPC框架,而SpringCloud的目标是微服务架构下的一站式解决方案。
4.SpringCloud能干什么?
-
Distributed/versioned configuration 分布式/版本控制配置
-
Service registion and discovery 服务注册和发现
-
Routing 路由
-
Service-to-service calls 服务到服务的调用
-
Load balancing 负载均衡配置
-
Circuit Breakers 断路器
-
Distributed messaging 分布式消息管理
5.Spring cloud版本
SpringCloud 版本命名方式采用了伦敦地铁站的名称,根据字母表的顺序来对应版本的时间顺序。
推荐书籍:
-
SpringCloud Netflix 中文文档:Spring Cloud Netflix 中文文档 参考手册 中文版
-
SpringCloud 中文API文档(官方文档翻译版):Spring Cloud Dalston 中文文档 参考手册 中文版
-
SpringCloud中国社区:Spring Cloud中国社区
-
SpringCloud中文网:Spring Cloud中文网-官方文档中文版