一、什么是微服务
- 微服务是一种架构风格
- 把一个项目拆分成独立的多个服务,多个服务是独立运行,每个服务占用独立进程
- 微服务的由来
微服务最早由Martin Fowler与James Lewis于2014年共同提出,微服务构架风格是一种使用一套小服务来开发单个应用的方式途径,每个服务运行再自己的进程中,并使用轻量级机制通信,通常是HTTP API,这些服务基于业务能力构建,并能够通过自动化部署机制来独立部署,这些服务使用不同的变编程语言实现,以及不同数据存储技术,并保持最低限的集中式管理。
- 为什么需要微服务
在传统的IT行业软件大多都是各种独立系统的堆砌,这些系统的问题总结来说就是拓展性很差,可靠性不高,维护成本高。到后面引入了SOA服务化,但是,由于SOA早期均使用了总线模式,这种总线模式是与某种技术栈强绑定的,比如:J2EE。这导致很多企业的遗留系统很难对接,切换时间太长,成本太高,新系统稳定性的收敛也需要一些时间。
- 微服务与单体结构区别
- 单体架构所有的模块全部耦合在一块,代码量大,维护困难。
- 微服务每个模块就相当于一个单独的项目,代码量明显减少,遇到问题也相对来说比较好解决。
- 单体结构所有的模块都共用一个数据库,存储方式比较单一。
- 微服务每个模块都可以使用不同的存储方式(比如有的用redis,有的用mysql等),数据库也是单个模块对应自己的数据库。
- 单体架构所有的模块开发所使用的技术一样。
- 微服务每个模块可以使用不同的开发技术,开发模式更灵活。
二、微服务开发框架
目前微服务的开发框架,最常用的有以下四个:
- Spring Cloud:http://projects.spring.io/spring-cloud(现在非常流行的微服务框架)
- Dubbo:http://dubbo.io
- Dropwizard:http://www.dropwizard.io(关注单个微服务的开发)
- Consul、etcd&etc.(微服务的模块)
三、什么是Spring Cloud
- Spring Cloud并不是一种技术,是很多技术的总称,很多技术的集合。
- Spring Cloud里面有很多框架(技术),使用Spring Cloud里面这框架就能实现微服务操作。
- 使用Spring Cloud,需要依赖Spring Boot技术。
- Spring Cloud是一系列框架的集合。它利用Spring Boot的开发便利性简化了分布式系统基础设施的开发,如服务发现、服务注册、配置中心、消息总线、负载均衡、熔断器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。
- 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)
六、Nacos组件
- 基本概念
- Nacos是阿里巴巴推出来的一个开源项目,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
- Nacos致力于帮助您发现、配置和管理微服务。Nacas提供了一组简单易用的特性集,帮助您快速实现动态服务发先、服务配置、服务元数据及流量管理。
- Nacos帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos是构建以 “服务” 为中心的现代应用架构(例如:微服务范式、云原生范式)的服务基础设施。
- 常见的注册中心
- 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实现服务和注册与发现。
七、案例实战
视频点播删除业务-基于微服务实现
Nacos结构图
Nacos下载和安装
- 下载地址和版本
- 下载地址:https://github.com/alibaba/nacos/releases(建议不要选beta版本,该版本用于公测)
- 下载版本:nacos-server-1.1.4.tar.gz或nacos-server-1.1.4.zip,解压任意目录即可
- 启动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