从0开始搭建springcloud---微服务简介
1. 简介
微服务架构风格这种开发方法,是以开发一组小型服务的方式来开发一个独立的应用系统的。其中每个小型服务都运行在自己的进程中,并经常采用HTTP资源API这样轻量的机制来相互通信。这些服务围绕业务功能进行构建,并能通过全自动的部署机制来进行独立部署。这些微服务可以使用不同的语言来编写,并且可以使用不同的数据存储技术。对这些微服务我们仅做最低限度的集中管理。 springcloud官方网站: https://spring.io/projects/spring-cloud springcloud中文社区网站: https://springcloud.cc/
1.1 特性
- 每个微服务可独立运行在自己的进程里
- 一系列独立运行的微服务共同构建起整个系统
- 微服务之间通过一些轻量的通信机制来进行通信,例如通过REST API进行调用
- 可以使用不同的语言与数据存储技术
1.2 优点
- 单个微服务启动较快 单个微服务代码量较少,所以启动会比较快
- 局部修改容易部署 单体应用只要有修改,就得重新部署整个应用,微服务解决了这样的问题。一般来说,对某个微服务进行修改,只需要重新部署这个服务即可
- 技术栈不受限 在微服务中,我们可以结合项目业务及团队的特点,合理的选择技术栈。例如某些服务可使用关系型数据库MySQL;某些微服务有图形计算的需求,我们可以使用Neo4j;甚至可以根据需要,部分微服务使用java开发,部分微服务使用NodeJS进行开发。
- 按需收缩 我们可以根据需求,实现细粒度的扩展。例如:系统中的某个微服务遇到了瓶颈,我们可以结合这个微服务的业务特点,增加内存、升级CPU或者是增加节点
1.3 缺点
- 运维要求较高 更多的服务意味着更多的运维投入。在单体架构中,只需要保证一个应用的正常运行;而在微服务中,需要保证几十甚至几百个服务的正常运行与协作,这给项目的运维带来了很大的挑战。
- 分布式固有的复杂性 使用微服务构建的是分布式系统。对于一个分布式系统,系统容错、网络延迟、分布式事务等都给我们带来了很大的挑战。
- 接口调整成本高 微服务之间通过接口进行通信。如果修改某一个微服务的API,可能所有使用了该接口的微服务都需要做调整。
- 重复劳动 很多微服务可能都会使用到相同的功能,而这个功能并没有达到分解为一个微服务的程度,这个时候,可能各个服务都会开发这一功能,从而导致代码重复。
2. 环境准备
JDK1.8 MAVEN3.3.9 IDE开发工具 Spring Boot 1.5.x Spring Cloud Edgware SR3
springcloud和springboot的版本说明: