一、微服务介绍

微服务架构越来越流行,这个没有异议。
2009 年,Netflix 重新定义了它的应用程序员的开发模型,这个算是微服务的首次探索。
20014 年,《Microservices》,这篇文章以一个更加通俗易懂的方式,为大家定义了微服务。
为什么要用微服务?
互联网应用产品的两大特点:

  1. 需求变化快
  2. 用户群体庞大
    在这样的情况下,我们需要构建一个能够灵活扩展,同时能够快速应对外部环境变化的一个应用,使用
    传统的开发方式,显然无法满足需求。这个时候,微服务就登场了。

1、什么是微服务?

简单来说,微服务就是一种将一个单一应用程序拆分为一组小型服务的方法,拆分完成后,每一个服务都运行在独立的进程中,服务于服务之间采用轻量级的通信机制来进行沟通(Spring Cloud 中采用基于HTTP 的 RESTful API)。

每一个服务,都是围绕具体的业务进行构建,例如一个电商系统,订单服务、支付服务、物流服务、会员服务等等,这些拆分后的应用都是独立的应用,都可以独立的部署到生产环境中。就是在采用微服务之后,我们的项目不再拘泥于一种语言,可以 Java、Go、Python、PHP 等等,混合使用,这在传统的应用开发中,是无法想象的。而使用了微服务之后,我们可以根据业务上下文来选择合适的语言和构建工具进行构建。

微服务可以理解为是 SOA 的一个传承,一个本质的区别是微服务是一个真正分布式、去中心化的,微服务的拆分比 SOA 更加彻底。

2、微服务优势

  1. 复杂度可控
  2. 独立部署
  3. 技术选型灵活
  4. 较好的容错性
  5. 较强的可扩展性

3、解决方案:

  1. Spring Cloud Netflix 一站式解决方案
    api网关,zuul组件
    Feign ---Httpclient ---Http通信方式,同步,阻塞
    服务注册发现: Eureka
    熔断机制:Hystrix
  2. Apache Dubbo Zookeeper 半自动,需要整合别人的
    Api:没有,找第三方组件,或者自己实现
    Dubbo
    Zookeeper
    没有,借助Hystrix
    Dubbo这个方案并不完善
  3. Spring Cloud Alibaba 一站式解决方案!更加简单

SpringCloud介绍

什么是SpringCloud?

SpringCloud是基于SpringBoot的Spring集成微服务框架规范。他只是规范,并不是任何具体的框架。具体实现还要看个人。

SpringCloud和SpringBoot的关系

我们知道SpringBoot是Spring的一套快速配置的脚手架,使Spring使用起来更加方便,所以SpringBoot就非常适合快速开发单个微服务。

SpringCloud是基于SpringBoot的,SpringBoot专注于快速、方便集成单个个体,而SpringCloud更加关注全局的服务治理框架。还是那个规则,约定大于配置,所以SpringCloud整体开发也比较简单。

SpringBoot可以离开SpringCloud独立开发项目,而SpringCloud不能脱离SpringBoot。

SpringCloud的优缺点

优点:

  1. 耦合度比较低,不会影响其他模块的开发。
  2. 减轻团队的成本,可以并行开发,只用负责自己的模块
  3. 配置比较简单,基本使用注解就能实现
  4. 服务与服务之间可以使用不同的数据库
  5. 只用关注后端业务,不用关心前端开发。最后暴露接口,通过组件进行服务间通信。

缺点:

  1. 部署、运维会比较麻烦
  2. 可能受到网络不稳定的因素影响
  3. 分布式事物比较麻烦

springcloud五大组件:

1、Eureka实现服务治理;

2、Ribbon主要提供客户侧的软件负载均衡算法;

3、Hystrix断路器,保护系统,控制故障范围;

4、Zuul,api网关,路由,负载均衡等多种作用;

5、Config配置管理。