一、微服务介绍
微服务架构越来越流行,这个没有异议。
2009 年,Netflix 重新定义了它的应用程序员的开发模型,这个算是微服务的首次探索。
20014 年,《Microservices》,这篇文章以一个更加通俗易懂的方式,为大家定义了微服务。
为什么要用微服务?
互联网应用产品的两大特点:
- 需求变化快
- 用户群体庞大
在这样的情况下,我们需要构建一个能够灵活扩展,同时能够快速应对外部环境变化的一个应用,使用
传统的开发方式,显然无法满足需求。这个时候,微服务就登场了。
1、什么是微服务?
简单来说,微服务就是一种将一个单一应用程序拆分为一组小型服务的方法,拆分完成后,每一个服务都运行在独立的进程中,服务于服务之间采用轻量级的通信机制来进行沟通(Spring Cloud 中采用基于HTTP 的 RESTful API)。
每一个服务,都是围绕具体的业务进行构建,例如一个电商系统,订单服务、支付服务、物流服务、会员服务等等,这些拆分后的应用都是独立的应用,都可以独立的部署到生产环境中。就是在采用微服务之后,我们的项目不再拘泥于一种语言,可以 Java、Go、Python、PHP 等等,混合使用,这在传统的应用开发中,是无法想象的。而使用了微服务之后,我们可以根据业务上下文来选择合适的语言和构建工具进行构建。
微服务可以理解为是 SOA 的一个传承,一个本质的区别是微服务是一个真正分布式、去中心化的,微服务的拆分比 SOA 更加彻底。
2、微服务优势
- 复杂度可控
- 独立部署
- 技术选型灵活
- 较好的容错性
- 较强的可扩展性
3、解决方案:
- Spring Cloud Netflix 一站式解决方案
api网关,zuul组件
Feign ---Httpclient ---Http通信方式,同步,阻塞
服务注册发现: Eureka
熔断机制:Hystrix - Apache Dubbo Zookeeper 半自动,需要整合别人的
Api:没有,找第三方组件,或者自己实现
Dubbo
Zookeeper
没有,借助Hystrix
Dubbo这个方案并不完善 - Spring Cloud Alibaba 一站式解决方案!更加简单
SpringCloud介绍
什么是SpringCloud?
SpringCloud是基于SpringBoot的Spring集成微服务框架规范。他只是规范,并不是任何具体的框架。具体实现还要看个人。
SpringCloud和SpringBoot的关系
我们知道SpringBoot是Spring的一套快速配置的脚手架,使Spring使用起来更加方便,所以SpringBoot就非常适合快速开发单个微服务。
SpringCloud是基于SpringBoot的,SpringBoot专注于快速、方便集成单个个体,而SpringCloud更加关注全局的服务治理框架。还是那个规则,约定大于配置,所以SpringCloud整体开发也比较简单。
SpringBoot可以离开SpringCloud独立开发项目,而SpringCloud不能脱离SpringBoot。
SpringCloud的优缺点
优点:
- 耦合度比较低,不会影响其他模块的开发。
- 减轻团队的成本,可以并行开发,只用负责自己的模块
- 配置比较简单,基本使用注解就能实现
- 服务与服务之间可以使用不同的数据库
- 只用关注后端业务,不用关心前端开发。最后暴露接口,通过组件进行服务间通信。
缺点:
- 部署、运维会比较麻烦
- 可能受到网络不稳定的因素影响
- 分布式事物比较麻烦
springcloud五大组件:
1、Eureka实现服务治理;
2、Ribbon主要提供客户侧的软件负载均衡算法;
3、Hystrix断路器,保护系统,控制故障范围;
4、Zuul,api网关,路由,负载均衡等多种作用;
5、Config配置管理。