微服务——架构分析

一、什么是微服务

  • 微服务是一种架构风格
  • 把一个项目拆分成独立的多个服务,多个服务是独立运行,每个服务占用独立进程

在这里插入图片描述

微服务——架构分析_第1张图片

  1. 微服务的由来

微服务最早由Martin Fowler与James Lewis于2014年共同提出,微服务构架风格是一种使用一套小服务来开发单个应用的方式途径,每个服务运行再自己的进程中,并使用轻量级机制通信,通常是HTTP API,这些服务基于业务能力构建,并能够通过自动化部署机制来独立部署,这些服务使用不同的变编程语言实现,以及不同数据存储技术,并保持最低限的集中式管理。

  1. 为什么需要微服务

在传统的IT行业软件大多都是各种独立系统的堆砌,这些系统的问题总结来说就是拓展性很差,可靠性不高,维护成本高。到后面引入了SOA服务化,但是,由于SOA早期均使用了总线模式,这种总线模式是与某种技术栈强绑定的,比如:J2EE。这导致很多企业的遗留系统很难对接,切换时间太长,成本太高,新系统稳定性的收敛也需要一些时间。

  1. 微服务与单体结构区别
  • 单体架构所有的模块全部耦合在一块,代码量大,维护困难。
  • 微服务每个模块就相当于一个单独的项目,代码量明显减少,遇到问题也相对来说比较好解决。
  • 单体结构所有的模块都共用一个数据库,存储方式比较单一。
  • 微服务每个模块都可以使用不同的存储方式(比如有的用redis,有的用mysql等),数据库也是单个模块对应自己的数据库。
  • 单体架构所有的模块开发所使用的技术一样。
  • 微服务每个模块可以使用不同的开发技术,开发模式更灵活。

二、微服务开发框架

目前微服务的开发框架,最常用的有以下四个:

  1. Spring Cloud:http://projects.spring.io/spring-cloud(现在非常流行的微服务框架)
  2. Dubbo:http://dubbo.io
  3. Dropwizard:http://www.dropwizard.io(关注单个微服务的开发)
  4. Consul、etcd&etc.(微服务的模块)

三、什么是Spring Cloud

  • Spring Cloud并不是一种技术,是很多技术的总称,很多技术的集合。
  • Spring Cloud里面有很多框架(技术),使用Spring Cloud里面这框架就能实现微服务操作。
  • 使用Spring Cloud,需要依赖Spring Boot技术。
  1. Spring Cloud是一系列框架的集合。它利用Spring Boot的开发便利性简化了分布式系统基础设施的开发,如服务发现、服务注册、配置中心、消息总线、负载均衡、熔断器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。
  2. Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

四、Spring Cloud和Spring Boot是什么关系

  • Spring Boot是Spring的一套快速配置脚手架,可以基于Spring Boot快速开发单个微服务,Spring Cloud是一个基于Spring Boot实现的开发工具。
  • Spring Boot专注于快速、方便集合的单个微服务个体,Spring Cloud关注全局的服务治理框架
  • Spring Boot使用了默认大于配置的里面,很多集成方案已经帮你选择好了,能不配置就不配置,Spring Cloud很大的一部分是基于Spring Boot来实现,必须基于Spring Boot开发。
  • 可以单独使用Spring Boot开发项目,但是Spring Cloud离不开Spring Boot。

五、Spring Cloud相关基础服务组件

  • 服务发现——Netflix Eureka(Nacos)//注册中心
  • 服务调用——Netflix Feign
  • 熔断器——Netflix Hystrix
  • 服务网关——Spring Cloud GateWay
  • 分布式配置——Spring Cloud Config(Nacos)
  • 消息总线——Spring Cloud Bus(Nacos)

微服务——架构分析_第2张图片
微服务——架构分析_第3张图片

六、Nacos组件

  1. 基本概念
  • Nacos是阿里巴巴推出来的一个开源项目,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
  • Nacos致力于帮助您发现、配置和管理微服务。Nacas提供了一组简单易用的特性集,帮助您快速实现动态服务发先、服务配置、服务元数据及流量管理。
  • Nacos帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos是构建以 “服务” 为中心的现代应用架构(例如:微服务范式、云原生范式)的服务基础设施。
  1. 常见的注册中心
  • Eureka(原生,2.0遇到性能瓶颈,停止维护)
  • Zookeeper(支持,专业的独立产品。例如:dubbo)
  • Consul(原生,GO语言开发)
  • Nacos
  • 小结:相对于Spring Cloud Eureka来说,Nacos更强大。Nacos = Spring Cloud Eureka + Spring Cloud Config;Nacos 可以与 Spring、Spring Boot、Spring Cloud集成,并能替代Spring Cloud Eureka,Spring Cloud Config。通过Nacos Server和spirng-cloud-starter-alibaba-nacos-discovery实现服务和注册与发现。

七、案例实战

视频点播删除业务-基于微服务实现

微服务——架构分析_第4张图片

Nacos结构图

微服务——架构分析_第5张图片

Nacos下载和安装

  1. 下载地址和版本
  • 下载地址:https://github.com/alibaba/nacos/releases(建议不要选beta版本,该版本用于公测)
  • 下载版本:nacos-server-1.1.4.tar.gz或nacos-server-1.1.4.zip,解压任意目录即可
    微服务——架构分析_第6张图片
  1. 启动nacos服务 [Windows双击startup.cmd启动nacos服务 / Linux双击startup.sh启动nacos服务]
  • Linux / Unix / Mac
    • 启动命令(standalone代表着单机模式运行,非集群模式)
    • 启动命令:sh startup.sh -m standalone
  • Windows
    • 启动命令:cmd startup.cmd或者双击startup.cmd运行文件
    • 访问:http://localhost:8848/nacos
    • 用户名密码:nacos | nacos

你可能感兴趣的:(微服务,微服务,架构,java)