从0开始搭建springcloud---微服务简介

1. 简介

微服务架构风格这种开发方法,是以开发一组小型服务的方式来开发一个独立的应用系统的。其中每个小型服务都运行在自己的进程中,并经常采用HTTP资源API这样轻量的机制来相互通信。这些服务围绕业务功能进行构建,并能通过全自动的部署机制来进行独立部署。这些微服务可以使用不同的语言来编写,并且可以使用不同的数据存储技术。对这些微服务我们仅做最低限度的集中管理。
springcloud官方网站: https://spring.io/projects/spring-cloud
springcloud中文社区网站: https://springcloud.cc/

1.1 特性

  1. 每个微服务可独立运行在自己的进程里
  2. 一系列独立运行的微服务共同构建起整个系统
  3. 每个服务为独立的业务开发,一个微服务只关注某个特定的功能,例如订单管理、用户管理等。
  4. 微服务之间通过一些轻量的通信机制来进行通信,例如通过REST API进行调用
  5. 可以使用不同的语言与数据存储技术

1.2 优点

  1. 易于开发和维护
    一个微服务只关注一个特定的业务功能,所以它的业务清晰,代码量较少。开发和维护单个微服务相对是比较简单的。而整个应用是由若干个微服务构建而成的,所以整个应用也会维持在可控状态
  2. 单个微服务启动较快
    单个微服务代码量较少,所以启动会比较快
  3. 局部修改容易部署
    单体应用只要有修改,就得重新部署整个应用,微服务解决了这样的问题。一般来说,对某个微服务进行修改,只需要重新部署这个服务即可
  4. 技术栈不受限
    在微服务中,我们可以结合项目业务及团队的特点,合理的选择技术栈。例如某些服务可使用关系型数据库MySQL;某些微服务有图形计算的需求,我们可以使用Neo4j;甚至可以根据需要,部分微服务使用java开发,部分微服务使用NodeJS进行开发。
  5. 按需收缩
    我们可以根据需求,实现细粒度的扩展。例如:系统中的某个微服务遇到了瓶颈,我们可以结合这个微服务的业务特点,增加内存、升级CPU或者是增加节点

1.3 缺点

  1. 运维要求较高
    更多的服务意味着更多的运维投入。在单体架构中,只需要保证一个应用的正常运行;而在微服务中,需要保证几十甚至几百个服务的正常运行与协作,这给项目的运维带来了很大的挑战。
  2. 分布式固有的复杂性
    使用微服务构建的是分布式系统。对于一个分布式系统,系统容错、网络延迟、分布式事务等都给我们带来了很大的挑战。
  3. 接口调整成本高
    微服务之间通过接口进行通信。如果修改某一个微服务的API,可能所有使用了该接口的微服务都需要做调整。
  4. 重复劳动
    很多微服务可能都会使用到相同的功能,而这个功能并没有达到分解为一个微服务的程度,这个时候,可能各个服务都会开发这一功能,从而导致代码重复。

2. 环境准备

JDK1.8
MAVEN3.3.9
IDE开发工具
Spring Boot 1.5.x
Spring Cloud Edgware SR3

springcloud和springboot的版本说明:

SpringCloud版本 SpringBoot版
Greenwich(格林威治) 2.1.x
Finchley(芬奇利) 2.0.x
Edgware(埃奇韦尔) 1.5.x
Dalston(多尔斯顿) 1.5.x
Camden(卡姆登) 1.4.x
Brixton(布里克斯顿) 1.3.x
Angel(天使) 1.0.x

在下一篇博客中开始正式搭建微服务架构

你可能感兴趣的:(springcloud)